Things I wish I knew before becoming a developer 
Tags: beginners, codenewbie, career
Published: 2020-11-19 18:55:30

---
title: Things I wish I knew before becoming a developer 
published: true
description: There's a few things you need to know as you consider a dev career. TLDR, it will get better with time, a lot better
tags: beginners, codenewbie, career
//cover_image: https://direct_url_to_image.jpg
---

> TLDR; Navigating the developer profession is hard. Here's a few pearls, I don't dare call it wisdom but rather subjective observations. Hope it's helpful.

## Education help, but not the way you think

It's 2020 the Web is full of tutorials, written and in a video. Why should I consider plowing down money into a CS education? I'm privileged enough to have grown up in a country where there's no tuition fees for University. I know a lot of you are not that fortunate, getting a degree might not even be possible or it leaves you in crippling debt.  

> Let's assume it was a level plain field, would I recommend a CS degree then?

Maybe

> What do you mean maybe? I get a degree, more companies will want me etc.

Let's look at what Universities teaches you currently, they teach you fundamentals, like algorithms, compiler construction, operating systems, maths etc. And yes, you will likely land more interviews with a degree in your hand..  

It's a commitment, a long commitment 3-5 years. Many engineering degrees has a lot of Math courses in it and if that's not your cup of tea, you can still be a successful developer. My general recommendation is therefore, if you want to work at Google, go for an engineering degree, if you just want to be developer, go for any degree that teaches programming.

>   Ok, so I can't afford it, what now?

I recommend checking the Universities and what courses they teach and the course outline, then start Googling and find tutorials on Wikipedia and YouTube and so on. 

> What did you mean initially when you said a degree doesn't help the way you think?

Well, a lot of this knowledge is foundational knowledge, knowledge that doesn't land you a job, but it helps frame your thinking. Specific knowledge like the latest framework or language is something you need to pick up yourself.


## Landing that first job is crazy hard

As a newly baked student you have no idea what companies exist out there, I didn't. You end up sending your CV all over the place and no one cares because you have no experience.

> Yea I know, what do I do?

Network.

> What in school? 

Yes there, but definitely go to meetups, or start helping on OSS projects on GitHub, post on Developer Facebook groups or wherever developers are. Avoid sending your CV to 100s of jobs, that's a huge waste of time. Rather spend that time building out a GitHub repo, show people you can code, solve algorithms with CodeWars etc. 

There's no sugar coating this, you will spend a tremendous amount looking for that first gig..  On the upside, this might be the last time you are actively looking, chances are you are being recruited for all the upcoming gigs.  

## The first job is going to be terrible

Unless you are extremely lucky, your first job will be terrible. There's so much to learn navigating your first job as you are likely to learn things as:

- **When and when not to ask questions**. A lot of devs are annoyed by questions. The trick is trying a bit first yourself and knowing how much *a little* is. Also ensure you write down the answers and progressively ask better questions. 
- **A new framework and new coding language**. Whatever they used in school is not what your job uses.
- **Almost no companies offer any meaningful mentoring**. What can I say, the IT industry is fundamentally broken.

That's the bad news, the good news is you will learn a ton in that first job, so your next gig will be a whole lot better. 

## There's no escape

As you progress in your career, there will be things that you understand right away and things that take time. My advice here is take the hard parts on like a crazy bull. Once I did that myself it helped a ton. For example, I always struggled with Docker, so I wrote a 5 part series on it.. Stare down that knowledge, you are smarter and more passionate than you think.

## It's not just coding

One of the biggest mistakes is thinking that development is all about knowing how to code things to the best possible O(n) degree or knowing Git commands in your sleep, or patterns and architecture.. That's important too but there are complimentary skills that are of almost equal importance like:

- **Communication**. Being able to communicate your ideas clearly is about using a clear language with correct terms but also understand things well enough so you can use great analogies for example. Practice this by giving talks at Meetups or Toast master exercises. This is so important it might be the difference between being a senior dev to becoming a lead, principal or architect.

- **It's a career**. If you sit in the same room, with the same team year after year, you will get nowhere. You need to change it up now and then, change companies, work cross team, do different things. Build a network, have a plan, get a mentor and so on. Remember, you have a career, your company has an employee.

## There' more than one career

Starting out you roughly think that you can be a developer, tester or a project manager. A few years into it you notice that there's architect, agile coach, DevRel (which is a ton of things, like speaker, writer, tools developer, liason between product team and devs etc), DevOps, Security.

All of these career choices have their own skill sets, so find out what that is and if that's a direction you want to go in.

## What does specialize mean or the difference between Jack of All Trades, One-trick pony and T-shaped

I'm saving the hard one until last. One of the things you will hear early on is *specialize*. That does not mean you should only know one thing, like React for example.. 


**One-trick pony**. If you only know one thing and unable to learn new things you become the one-trick pony. Avoid this by staying eternally curious. It does not mean you should think about coding 24/7 although quite a few devs do. Just try to understand how a specific thing fits into the greater scheme of things, and learn adjoining things. 

**T-shaped**. However, if you have a good foundation in things that fit together like code revision like Git, JavaScript foundations, HTML, CSS, then you are more T-Shaped with a spike in React.

**Jack of all Trades**. This is a term that means you can do many things but you don't really do any of them well. A way to mitigate that is to get a spike in something, at which point you become T-shaped. So specialize, a little at least. Also ones you specialize in something you know what it takes and can do it again in something else. 

Btw, none of these are very nice terms, so don't label anyone like the above terms, just be awesome and helpful. Cheers