As the head of Engineering at Kickstarter, a significant portion of my attention is dedicated to constructing an ongoing hiring plan. Any engineering hiring strategy, no matter the size of organization, has to include a plan for more junior members. In my career in engineering management, I've hired, on-boarded, and mentored a lot of Junior (or "Associate" if, like me, the terminology skeeves you out) Engineers from both Bootcamp (e.g. Flatiron School, General Assembly) and Computer Science programs. In that time, I've encountered patterns and mental traps that recent graduates fall into, along with some shared misconceptions about focus and prioritization as a newcomer to professional software engineering. In a series of posts here on Drip, I'll be writing a field guide intended for recent graduates — both of bootcamps and traditional computer science programs.
Firstly, I think grouping bootcamp graduates together with CompSci graduates is done too infrequently, even though the programs have similar results: a group of eager newcomers lacking professional engineering experience. I believe there is an industry-wide stigma against coding bootcamps, but both educational settings produce quality candidates. I personally am not a computer science graduate; I studied film in college, and am a self-taught programmer. I've found that bootcamp graduates have a misconception that they have to overcome a deficit of computer science fundamentals. Though those fundamentals are helpful on occasion, lacking them will not set you back early on in your career, nor will they give you a leg up. The major difference in bootcamp grads and CompSci grads is that the latter, unsurprisingly, tend to have more experience working within programming environments. On the other hand, bootcamp graduates tend to have previous experience working in a professional setting, and professional maturity goes a long way for newcomers. CompSci programs tend to emphasize more theoretical subjects: algorithms and data structures, while bootcamps throw their students headfirst into making web applications under startup-like conditions. Graduates of both enter the workforce with some shortage of knowledge.
Whiteboarding algorithmic complexity, or being up to date on the latest web technologies are not areas that I would emphasize for more junior engineers. Instead, I think recent graduates should focus their post-graduate education and learning on skills that enhance collaboration and enable operating a suite of applications.
This is a rough list of what that entails:
+ Giving and receiving code review
+ Writing and running tests
+ Navigating code that no one on your current team wrote
+ Tailing a log
+ Monitoring a process
+ Collecting application event metrics
+ Going on-call
+ Working with non-technical partners and stakeholders
In the forthcoming series of posts, I'll focus on each one of these areas. The first will address a key gap I frequently see in the skillsets of recent grads: command line fundamentals. That will be another public post, and you'll need to subscribe for the rest of the series.
Subscribe to my Drip for free for access. If there's a topic you'd like to hear about, please leave it in the comments!