The Codesmith Program
Codesmith is a center of Software Engineering Excellence, and a selective and tight-knit community of engineers you keep for life.
Codesmith students (known as Residents) have built some of the most prominent tools, used by thousands of developers - React Monocle, Reactide, WebDSP and applications deployed at scale - YouDescribe and Veritas Prep Offline.
Each admitted resident has shown enormous potential in five capacities that make an excellent engineer. Residents come from an exceptional and eclectic range of backgrounds from PhDs to software engineers, from Stanford Computer Science graduates to self-teachers.
Students ask the questions "Why?" instead of just the "How?" - Codesmith residents learn how to learn, making them lifelong learners and adaptable to the constantly-changing world of technology and software engineering.
The program focuses on preparing graduates for positions as mid/senior developers with whiteboarding and advanced technical interview practice, resume and profiles development, and interview and networking strategies.
25% of graduates receive offers for Senior Engineer positions and above, and about 70% receive offers for Mid-level Engineer. Graduates are transforming healthcare at Heal and Impact Health, mental health at UCLA, and drone technology at Airmap, while others work on large systems at the top technology companies in the country.
Support continues upon graduation, with bi-weekly check-ins and after offers, negotiation support. Residents also participate in postgraduate education in advanced software architecture and Machine Learning (6 week program).
Graduates have access to a network of hundreds of companies throughout the US with graduates working in LA, SF, Seattle, New York, Boston and SD, and in China and the UK.
A Center of Engineering Excellence
Projects and Research
Residents of Codesmith build projects that aim to push at the frontier of technology - open source tools and libraries for developers or applications deployed at scale that make an impact in society.
Remember, open source software forms the roads and bridges, the infrastructure, of the applications and experiences we love - we depend on it at Codesmith and we should all be contributors. It’s hard to identify the ‘typical’ Codesmith project - as each person at Codesmith tackles distinct new challenges, but recent projects have included:
- WebAssembly-based in-browser video editor and client-side signal processing library featured at Google I/O
- P2P live video sharing built on WebRTC and WebTorrents - Nile.js (1500 Github stars)
- The most popular developer environment (IDE) for building React web applications - Reactide (7000 Github stars)
- Stream-based state management library for React built on RxJs observables - Omnistream
- Accessible video platform, YouDescribe, backed by U.S. Department of Education’s Office and Dr. Joshua Miele at The Smith-Kettlewell Eye Research Institute
- A developer tool to visualize a React application's component hierarchy - React Monocle (2000 Github stars)
SoCal React and LA Node are monthly meetups that we organize to keep up to date with the latest developments in React and Node and bring the community together. React and Node power significant applications from Facebook and Instagram to Uber and Netflix. We bring together leading engineers with the Codesmith and wider engineering community.
As part of contributing at the highest level to the engineering community, Codesmith residents speak at meetups and mini-conferences to the wider developer community. Recent talks have covered:
- From hero to zero: Avoiding common pitfalls hampering react application performance
- Parenting in Node: Leveraging child processes to optimize CPU intensive tasks
- Cache Me If you Can: Caching strategies for building scalable node backends
- Talking to the cloud: Communication strategies for distributed technologies.
- Changing tides: Visualizing real-time data streams.real-time data streams.
- Abstract Syntax Trees: The unsung data structure behind transpilers, code injection and intelligent parsing
- Polarizing: The positives and negatives of building Electron Applications
Past topics of discussion include multi-threaded isomorphic React, hunting performance issues in Node, using GraphQL with React, and visualizing application states. Beyond showcasing recent developments in React and Node, these meetups have become a space for the wider engineering community to build connections and exchange ideas.
Sr. Data Scientist
Sr. Software Engineer
Sr. Front-End Developer
Sr. Software Engineer
Guest speakers play an influential role in the Codesmith community. As a community that encourages intellectual curiosity in addition to engineering excellence, Codesmith invites guest speakers who are excited to discuss the far-reaching possibilities of software engineering. In the past, guest speakers have led discussions on the role of software engineers in developing self-driving cars, innovating aerospace engineering, and improving artificial intelligence.
Topics Covered: Callbacks, higher order functions, closures, scope & execution context, object-oriented programming.
Codesmith Project – QLegance dynamically builds up object-oriented methods based on structure of data on remote server.
- Front End Development
Front-end development is the structured application of design and programming to enhance the experience of a user. Often seen as the bridge between the designer and the back-end, the front-end is increasingly at the heart of the user-experience and, more specifically, how an application feels.
The number of front-end technologies have skyrocketed over time. Because of this, tools and libraries are constantly changing. This has made fundamental principles increasingly important in order to adapt to and anticipate emerging technologies.
The goal of the front-end curriculum is to prepare developers to mediate between frameworks by being equally proficient in industry-leading technologies as well as front-end principles.
At the core of the front-end curriculum is responsiveness, performance, and accessibility. Surrounding these principles are approaches to DOM manipulation and single page applications. Codesmith residents implement architectural patterns such as the model-view-controller and examine design patterns including composition in React and two-way data binding in Angular.
Topics Covered: Single-page applications and Front-end structure, React, Angular
Codesmith Project: – Reactide is the first dedicated IDE for React web application development. Since launching, Reactide has gathered over 7000 stars on GitHub.
Connecting your application to a source of information or business logic is an essential part of the development process. To be familiar with how to access back-end data like databases (like SQL or Mongo), or third-party APIs (like Google Maps API) is only part of the skillset needed to engineer a well thought-out application.
Back-end development requires engineering a robust and scalable layer on the web server that interfaces with both the client and the back-end data. Server-side controllers that are written properly provide more freedom to engineer several different front end views that reflect different needs of different users.
Residents build full-stack projects regularly, and gain practice developing back-end layers that address all real-world concerns. Concerns to be addressed in the design of the server controllers often include security, modularity, scalability, efficiency and stability.
Being a layer in between the front-end and the hardware where data is stored, back-end engineers often must work with many other departments, such as front-end engineers, DevOps engineers, and DBAs (database administrators).
Topics Covered: Servers (Node & Express), Databases (MongoDB & SQL), Authentication & Authorization
Codesmith Project — Nile.js is a peer-to-peer live video streaming library designed to handle scaling. Since launching, Nile.js has accumulated over 1400 stars on GitHub.
Many Software Engineers get by with memories of their computer science studies in college, but struggle to bring the knowledge to bear on problems they face as engineers.
Yet a sure footing in computer science, and their core components, algorithms and data structures, enables you to successfully build beautiful and efficient software.
Designing algorithms is a process of achieving increasingly effective ways to solve a problem. Residents develop algorithms to solve some of the most prominent challenges in software engineering including sorting, path-finding, and searching.
The efficiency of your algorithm, data structure, and programming paradigm choices can be the difference between a product’s success or failure. This means:
- Choosing and designing algorithms that optimize for time/space complexity trade-offs using Big-O notation
Topics Covered: Data Structures, Algorithms, Time Complexity and Big-O Analysis, Object Oriented and Functional Programming
Codesmith Project — Veritas Prep On Demand reduced server load from client requests for video file transfers by implementing a queue to throttle streams. Veritas Prep On Demand was a client project built for Veritas Prep, is the largest privately-owned test prep and admissions consulting company in the world.
With the exponential growth of data generation in recent years, Machine Learning has quickly become an invaluable tool for building next-generation software solutions. The Codesmith Machine Learning unit includes an immersive introduction to the python programming language, gaining familiarity with common machine learning and data science libraries, and developing a deep understanding of the underlying concepts used daily by Machine Learning Software Engineers. The Machine Learning unit is designed to allow residents to build intelligent data driven applications.
Topics covered: Generating matrix representations of data, graphing libraries for data presentation and introspection, building powerful predictive machine learning algorithms from scratch
- Linear Algebra Guide
- Exponential Functions
- Probability & Statistics
- How to analyze data using the average
- Vector Calculus: Understanding the dot product
- Vector Calculus: Understanding the cross product
- Vector Calculus: Understanding the gradient
- Understanding Pythagorean Distance and the Gradient
- Intro to Python for Data Science
- Guided Project Using Jupyter Notebook
- Getting Started with Numpy
- Computation with Numpy
- Introduction to Pandas
- Line Charts
Technical communication is one of the main predictors of success for students at Codesmith as well as software engineers in the professional realm. We recognize that coding, at Codesmith and in the software engineering world overall, is very rarely an individual endeavor.
At Codesmith, residents are consistently working in pairs and small teams, and this makes the ability to clearly, accurately communicate ideas, expectations and problems vital. For this reason, developing technical communication skills is a principal focus of ours and we achieve this goal in a number of ways:
The most common method through which we practice technical communication is pair programming, and Codesmith residents can expect to spend literally hundreds of hours pairing with others in their cohort. The benefits of pair programming extend beyond an extra pair of eyes to find bugs in code. By pairing with a partner you are constantly exposed to new approaches and techniques and are challenged to talk through your own code in a way that is clear enough that another person can do the typing. In a short time, Codesmith residents truly do talk the talk.
In addition to pairing, technical communication is developed through a number of presentations that all residents give during their twelve weeks in the program. Residents give a Tech Talk on a topic of their choice and present the projects they create throughout the program. This culminates in our Hiring Week, during which students present their final Production Project, and a related Tech Talk, to an audience that includes developers, engineers, and representatives from dozens of local companies. By the time students leave Codesmith, they are not only well-prepared to build incredible tools, they are able to describe the what, why, and how at a professional level.
Building powerful applications and developer tools requires more than just technical ability. Project management is the art and science of planning out projects, monitoring them throughout the development process, and assessing their results. Without effective project management, teams are likely to run into many avoidable conflicts in the development process.
Throughout the project phase, Codesmith residents get extensive practice with project management. Starting a new project, one of the first steps is to break the project down into many smaller tasks. Residents use scrum boards to assign these tasks to team members, track their status, and assess the overall progress made on the project.
Because these projects involve multiple people working on different portions of the project, good project management places an emphasis on daily standups, a proper Git workflow, and code review. Residents conduct daily standups to brief their partners on what they have accomplished and any hurdles they may have in completing their current tasks. When a task is completed and ready to be merged with previous code, students employ strategies for minimizing conflicts that may slow down production. And before new code is merged, project partners conduct a rigorous review to ensure the code is accomplishing what it is intended to do.
Effective project management takes time and dedication - not only from the project manager - but from all team members. However, this effort pays off in end result and in the time it takes to reach it.
When a software product is production ready and has been properly tested to confirm as such, the final step is to deploy. Deployment is the process of making a software product available for use.
The source code must be prepped to show only what the authors of the code are comfortable sharing with the public at large. This often means bundling and minifying code to simplify distribution while obscuring code structure.
Whether the product is a user-facing application or a developer tool, the product must be hosted for distribution. Depending on the product, suitable hosts can range from Raspberry Pi to Amazon Web Services. Servers hosting deployed products should be fault-tolerant and ready to restart automatically upon encountering runtime errors. Protection of the host can also come in many other forms such as proxy servers.
Codesmith production projects made in the immersive program are very often developer tools and are always deployed to the public as open source projects. Residents of the immersive program receive instruction on choosing a proper host and preparing documentation to enable other developers to gain familiarity with the API of their tools.
The path to becoming an engineering leader involves more than just technical preparation. Codesmith students begin the career development program in-tandem with the production project phase during the senior portion of their curriculum. The career development program rounds out the full skill set students need to join powerful, effective teams tackling and building interesting things post-graduation.
Throughout this program, students receive individual guidance from both their peers and the Codesmith team in the areas of resume development, interviewing, whiteboarding, online profile development, and application outreach. The support continues after a student's cohort ends, with graduates coming back for on-site check-ins and mock interviews. Even after landing their first position post-graduation, if graduates are looking to move positions or companies in the future, the Codesmith team is always there to provide guidance and support.
Career development never ends, and once a student, residents are forever a part of a community that will constantly push them to be better, to be more impactful, and will support them along the way.
Precourse & Pre-Codesmith
Most importantly, they allow you to immerse yourself in the Codesmith community, improve your technical communication and problem solving abilities by pair programming, and meet fellow learners and builders.
The two interviews assess your potential in the five areas that make an exceptional engineer.
- Analytical problem-solving - How do you use code as a tool to reason about about new problems you face in the technical interview
- Technical communication - Talking through your code precisely and clearly (a huge part of what makes an effective engineer)
- Non-technical communication - Will you be thoughtful and supportive of others through the tough hours and work
- How you handle hitting a block - How do you debug, take feedback when you hit a block in your understanding (we make sure you hit a moment like this in the interview)
The first interview is non-technical, the second is technical. In the technical interview you work through coding challenges with an engineer on the team. We're interested in seeing how you tackle problems and communicate your ideas.
We realize that the Codesmith admissions process can feel intimidating but we have created numerous free public classes to help you prepare - you can find them all here.Apply
We are assessing for five capacities in applicants:
Top resources for technical communication, problem solving and best practices:
- Coding Challenge sites like: Codewars, Coderbyte, LeetCode, HackerRank, and Project Euler
- Web development challenge sites like: Nodeschool and Exercism.io
- PythonTutor - Allows you to run through your code line by line similar to the JS the Hard Parts white boarding approach. Run each of your Codewars solutions through PythonTutor to ensure you truly understand your solution
- Codewars (and other coding challenge sites)
- JS the Hard Parts (Thursday workshop 6:30pm at Codesmith online and in-person)
- JS the Weird Parts (Udemy)
- ReactiveX LearnRX challenges (Higher order functions)
More introductory resources:
The end of each cohort culminates with a graduation celebration, and alumni are frequently on-site for larger Codesmith alumni social events and advanced workshops.
The Codesmith Alumni Community is a community for life. Codesmith graduates are working everywhere from Los Angeles to Boston to Shanghai, and their accomplishments and success continue to grow every day.
Codesmith Alumni are able to take advantage of this network of like-minded software engineers via an Alumni Slack channel, an Alumni-only workspace at Codesmith HQ, cross-cohort reunions, exclusive invites to new Codesmith programs and initiatives (like the Machine Learning Beta program), and unlimited hiring support throughout the course of their careers.
Tuition, Financial Aid, & Scholarships
The total cost of the program is $17,200. A deposit of $2,200 is required shortly after acceptance, and the remaining $15,000 is due before the start of class.
Your financial situation should never keep you from achieving your goals. Codesmith has partnered with Skills Fund to make this possible.
With Skills Fund, Codesmith students may borrow between $2,000 and $15,000 for the program with 3 and 5 year payment terms available and 2-month post-graduation payment grace period.
You can qualify for a loan with:
- No income or employment used in underwriting
- One fixed universal interest rate for all students (regardless of your credit score)
Learn more at http://codesmith.skills.fund/
Codesmith is committed to strengthening and growing a broad and deep community of software engineers from all backgrounds, and the Codesmith $100k scholarship fund is an important part of this commitment.
Women, minorities, and veterans are severely underrepresented in the technology community. Codesmith offers scholarships for talented people from underrepresented backgrounds.
To apply for these scholarships you must identify as a woman, under-represented minority (defined as African-American, Hispanic/Latino(a), Pacific Islander or Native American).
Plan to apply for a scholarship and Skills Fund loan? Your requested Skills Fund loan amount can be downward adjusted as needed prior to your first day in program. If you receive your scholarship after your tuition financing has been disbursed, you can apply your scholarship to your loan balance at anytime without a prepayment penalty.