7 Genius Skills to Level Up as a Software Bootcamp Graduate
Stop chasing shiny languages and fancy GitHub projects.
Your bootcamp cut out 99% of the crap and got laser-focused on the core skills to get you hired.
Then, you got hired to write code.
Today, you’re on the job and focused on tech used at work. You probably want confidence, recognition, pay raises and promotions. There’s a common theme beneath all of those: results.
Software engineering requires a relentless pursuit of knowledge. There’s. So. Much. To. Learn. Software keeps changing but the fundamental skills remain the same.
In software, you’re either advancing or falling behind. The consequences are severe if you fail to grow your skills.
Career stagnation
Dead languages
Boring projects
Resentment
Low wages
The path between bootcamp graduation and senior software engineer is filled with serious hurdles to clear and dead-end skills.
Over half of my life has been spent slinging code, managing teams and evaluating software engineers. I’ve hired and managed several bootcamp graduates. I see what moves the needle.
Pin point exactly where to invest precious time by focusing on these key skills.
1. Data Structures and Algorithms
At face value, the code we hastily feed to the compiler is fast enough … when the database is small. Even sloppy code can quickly chew through a few hundred-thousand items.
What happens when the data is so big our code just runs forever? Ten million rows in the table or gigabytes of data is like a clogged artery in your heart - danger lurks around the corner waiting to strike.
Simply put, an undergraduate class in data structures has the single largest ROI to enhance the career of a software engineer. Forging through the coursework to understand the code and ideas that underpin modern computing is a requirement to move into senior roles in software engineering.
I’ve taken the liberty to curate a list of completely free resources to jump start your education on data structures and algorithms. Check it out at https://rodey.substack.com/p/top-data-structures-and-algorithms.
2. Mathematics for Computer Science
Calculus gets all the attention for advanced math. Yet, for all of the calculus I studied it’s rarely been put into use and I’ve forgot much of it. On the flip side, real math exists that you can use almost daily: discrete mathematics, linear algebra, statistics and graph theory.
Each area has dedicated classes during an undergraduate degree and rightfully so. These skills are not learned in a week let alone mastered in a semester.
Discrete mathematics tests your skills in logic, reasoning and assessing the surface area for how big numbers can get before infinity.
Linear algebra is crucial for graphics programming and any type of artificial intelligence or machine learning.
Statistics arms you with the ability to make sense of vast amounts of data and make data driven decisions. Statistics pairs well with discrete math then adds a dimension for how to make sense of the data that is available.
Graph theory unlocks powerful and efficient solutions to common problems encountered in advanced applications.
There’s hope - you didn’t need to be a math whiz to chew through these topics. They don’t necessarily build on each other so you can pursue them in whichever order you please.
3. Computer Architecture
Before C# and Java there was C. Before C there was assembly programming. And before assembly there was microcode using 0’s and 1’s. Programming has come a long way in the past six decades. Learning computer architecture strengthens your understanding between the code on the screen and what happens in the CPU. Each additional bit of information (pun intended :) builds your ability to properly manage resources in computer as well as writing performant and efficient code.
Here’s a great question: should a CPU read binary data from left-to-right or right-to-left? Alas, a trick question. Both ways exist and systems need to cooperate with each other to work properly. Computer architecture develops your appreciation for challenging issues in hardware design and the software that runs inside.
4. Cloud Computing
For many, programming begins and ends with the code only on your laptop. The industry needs more people that know how to configure and deploy software on cloud computing.
Years ago, companies purchased physical servers for their team to setup and maintain. Scaling required significant investments in time, people and cash. Today, cloud computing means to use the servers (that another company owns) to run apps.
While I’m not big on certifications, getting the entry level certificate for your preferred cloud provider is a great step to show yourself and others you mean business. Cloud computing takes time and experience to learn the in’s and out’s of each major provider.
5. DevOps and CI/CD
Fun fact - most software engineers have no clue how to deploy their applications. Sure, the developers know how to run the apps and use them. But that is quite different from knowing how to setup git-push deployments and automated releases.
The most valuable code runs in Production and I’m serious when I say that every company has only 1 or 2 people that truly understand how to build the codebase and deploy it for customers.
Your average software engineer can’t appreciate the level of job security that comes along with having robust DevOps skills. There’s a better chance you’ll first change jobs because of boredom before being a part of the latest workforce reduction (i.e. layoffs).
DevOps isn’t easy. The key is to start small. Take a straight forward code base and build it entirely through command line scripts. Then, implement those scripts using popular automation tools like Azure DevOps Pipelines, GitHub Runners or GitLab Pipelines. Finally, create a deployment process using command line scripts so the application is running on a completely different server than your own.
6. Relational Databases
Building web api’s or React components are now table stakes for skills. Yet, virtually every hiring manager I’ve talked to says this one key skills is consistently lacking from their new hires: SQL databases.
Of everything on this list, SQL databases are the easiest to learn. I’d wager you have at least a little experience using relational databases. Enhance your knowledge by learning data architecture, data normalization, crafting advanced queries, building efficient indexes and optimizing queries.
Designing Data Intensive Applications is one of the most recommended books I see on the internet and could be a great way to jump-start your learnings.
Check it out at https://amzn.to/3yqavqy
7. Interviewing
Job hopping is the way of the world in software engineering. Often it’s the shortest path to get more money, work on cooler projects, get a better title and an overall increased quality of life. The first job is necessarily to get experience and transform potential to real world results.
There’s always a catch. Interviewing is a skill just like everything else on this list. Teams approach hiring like people approach dating: we want someone outstanding before willing to settle. Merely being employed is a lot like a long-term relationship: our habits and patterns mold to perfectly fit with our mate and while that’s good for the relationship … you’re future partner wants to see you’re still motivated.
Occasionally, shop around for a new job just to keep up on what’s happening in the field. It’s best to find a new job when you already have a great one. Regular interviews strengthen the interviewing muscle to prepare for a wide variety of situations.
And if that’s not enough or not working, a mock interview is a great alternative to practice real interview situations and get real feedback.