Airbnb and CodePath are partnering together to offer an all-expenses paid Android and iOS mobile 8-week development course to 50 external engineers and Airbnb Connect participants.
Over the past few years, CodePath has trained 2000+ engineers at 100+ companies in Silicon Valley. We’re proud of the fact that no individual has ever paid for a CodePath course.
We believe the best education in the world should be freely accessible and we’ve been fortunate to work with great companies like Facebook, Uber, Airbnb, Box, and others to help make this vision a reality.
Alumni of CodePath classes include one of the co-founders of Reddit, a former tech lead for Apple Watch, head of Android for Coursera and many now prominent iOS and Android developers across Silicon Valley.
Our curriculum has been battle tested at many of the top companies in Silicon Valley and we’re excited to partner with Airbnb to bring this curriculum to engineers in San Francisco and all over the United States remotely.
The class starts on October 11 and takes place Tuesday/Thursday from 7-9PM for 2 hours. You can apply for either Android or iOS. We also offer a remote Android and iOS option for all US-based applicants and highly encourage you to apply.
The deadline is September 26th. Apply now! It will take you time to finish your pre-work so start as soon as you can.
The class is based on interactive lectures and labs. You are actually coding in class, not copy-pasting from a book, like you may have at previous corporate training seminars. You will also complete app assignments and group projects that will enable you to build fully functional apps for either Android or iOS platforms.
At the end of the program, your group will compete for prizes at Demo Day and you will join our CodePath alumni network which provides access to curated events, opportunities to network with other alums, and priority selection for future classes.
Students will get to interact with Airbnb engineers throughout the course and Airbnb will offer top performers the opportunity to interview for a full-time role within Airbnb.
Over the past few years, CodePath has trained 2000+ engineers at 100+ companies in Silicon Valley. We’re proud of the fact that no individual has ever paid for a CodePath course. We believe the best education in the world should be freely accessible and we’ve been fortunate to work with great companies like Facebook, Uber, Airbnb, Box, and others to help make this vision a reality. Alumni of these classes include one of the co-founders of Reddit, a former tech lead for Apple Watch, head of Android for Coursera and many now prominent iOS and Android developers across Silicon Valley.
From teaching so many engineers across the major technology companies, we’ve learned that talented developers don’t always have the typical background. Strict quality standards, partnerships with organizations like Women Who Code, and a gender and color blind selection process has allowed CodePath to achieve diverse representation with about 40% of CodePath’s honors students coming from historically underrepresented groups in tech.
Some may find this statistic unexpected because CodePath is not a diversity and inclusion organization. CodePath solely looks at technical ability and potential in the application process and strictly removes students from the course for missing class or assignments.
Solving for diversity in tech is a complicated issue and we don’t claim to be experts but one thing has become clear to us: In a meritocratic environment, removing barriers to access increases representation across both ethnic and gender groups.
A Free University to Level the Playing Field
At the beginning of the year, we announced a program called CodePath University intended to give students from underrepresented backgrounds at a variety of colleges free access to Silicon Valley’s premier iOS engineering curriculum.
The program had two goals: 1. See if talented engineers are distributed across a variety of socio-economic, ethnic, and gender backgrounds and 2. provide a bridge between traditional CS and industry programming standards that will directly lead to job opportunities.
We took our iOS engineering curriculum and adapted it for the university student and brought it to 17 colleges nationwide. The most competitive school we worked with is ranked number 6 in CS. The least competitive school we worked with does not rank in the top 400 CS schools.
We are excited to share with you the progress we have made from our very first pilot of CodePath University.
12 Weeks of iOS at 17 Universities
In the 2016 Fall Semester, 3,400 students applied to the CodePath University Pilot program. For the first run, we accepted 300 of our applicants representing a total of 17 Universities. We targeted a variety of schools, both schools that have excellent engineering curriculums as well as schools that do not rank in the top 400 CS schools nationwide. We wanted to give dedicated and hardworking students the opportunity to be seen through the strength of their portfolio, students who may have otherwise been overlooked by industry recruiters. The program spanned the entire Spring semester in 12-week long project based exploration of iOS and the Swift programming language.
An Accelerated Class with High Expectations
CodePath is known for it’s extremely rigorous approach to learning that requires a monumental level of commitment and grit from students. CodePath University students were held to the same high standards that we hold professional engineers to; they attended mandatory 2 hour class sessions twice a week and were required to complete and submit a weekly app assignment that often required 10+ hours of work outside of class.
Take No Days Off: Saturday Hack Days
The coding madness continued even on weekends during remote Saturday Hack sessions where professional mentors were online to help students trouble shoot their projects and fix bugs. Some Universities even organized their own in-person meetups as well as plugging in remotely.
“What I loved most about Saturday Hack sessions were the interactions between students from different Universities, collaborating remotely. This is when the full magnitude of the community we were building became apparent to me. This was more than a class, it was a nationwide effort of University Students working together to achieve a common goal!” – Charlie Hieger, CodePath University Dean
Saluting Our Student Leaders
Due to the scale and geographical locations of all the Universities who participated, we had to take a unique approach to instruction. Each program had 3 student leaders who applied and were selected ahead of the class start. Student leaders worked tirelessly ahead of the students and communicated with us in order to facilitate instruction and support during the in class sessions and labs. Without them and without their leadership, these classes wouldn’t have run as smoothly as they did. In the next round of classes, student leaders will be alumni from the previous class.
The great camaraderie in my group warmed my heart. The student leaders would go out of their way to make sure we would be able to complete the assignments on time; a few hack days became hack nights with pizza or Thai food – Chris C. Hernandez, CCSF
Giving Back to the Community: Professional Mentors
Each school was assigned several professional mentors who were all alumni of our professional engineering programs. More than 40 mentors met with student leaders on video calls to help prep them for each week. It was the Mentor’s job to help provide context, insights on industry best practices and help guide students as they collaborated on their group project apps.
I would attribute my success at CodePath University to its curated and high-quality curriculum, as well as the AMAZING mentors support (through Slack). Oh and not to forget, it was FREE. Woooh! haha – Monte Thakkar, CCSF
Group Project Apps and Demo Day
The culmination of the course was an original app created by students working in teams. Students presented their apps during a Demo Day event at their university. By the end of the program CodePath University teams had created over 50 original apps. The quality and creativity of all the apps was amazing, especially considering that students entered the program with little to no prior experience working with iOS and the Swift programming language.
I think that the greatest thing about CodePath was the network. If it wasn’t for Codepath, I would have never met some of the people who are some of my closest friends today. – Sean Crenshaw, CS, Virgina Tech
Group Project Showcase
We are excited to share with you the app videos from 4 teams that really stood out for their compelling use cases, technical execution, design and creativity.
Dine: Texas A&M
Dine is a location based platform aiming to help you find a lunch buddy and plan meals more easily. With Dine, you can create a dining event with friends sharing location and chatting with each other. More importantly, dining with strangers nearby is also supported which offers a new way of social networking.
Dine is developed by Yi Huang, Senyang Zhuang and You Wu of Texas A&M.
“Before the Codepath iOS course, we did not have any mobile development experience. The online guides are really good materials to study. It provides not only basic concepts and step-by-step tutorials but also high-level performance optimization.” – Yi Huang, first year graduate student, CS, Texas A&M
Muse: Fordham University
The Muse is an iOS application that brings the experience of the Fordham University Museum of Greek, Etruscan, and Roman Art into the digital age. With the app you are able to navigate through the Museum’s expansive collection, learn unique details about each object, and even listen to real Fordham students describing the objects.
Muse is developed by Michael Gonzales and Michael Ceraso of Fordham University Rose Hill Campus.
“The journey to accomplishing our goals has been tough but extremely rewarding. Code Path certainly gave us the foundation that made our road clear. Even beyond it being a “student project,” the museum staff encouraged the development of the app as an official piece of their educative platform. Because of their support we’ve had the opportunity to brand and publish an ancient art collection in digital form. And that in itself has been an extremely rewarding experience.” – Michael Gonzales, Junior, CS, Fordham University
SF Art Opening: City College of San Francisco
The SF Art Opening app is for anyone already in the art community, interested in joining it, or just looking to have a fun night. This app was designed with ease of use and utility mind. You can use the app to quickly find art openings in San Francisco, and then quickly get a ride share to the event. While you’re at the gallery, you can use the chat feature in the app to chat with other people there. Whether you’re an artist wanting to communicate with enthusiasts, or a shy person looking to talk to others about the art, the chat feature is for you.
SF Art Opening is developed by Christopher Soria, Juan Hernandez and Christopher Soria of the City College of San Francisco.
“The class was very challenging and therefore rewarding when we completed it. We came out with a new and useful skill, and a lot of new friends. There was a very strong sense of “We did it!” at the end of the class. All I can say to future students is: don’t give up! There were many times I felt like it was too hard, or that I wouldn’t be able to catch up. Just do the best you can, ask a lot of questions, and work closely with your peers and push forward. Anything worth doing will not be easy. This class is no exception.” – Christopher Soria, Junior CCSF, attending UC Berkeley in the Fall
QSport: Virginia Tech
Quick to find, Quick to play, QSport is the revolutionary app that will change the way you play pickup sports. It allows users to play any pickup sport on the fly. For any sport from A to Z, QSport gives users the opportunity to meet and play against anyone in the area. Not only does it provide easy access, it also allows people to get together and play on a team. Never again will you arrive at a court empty-handed.
Qsport is developed by Rupin Bhalla, Rishi Pulluri, Vincent Le and Sean Crenshaw of Virginia Tech.
Through Codepath, I was able to find a strong passion in computer science. I always looking for something tangible to code in computer science, but when I found iOS development through Codepath I knew it was for me. After long nights of working on QSport with my team, I was really proud of myself that I created something that can potentially change the world and impact a lot of people. – Rupin Bhalla, Student Leader, Junior double majoring in CS and computer modeling/data Analytics, Virginia Tech
Securing Internships at Top Tech Companies
A huge goal of the program is to help students secure internship opportunities. Along with the knowledge and skills students learn throughout the course, they finish the class with an amazing portfolio piece in the form of their group project. Students who went through CodePath University both on their own and with our help secured internships at various companies including: Google, Yelp, Apple, Amazon, Slack, Capital One, MakeSchool, State Farm, Philips, Blackstone, Morgan Stanley, Sony and more.
Future of CodePath University
The first run of CodePath University taught us that there there is an incredible well of untapped and largely invisible potential. Talented engineers are everywhere but too often, students with high potential are at institutions that provide few opportunities and outdated curriculums.
We are excited to continue building and scaling Codepath University both locally and internationally. Over the next couple years, you’ll see many more courses added for students across areas like Android, Web Security, and React. We will work to bridge the gap not just between industry and universities but also across the socio-economic boundaries.
Want your company to sponsor CodePath University and reach thousands of college engineers? Sign up for updates here.
Want to take free CodePath Classes at your college or university? Sign up now at http://www.codepathuniversity.com/
Congratulations again to all the students who completed this first round of CodePath University. It was not an easy road. Completing this program required truly monumental levels of commitment and grit from the students. You should be proud of your hard work and your accomplishments.
“Opportunity is missed by most people because it is dressed in overalls and looks like work.” – Thomas A. Edison
We’re excited to announce that CodePath is partnering with Uber to provide an 8-week evening Android course for experienced engineers this summer.
The purpose of the course is to expand mobile engineering opportunities in the developer community and provide engineers from non-traditional backgrounds an opportunity to take a free, accelerated mobile engineering course.
Twenty-five students and 5 Uber engineers will be selected to attend in person at Uber’s San Francisco headquarters (some engineers will be approved to attend remotely).
Read more about the announcement on the Uber Blog or apply to the course here.
Once a quarter, over 100 current CodePath students compete to present to a panel of notable Silicon Valley technology executives for the best Android and iOS apps.
Students are primarily senior software engineers and designers from companies like Facebook, Dropbox, Google, Apple, Box, and other top technology companies.
We are excited to share with you the app videos of the winning teams from both the CodePath Public Demo Day and the CodePath Facebook Demo Day.
iOS Engineering Class Winner: Echo
Every dancer wants to know “Am I growing?” and “How can I improve?” Echo provides a simple, elegant platform to address these concerns. Users track their progress in a video journal, receive expert feedback from credible teachers, and discover global dance content to keep them inspired.
Echo is developed by Isis Anchalee of #ILookLikeAnEngineer fame and software engineer at Uber and Christine Hong, software engineer at Yahoo.
iOS for Designers Class Winner: Thanks!
Did you know that expressing thanks is scientifically proven to increase happiness? Thanks is a way for you to express your creativity, strengthen your relationships, and be happy.
Vidtrain is an easy way to share moments and events with people you care about. Each vidtrain is a series of videos that you and your friends can add to, creating a living breathing story that’s tied to a location or event in real life.
Vidtrain is developed by Franklin Ho, freelance iOS/Android engineer, Vimalathithan Rajasekaran, former software engineer from Visa and currently an Android engineer at Albertsons, and Rahul Pandey, software engineer at Pinterest.
Facebook Android Engineering Class Winner: Fearless
Fearless lets you reach out to your friends and have them watch over you as you travel. Select the destination and contacts, who will see a live map of your progress and get updates about your trip. Fearless will check your speed, location, headphone’s connection & inactivity. Your friends can react to the trip updates, accordingly. Our aim is to target developing countries with high emergency service response time. With Fearless, wherever you go, get there safely and fearlessly.
Fearless is developed by Harish Ganeshmurthy, senior software engineer at eBay, Herman Tai, software developer at Google, and Rucha Deshmukh, senior software engineer at Citrix.
We’re always looking for companies in San Francisco and in the San Francisco Bay Area to host our classes. If your company would like to host a CodePath class, send us an email at firstname.lastname@example.org.
To bridge the gap between industry best practices and what’s taught in academia we plan to have CodePath classes running in hundreds of universities within the next three years. CodePath has spent years training senior engineers and designers inside of companies like Facebook, Dropbox, and Google on the latest technologies in mobile and web development.We believe that bringing the same classes to universities and introducing modern technologies like iOS, Android, and Node.js in the context of building practical apps will complement the traditional computer science curriculum.
As students near graduation, this can also help expose and prepare them for the thousands of opportunities in tech companies in Silicon Valley as well as other tech hubs. However, this program is not just for existing computer science students. We believe that introducing technology through building web and mobile apps will attract a diverse population who had not previously considered computer science.
The gap between school and industry
By the time I entered college as a Computer Engineering major, a nerd father, nerd summer camps, and years of nerd training prepared me well for my freshman year. With several programming languages under my belt, I felt at ease in the early logic and algorithm classes. And yet, in 1999, I had a vague sense that I was on the sidelines as my more adventurous friends were tackling PHP and throwing around words like “shopping cart” and “session cookies”. By the time I decided to explore more, it seemed like the crowd had already moved on to Cold Fusion and ASP. I still remember the general sense of frustration and confusion I felt after graduation as I was trying to understand the actual technical landscape that was so different from my textbooks.
This is not a condemnation of computer science programs. Critics of traditional degree programs will sometimes cite the fact that, in practice, most programmers don’t write compilers or operating systems or rebalance binary trees or route through graphs. While it’s true that web and mobile apps require a completely different set of tasks, I don’t regret learning the fundamentals. You can be a successful car mechanic without ever learning about the principles of combustion or aerodynamics, but you’ll probably never build your own race car.
However, there is a distinct gap between what’s taught in school and what’s practiced in industry. Our courses are designed to run in conjunction with university programs and bridge that gap. As students prepare for the transition into industry, the practical skills we give them will open thousands of doors. On the flip side, companies spend millions on university recruiting, focusing on only the top 50 schools and running interview drills that they know to be imperfect assessments. We hope that our program will pave the way for students from thousands of colleges and universities to discover and prepare for the opportunities they’re looking for.
“Started from the bottom, now I am an intermediate iOS developer. Bootcamp fulfilled all the promises Tim made. ”
– Stanford Student in Spring 2015 iOS Class
CodePath pilots iOS Class at Stanford
Earlier this year, we ran our first university class in iOS development for a group of 20 Stanford students sponsored by Andreessen Horowitz. Our instructor co-taught with a student instructor and a team of three TAs, and students participated either for independent study credits or no credits. We used the same policies that we have for our professional classes: unexcused absences or incomplete weekly projects will result in being withdrawn from the class. Despite having overburdened class schedules and other commitments, 15 students were able to successfully submit all projects and present a final group project which is an app they designed and built. Students in the program connected with senior iOS engineers from Wealthfront, Amazon, Linkedin, and Nest. Andreessen Horowitz also agreed to provide access to their portfolio of companies to all students in the program. To top it off, CodePath provided a $5,000 cash prize to the top student projects.
This program is not just for senior computer science students. Over the past few years, we’ve run an extremely successful program teaching designers how to build native mobile apps that was initially created for Facebook. Even though the designers have limited or no programming experience, they’re driven to create the apps they can see in their imagination. The class isn’t just about building apps like the one shown below. Designers gain confidence in their ability to pursue their own ideas, can work more seamlessly with engineers, and earn greater respect from their more technical peers.
Teaching designers successfully has helped us confirm that programming can be learned relatively quickly even by those with no prior experience. Unfortunately, in many universities there is a belief that only those who have been programming since childhood or with exceptional abilities in math or logic can learn new languages in a reasonable timeline. Furthermore, programming is rarely thought of as a field for those seeking to express creativity in their work.
We believe that a big part of the achievement gap in programming is in fact a motivation gap.
Most non-technical people are puzzled when programmers refer to themselves as the creative type or go on about the joys of seeing their ideas come to life. It doesn’t help that most introductory programming courses emphasize that the field is only for the ‘logical’ and the ‘gifted’. It’s no wonder that most creative, intelligent young people steer clear of dreary computer science classes. We believe that a big part of the achievement gap in programming is in fact a motivation gap. By motivating students with a clear vision of the things they can create, they’ll be inspired to learn more and to get through the difficult parts of the learning process. We’re in the early days of our university program, but we’re excited by the impact that we’ll have in this community and beyond.
This spring I enrolled in a CodePath mobile development course. The experience was remarkably positive and beyond what I had expected; so much so that I was inspired to share their curriculum with an unlikely audience: a group of 20 individuals in Haiti with little-to-no prior programming experience. I was born in Haiti and lived there until I left for college, and now I live and work in San Francisco. Having those two vastly different perspectives and experiences has made clear to me how underserved communities are not on equal footing when it comes to participating in opportunities created by the internet, even when they are able to passively access and engage with it.
CodePath provided access to their Android curriculum to launch the program this past summer. I chose the students from more than 150 applicants — most of whom were recruited through a Facebook ad — and I included a mix of high school and university students, as well as a handful of professionals. Carly Baja, a Haitian developer whom I coached on the CodePath Android material, taught the two-month class starting on July 4th. He spent 20 hours in class with the students every week to discuss the video lectures and offer guidance on the assignments. Saint-Louis de Gonzague, a high school in Port-au-Prince, was kind enough to allow us access to their computer room.
To ensure a reasonable course completion rate, we emphasized two key components: commitment and collaboration. One of the more challenging aspects of learning to code is the willingness to put in the hours it takes to attain proficiency. When first learning to code, it’s easy to feel discouraged and abandon a potential career in programming when struggling to understand key concepts or trying and failing to fix a bug for hours, especially if one lacks the support system to persevere. Within the first two weeks of our course, nine students dropped out or were asked to leave the program because they did not demonstrate the level of commitment required for the course. Paring down the class to only those who were willing to put in the time and effort allowed the remaining students to participate in an environment that encouraged favorable outcomes, and allowed us to make the most of our limited resources. In addition, we encouraged all students to collaborate by helping one another on projects and by creating an online discussion forum to share information and collaborate. Many of the students were unaccustomed to working in groups, but quickly came to understand the value of working collaboratively as it led to them progressing more quickly through the material.
We worked hard to understand and adapt to each student’s specific needs. Through student interviews prior to the class, we realized that many students lacked the infrastructure at home to complete homework on their own, so we provided ample time during the session for them to work on their assignments. Given the slow internet, which worked only intermittently, we downloaded all of the lecture videos and setup files ahead of time, and translated common terms for the students who were not native English speakers. The biggest challenge, however, was something far less obvious: most students lacked the inspiration and confidence to even believe they could become successful developers.
Most of us don’t realize that for many people, minorities in particular, the biggest barrier to success is the lack of conviction that they, too, can succeed in certain professional fields.
Over the years, I have observed that many minorities, including the people in this bootcamp, have never met nor even heard of a successful software engineer from a background similar to their own. Therefore, they seldom pursue these kinds of opportunities even when they are seen as desirable professions. In Haiti, computer science is not yet a well-known career path and there are not many visible role models in the industry. As a result, I spent a lot of time one-on-one with the applicants to share my personal story as well as the stories of those around me to inspire them to embrace a field that feels so very foreign and unattainable to them. Knowing others like them who have gone through a similar process helped inspire the confidence that they too could persevere through the most challenging parts of the course and find success. Unfortunately, I feel that coding bootcamps often fail to address these concerns for minorities and, as a result, both enrollment and completion rates are not where they ought to be for those underrepresented groups.
At the beginning I felt like an outsider because I was the youngest student and one of only 3 women in the class. My parents also told me I should do something more “attainable” instead. But I didn’t want to give up and after a while I fell in love with the subject!
— Sarah, high school student in the course
On the last day of the program, we organized a demo day and invited the students’ family and friends as well as key members of the community, including potential employers. The level of excitement we saw was unprecedented. A number of local companies, in dire need of developers, approached us to discuss internship opportunities.
Though the students have developed a strong foundation in Android as demonstrated by their projects, this experience is only the first step in a long journey ahead of them. We need to help them further their coding skills by giving them continued access to infrastructure — laptops, Android devices, internet, etc — mentorship as well as viable opportunities for work in the field. We also envision scaling up our program in order to reach more students in Haiti and one day hope to launch in other underrepresented countries as well.
The experience in Haiti further concretized the importance of leveraging the internet to empower all people, not just a small percentage of those for whom resources are never lacking.
It’s one thing to ‘connect’ the world with the internet, but it is a completely different and far more meaningful goal to provide everyone with the tools they need to participate in the global internet ecosystem.
A number of tech companies have invested resources in expanding their reach but have yet to give people around the world the tools necessary to solve their own problems and to become equal participants in an ever-changing technological world.
On Tuesday, July 13, CodePath held its quarterly demo day at Lyft headquarters. I went to support some friends and found an amazing event backed by Y Combinator, Andreessen Horowitz among others with cash prizes worth $15,000. The quality of the apps was awesome and I thought I’d share my experience with everyone.
The presenters were the top teams from CodePath’s last iOS and Android bootcamps. They were sifted from a batch of 100 full-stack engineers from companies like Facebook, DropBox, and Box and the best final projects were selected for the demo day and also got a chance to meet with a YC partner. The apps were developed over the course of 4 weeks by engineers who did not know iOS or Android before. Many of the designers did not know what a variable was before the course. We were all pretty impressed by their accomplishments in 28 short days.
There were three bootcamp cohorts this quarter – Android, iOS, and iOS for designers. The judges chose a winner and an honorable mention from each of the three categories.
Cohort 1 – Android
StrengthCoach – a very well designed app for peer-to-peer fitness training. I wanted it enough that I thought about switching to Android :-)
SwagSwap – a mobile app to buy and sell used kids’ stuff. The judges found it a compelling use of mobile’s many benefits – the ability to take pictures of the merchandize in app, utilizing social networks to sell using OAuth.
Cohort 2 – iOS
WalkingBuddy – An iOS and Apple Watch app that informs friends if I made it home safe when walking alone. As a female braving the wild west, an app like this is a godsend.
Pretto – makes it possible to share and add to pictures of events you attend without having to know all the people there – think weddings, conferences. As the judges said, there have been no compelling products in the space yet.
Talka was so bomb, it had the audience dancing. It turns Siri into a singer, meshing words in any language with vocal manipulations such as speed, pitch, etc. Amazingly, it’s built by a single person team! :-)
The demo day was creatively charged and I found myself thinking of all the awesome things I could built after a CodePath bootcamp. Then reality hit – I must get to full-stack status first :-)
I should mention – along with providing free mobile training to experienced devs and designers (which you can apply for here), CodePath also welcomes mobile experts to mentor and teach with them. If you are interested, go here. But a word of caution from an alum to prospective students and teachers alike – “Sleep while you can. You don’t get much during CodePath!”
Priyanka Sharma runs WakaTime, a FitBit for programmers to measure their coding productivity.
When I first learned Cocoa, I didn’t get Interface Builder. It seemed like a beginner’s tool that gets in the way of anything more complicated than a tip-calculator. For years I worked on big teams that decided IB was off the table.
Last year I reviewed CodePath’s curriculum, which starts students off with Interface Builder. Since classes are target senior engineers who wanted real-world experience, I considered killing IB and forcing everyone to go programmatic. But I knew I first had to give it an honest try.
Well now I’m an Interface Builder convert. It’s a great fit for most projects, even “at scale.” Not only is it a timesaver, but it’ll lead to fewer bugs than going purely programmatic. The advantages should outweigh most anxieties. While there are situation where it won’t fit, it should be the first tool an iOS developer reaches for, and it’s absolutely critical to master.
Auto Layout is a powerful tool for dealing with device fragmentation, localization, and really anything with dynamic layout. However, for complex layouts, it’s hard to juggle all of a screen’s constraints in your head. With size classes in iOS 8, it’s only going to get worse.
If there’s one thing that’s tipped the scales toward Interface Builder, it’s real time feedback for Auto Layout. When you make mistakes programmatically, runtime errors are cryptic, and it’s frustrating to constantly re-running code in the simulator to test fixes. In IB, they’re actually highlighted. It’s a debugger for views.
Static Table Views
Every app has a setting screen. They all have some labels and text fields and switches, and they’re all powered by the same boilerplate code. You could waste an afternoon writing it code, slipping in some off-by-one errors. Or you could offload it to a library you wrote yourself, which you now have to maintain. Maybe there’s a third party library, but you’re back in the same position of offloading code to someone else. Why not give it to Apple, where it’s more battle tested?
While Apple has always Interface Builder, they’ve provided programmatic alternatives on equal footing. Things started to change in Xcode 6, when all new project templates used Storyboards.
Now, WatchKit apps require Storyboards. You cannot configure your UI programmatically.
The Trade Offs
It’s valid to have anxiety over Interface Builder, but I think it’s overblown.
My favorite part of teaching senior engineers from other platforms is getting a fresh perspective on problems. I asked them to play devil’s advocate after trying IB for a weeks.
“It Feels Magical.”
If you’ve used a “magical” framework on a successful project, you’ve been bit. Maybe the project changes direction, or you’ve been successful enough that scaling becomes an issue. In reality, you didn’t save time. You just delayed solving the problem.
While Interface Builder looks magical, it’s pretty simple. Anything you can do in IB, you can map 1:1 to code, and it’s straightforward to follow what IB files do. The Cappuccino team actually built a tool that convert XIBs for use with their web framework.
“What about performance?”
Performance can mean a few things. Memory?
The memory usage between methods should be nearly identical. There is a temporary memory usage increase for using nibs or storyboards, but it is likely very minor compared to the views themselves. Similarly while loading and parsing a file is not free, in many cases the cost of doing so is minor, and has absolutely no effect on the performance of the final generated UI.
– RinceWind, Apple Developer, on the Developer Forms
Performance could mean CPU Time, and Matt Gallagher benchmarked it. Out of the box, IB up to 17% faster than programmatic layout. After some tuning of the programmatic code, it was 5-10% faster. In his conclusions, he said:
Don’t assume that NIB files are always slower than generating views in code — it is not always true. While in general, generating user interface views in code appears to be 5-10% faster than loading from a NIB, the reality is that this difference is small enough that it doesn’t matter and there are certainly some views that load faster from a NIB than from code.
His deliberately contrived setup has a 1.8 second load time, and the difference was only about 100 milliseconds. It was also written in 2010. In real world apps on modern hardware, the difference will be negligible.
On top of this, consider that tableview cells are recycled. So even if it costs a few milliseconds, it’s paid when the screen loads. It should not impact scrolling performance.
Given the low risk, and how little it costs to implement, don’t worry about performance until you’ve benchmarked it in your own app.
“How will it scale?”
If you cram everything into Main.storyboard, you’re doing things wrong. It’s no different than if you try to fit all of your app inside one class in one file. Just like code, you refactor IB files.
As your app grows, split out flows into their own .storyboard files. Then load them programmatically.
let nav = UIStoryboard(name:"SignupFlow", bundle:nil).instantiateInitialViewController as! UINavigationController
When a single flow gets too complex, you can break things down until a storyboard contains a single screen. When that gets too big, generate the controller programmatically and load individual views via XIBs.
“What about merge conflicts?”
As we refactor our Storyboards into smaller IB files, we reduce the risk of conflicts. That said, there’s still a risk, and yes, hand-merging these formats carries risk.
As iOS developers, we have to contend with a much more dangerous file: Xcode projects. Most teams just deal with it. Big companies like Google worry about scaling it, so they built Generate Your Project, which generates IDE project files as part of a larger build process, taking its management out of the hand of the developers. It’s great for Google, but overkill for 99% of apps.
Beyond all that, we already deal with large opaque binaries in our apps: image assets. We don’t draw all our assets programmatically in the name of purity.
You may cringe with that comparison. “Image assets are a designer’s problem!” I wonder if layout should be, too.
Early video games were entirely developed through code. Today, game developers invest in level editors so artists can focus on the work. Today, many iOS teams expect designers to hand engineers an annotated PSD, and the engineer to transcribe it to code. So long as you clearly define boundaries, it seems better to let an artist build out the art and let the engineer focus on integration.
Obviously there apps where IB is the wrong tool for the job. I just think they’re in the minority.
Before you judge IB, ship a real project with it. Once you get past the learning curve, the productivity gains far outweigh the risks.
On Monday, November 10th, we celebrated our last Demo Day of 2014 and allowed designers to compete for the grand prize for the first time.
Over 120 engineers and designers from more than 60 companies including Apple, Google, Facebook, Dropbox, and Box competed for over $15k in cash prizes and presented to an all female panel of senior technology leaders.
“What do you do?” or “What does your startup do?” are tired questions in San Francisco, a city where you are measured by your works. The superficial startup ideas, the digital smugness, and the unnatural culture of tech celebrity are sometimes enough to make you want to throw your smartphone into the ocean and dive in after it. Go away from San Francisco for a while though, and you’ll start to remember the thing that drew you in the first place. You remember that, beneath the fads and clumsy attempts of first-time entrepreneurs, lives a city of dreamers and doers defying cynics and conventional wisdom.
Our dream is to create a modern school for engineers to attend throughout their career. Even more audaciously, we want to offer this school for free. Various experiences have led us down this path: our experience as founders exposed us to the pains of hiring, and our experience as engineers gave us the aspiration to be lifelong learners. We believe we can connect the dots and create a better solution for both.
A founder’s perspective
A founder really only has two critical roles: company direction and hiring. A common mantra in the startup world is, “execution is everything”, and, ultimately, it is the team that must execute the vision. Founders often share the trait of being control freaks, so letting go of that control is one of first challenges that they will face. That doesn’t mean letting the company run amuck because setting company direction and expectations is the second role of a founder. I don’t have any sympathy for founders that gripe about their team. All I see is a founder that has failed in their only job.
Unfortunately, hiring is brutally hard. Referral is still the best way to hire, and when that well runs dry, the options are not good. Sometimes, I felt the only thing we could do was watch the months slip by as we tried job boards, contingency recruiters, in-house recruiters, engineering speed dating, engineering auctioning, and any number of ridiculous things.
I find it incredible that large companies use talent acquisition as a major strategy in hiring. I understand how it happens though, when you have executives staring at quarterly hiring targets. Acquisition is probably the only way to expedite the hiring process, so you’re left to solve the challenge of hammering together engineers from different company cultures into a cohesive team. To me, though, that’s like panning for gold when you can build a gold factory instead.
In fact, there is a vast supply of engineers. Engineers who are talented, humble, and eager to learn and contribute. Why, then, do companies drool over Ivy league new graduates whose only experience is school projects when there is this other pool of talent available? At the end of the day, it’s about risk. A big part of hiring is mitigating risk and most experienced engineers don’t have “clean” resumes. Does too many years at the same company mean a lack of initiative? Does too few years mean they are flighty? Also, their technical experience almost certainly doesn’t completely intersect with the tech stack your company is using, so how quickly can they ramp up?
At the end of the day, I can understand the justification for passing on many of these people. Companies avoid risk in hiring so much that one veto amongst six interviews is enough to disqualify a candidate. This is troubling, however, as we have all been in that candidate’s shoes. At some point in our career, a hiring manager or investor took a risk on us, perhaps despite our previous experience, and maybe that was just the opportunity that we needed. In the happiest stories, we went on to be very successful for the company, justifying the risk. Unfortunately, the stories often don’t have happy endings, which causes companies to write off a large number of candidates.
We believe we can change that and broaden the candidate pool beyond those that fit a narrow description. Our school is the perfect environment for individuals to demonstrate initiative and the ability to master new skills quickly. Imagine companies bringing interesting projects to the class or challenges like Google’s Summer of Code. Opportunities to collaborate are opportunities to build trust, and trust is the thing that makes referral based hiring so much better than traditional recruiting. I would have gladly exchanged my many hours spent interviewing with time spent mentoring, probably with more productive results. Properly executed, the school could recycle an endless supply of qualified engineers back to grateful companies.
An engineer’s perspective
The only constant is change, and there’s no truer statement in engineering. An engineer’s career is composed of “learning” years and “plateau” years. It’s deadly to stay too long in the “plateau” years. As a result, professional engineers are accustomed to, and take pride in, frequent self-teaching. It’s a good thing that engineers enjoy self-teaching because it’s the only option available currently. It’s certainly not very practical or efficient to go back to college or even get a graduate degree, and community college and other continuing education programs are no match for modern technology. Instead, you’re left sifting through a thousand different eager voices on the internet, most of whom got something working, but also don’t really know what they’re talking about. You sit there, like some kind of technology archeologist, painstakingly piecing together which APIs were thoughtfully designed and which were some historical remnant. Imagine learning how to be a blacksmith by walking into an empty smithy with nothing but a handful of StackOverflow posts. Maybe possible, but very slow.
On the flip side, think back to some of your more fruitful “learning” years. They are probably characterized by two things: a substantial challenge and a significant mentor. In engineering, there are trivial challenges and there are interesting challenges, but both are time consuming for a newcomer. For example, debugging a well-known library issue can take as much time as designing a clever caching strategy. Mentors streamline the trivial challenges by filling in the communal tribal knowledge. Of course, reference texts are also great resources, but by being comprehensive, important nuggets are lost in a sea of trivia. Lack of mentorship breeds great inefficiencies, and this is made obvious when one observes technologists today praising “recent” advances that are simply rediscovered concepts pioneered decades ago.
We believe that our school brings the same advantages as structured mentorship, and allows engineers to challenge themselves throughout their career. Interestingly, it also brings about another important advantage. Collaboration with like-minded peers is so rewarding that it can keep a team together long after the product or engineering challenge loses its luster. However, if you’ve ever tried to chase that feeling by meeting random engineers at a beer-fueled engineering meetup, you’ve probably been disappointed. A learning environment is infinitely more effective at building meaningful collaborative relationships. The relationships may be its own end, may lead to professional collaboration, or may lead to your next cofounder.
When we founded CodePath, we wanted to build it on several principles. First and foremost is the standard for excellence. We want to attract the best and that requires the highest quality classes. Second, classes are project-based because engineering is best learned by doing. Third, projects are built in groups because engineering is not a solo activity in industry. To us, product, design, and collaboration are as much a part of engineering as libraries and frameworks, especially in a startup.
Making the classes free is a risky decision. There’s no such thing as a free lunch, and that will make engineers wary of low quality or some kind of catch, so that’s an impression we’ll have to overcome. When we set out to build this school, we were determined to build a school that we would attend ourselves. As a student, I don’t have thousands to spend on classes every year. As long as we can prove that we can train engineers to a certain standard, there’s money on the table from startups and big companies alike.
We’ve already been using our curriculum in corporate training for the past several months, and we’re excited to bring the classes to other engineers. Are you interested? Apply for our iOS evening bootcamp or our Android evening bootcamp. These initial bootcamps are targeted towards experienced developers interested in iOS and Android. If you would like to mentor a group, email us at email@example.com.