I know that many of you struggle to decide what to learn next. There are dozens of programming languages to choose from. Hundreds of frameworks. Thousands of libraries. It can be paralyzing.
Should I go to this Ember.js meetup? Which Udemy course should I take next?
Today, I want to share 5 rules to guide you during your first years as a junior developer.
Once upon a time …
… there was a young junior developer, called Anna. Anna finished a 12-week web development bootcamp. She was super excited to finally start working and earn some money.
After graduation, she spent the next 3 months, sending out applications. But she had no luck. She must have submitted more than a hundred applications. And no single positive response. Anna felt like she was … invisible.
Anna decided to ask her mentor for advice. Her mentor is an old experienced senior software engineer. She dialed the mentor’s number and was soon connected.
Anna told her mentor that her bootcamp covered React. And that she had applied for frontend roles with a focus on React. But soon, she ran out of companies that are actively looking. Positions for junior developers are rare.
She noticed that other companies were looking for developers with Vue.js or Angular experience. Anna began to wonder whether she should spend some of her time doing yet another 40-hour Udemy course.
So she asked the mentor:
“Should I learn Vue.js or Angular?”
The mentor replied:
“Master React, and you will find the answer.”
Jack of all trades, master of none
As a mentor, I meet a lot of motivated junior developers. Some have finished a bootcamp as Anna has. They are looking for their first job in the industry. Others already gained a year of experience. They are considering whether they should switch to a different company. To one that promises a better compensation package, better work culture, or better growth opportunities.
I am a hiring manager myself. When I look at a junior developer’s resume, I notice a long list of cool technologies. Then I start looking for projects and how these technologies were used. Besides the title and date of the project, there’s usually not much else.
So what’s the problem?
The T shaped developer
Perhaps you have heard of the T shaped developer. The concept describes a developer with both – broad knowledge about several technologies and deep expertise in at least one technology. The vertical bar of the T represents profound expertise in at least one technology. The horizontal bar of the T represents a wide array of skills.
An I shaped developer is very specialized and can not contribute to problems outside of their one area of expertise. A — (dash) shaped developer is a generalist who can contribute to all problems but cannot solve complex problems on their own.
The list of general software engineering skills is long. The list of technologies is endless. At some point, you will master one of the SPA frameworks. But you will never be able to master all SPA frameworks (React, Vue.js, Angular, Ember.js, …).
For instance, during your time at the bootcamp you touched on many technologies. But you have not yet mastered these technologies. You simply have not used them long enough. You’re missing practice and experience.
As a junior developer, you look a lot like a — (dash) shaped developer. As a bootcamp graduate, even more so. Your horizontal line is very thin. You lack the depth of expertise. You are (almost) invisible.
So what can you do?
Quality over Quantity
Most hiring managers are looking for T shaped developers. That means you’ll have to work on your vertical bar, your I. You need expertise!
Be careful who you call friends. I’d rather have 4 quarters than 100 pennies any day.
— Al Capone
Rather than jumping from framework to framework, I recommend:
Stick with one framework for a few years. Master it! Learn to solve all different kinds of problems with your tech stack and your framework. And learn to use popular libraries that are often used in combination with that framework.
5 Rules
Here are five rules to guide you during your first years:
- Stick to your current programming language — JavaScript, TypeScript, Java, Flutter, C#, Python, PHP … Doesn’t matter. Learn to speak fluently in one language before you pick up the next.
- Stick to your current framework — React, Vue.js, Next.js, Express, Spring Boot, Symphony … Doesn’t matter either. Master the basics of that framework. Then focus on more advanced concepts of that same framework.
- Build something more complex — A read-only portfolio website or a simple CRUD application will not impress. Add form validation. Localize your app. Add Google Maps. Visualize data with charts. Persist relational data sets. Support multiple users and protect individual user data. As you try to solve these common problems, start to use popular libraries. Framework-related libraries like react-intl, joi, or recharts support solving these problems.
- Do the right thing: Do things right — Learn how successful software companies develop software. Use version control. Write tests (ideally first). Deploy early and often. Automate.
- Practice in-demand soft skills — Software is hardly ever developed by one person alone. Assemble or join a team and practice your collaboration skills.
See you around,
-David