8 March 2021
Re-launching Apprenticeship
Re-launching our Apprenticeship Program
We’re excited to share a secret with you: we are restarting the Gaslight Apprenticeship Program! Almost exactly 5 years ago, we started an experiment. Our plan was simple: team up a pair of high potential new developers with a mentor and have them join a client project team. The criteria for success was this: Could the team contribute effectively, and at the same time help the new apprentices become full fledged development team members? The answer has been a resounding Yes! We’ve now been able to welcome twenty or so new folks into the field of software development. It has been, for me personally, the single thing I’ve been proudest of in my nearly 25 year long career.
It’s an understatement to say that 2020 was a difficult year. For us, this has meant we haven’t been able bring on any new apprentices for quite awhile. This makes it really exciting to be able to annouce our plan to hire a new pair of apprentices in the coming months. I’m also incredibly proud to say we’ve been able to hire our last pair of apprentices, Al and Ula. It’s taken longer to do this than it normally would, and I’m grateful they’ve stuck with us through some challenging times. They are already making significant contributions, and I know there are great things to come for them.
Is this you?
So, what are we looking for? In a word: autodidacticism. Sure, it has all of the syllables that there are, but it’s also a pretty succinct description of the most essential quality I see in our most successful apprentices. Software development, more than any other field I would argue, has a knowledge shelf life approaching zero. Therefore, the most essential skill of a developer is to continue learning. It is both the best thing and the worst thing about our field. It’s also why I can say we don’t care much, particularly for apprentice candidates, about specific technology background (did you pick React or Vue? We don’t care). If learning the next thing is something I see an apprentice candidate embrace and enjoy, I can see a bright future them. At one point we used to describe this quality we looked for in developers as “passion”, but I think a better word is curiosity.
The path to apprenticeship
We find apprentices took a wide variety of paths to get to apprenticeship, and we love that! Several we have seen are:
Self-taught
There are a lot of great resources, many of them free, available to help you learn coding skills. But once you have the skills, landing your first job can be a challenge. The good news is that we’ve seen extremely successful apprentices start exactly this way. If you can demonstrate you have learned the key skills you need (see below), we’d be happy to talk to you, formal training or no.
Bootcamps
There are a huge amount of intensive software development programs out there. This can be a great way to get an intense jump-start into learning the skills you need to be a successful apprentice.
CS Degree Programs
The traditional approach is absolutely still a great option for many. If you are a recent CS grad and the idea of starting your career in a setting optimized for your growth appeals to you, we would love to talk.
Where do you need to be?
Whichever path you took, there are a core set of knowledge and skills that we want our apprentices to have:
Editor skills
Nowadays a lot of us use VSCode, but not all of us. If vim or emacs is your jam, more power to ya: we are an editor judgement free zone :)
Git
Once upon a time there was more than one source code control system to learn, but nowadays it’s pretty much settled: just use git. We don’t expect advanced git skills. If you can commit your code to a respository we can get to for evaluation, that’ll do for a start.
Command-line navigation
GUIs are great as far as they go, but for developers there is no avoiding the terminal. Understanding the basics of directory navigation and executing programs is essential, and knowing a little bit of shell scripting would be a bonus.
HTML/CSS/HTTP
Almost all of the work we do involves the web, so understanding the technical underpinnings is essential. We do not expect expertise here, but building a simple web app will require a basic working knowledge of all three.
Your first programming language
Javascript is certainly a reasonable choice because it is pretty much the lingua franca of web development, but it is by no means the only viable choice as a first language. Ruby is another great first language for building web apps. There’s not a wrong choice here; the goal is to learn the language and ecosystem well enough to build a fairly simple but interesting web app project.
Building a web app
Finally, we need you to be able to put these skills together in order to build a simple, functional web app. We try not to put too many constraints on this, because we want it to be something you are interested in. The only requirement is that it be interactive: a website that is just displaying information in HTML and CSS, while certainly a step in your journey, is not far enough along to be ready to join us as an apprentice.
We’ve had apprentices build everything from scheduling systems to games. We suggest it be something you built primarily yourself: submitting team projects can be tricky unless you are very familiar and comfortable with the entire codebase. We’ll use this project to do our coding assessment, so knowing how everything works is essential.
It’s important to have your code in a publicly available github repo. The README for the app also needs to have instructions for getting your app up and running.
It me! What do?
Apply!
If all this sounds like a fit, the next step is to apply.
Math and Logic Test
We use a math and logic test to help us assess aptitude. We put more stock in the coding assessment (described below) so don’t sweat this over-much, but it is a useful data point for us.
Coding assessments
Once we receive your application and you complete the math and logic test, we will get to work on evaluating your project. While we’d love to be able to spend a few hours coding with everyone (really! we enjoy this!), it is likely we’ll need to narrow the field to about 10-20 candidates we schedule a coding assessment with for this round.
We usually do two: For the first, we will spend an hour or so working on adding a feature to your app. It doesn’t need to be a complex feature, usually simpler is better. If you don’t complete it, that is okay. What we are looking to see is problem solving, critical thinking, and an understanding of how the code in your application works. If you get stuck, we want you to be able to make a guess about what might have gone wrong, and then come up with a way to check your hypothesis. If you don’t know something, you get bonus points for searching online to find the answer. Coding is an open-book team sport, after all.
For the second assessment, we will have you work on a more abstract coding exercise: no user interface, no frameworks, just you and your editor. For this we often use a site called exercism.io. Feel free to get a jump on things and check it out. You will get to use the language of your choice, and pick the exercise you want to tackle ahead of time. Think about the problem as much as you’d like, but we’d like you to write the code while we are doing the assessment. Often, but not always, each assessment is with a different Mentor.
And then you join us…
Based on the coding assessments, we will select the next pair of apprentices and pick a start date based on project and apprentice schedules. And then the real fun begins!