One more interesting talk from Talking Code. They are interviewing Louisa Barrett of Haught Codeworks and the talk is about how to become an effective junior developer.

What you are going to listen:

  • 01:54 - Who is a junior developer?

  • 02:59 - How did you go from going to an art school to wanting to learn about code?

  • 06:43 - How long did it take to become a junior developer?

  • 08:14 - How comfortable were you when you first started working out of bootcamp?

  • 09:16 - How well do you feel that the dev bootcamp prepared you for starting a job?

  • 11:39 - Why is networking so important?

  • 14:02 - Why is it so hard to find a mentor?

  • 15:17 - What does a mentor help with?

  • 21:27 - What is the difference between a helper and a teacher?

  • 26:04 - How does one become a better teacher?

  • 28:56 - Once you get out of a boot camp, what kind of companies are best to join?

  • 36:18 - How to junior developers get off on the right foot?

  • 37:48 - Why is pair programming important?

Who is a junior developer?

Junior developer is someone who has just finished boot camp or university and is in search of a job or already got a job and is trying to understand its own role in that job.

I agree with her definition, although I dislike boot camps, but I would also add that a junior must satisfy the following:

  • TDD;

  • Clean code;

  • Design principles and patterns;

  • Code refactoring;

  • Source control;

  • Databases (Relational and NoSQL);

  • At least one framework for web development.

I left loads of other things outside that tiny list, but I consider them a must if I were applying to a junior position. That is not to mention the obvious theoretical background needed, which some boot camps might lack and are better provided in an organized and structured way by a University's degree.

One of the hosts comments about graduating from Computer Science and having a feeling he needs to start from scratch, because his college degree didn't prepare him for what the industry would require of him.

Lets pause for a second and contemplate this wisdom:

Computer Science is not Software Engineering. And it is not programming.

Now lets work on that. Software Engineering is about design and developing of a software in a professional environment. It is also a discipline inside Computer Science, like many others. Computer Science is applied Mathematics: taking all those courses in math is needed because they provide you with a basis to understand the topics discussed in CS. Programming is a tool used in Computer Science and is also the learning of a particular programming language and its ecosystem (think of C# and .NET Core). If you want to study the theoretical foundation of computation and you are also interested in computers, then Computer Science is for you. You won't learn git at a University degree, that is for sure.

What kinds of companies are better to join as a junior?

She mentions three categories:

  • Product company: this is actually the first best choice, as it gives you the opportunity to work on one code base to understand it very well. They might also allow you to move slowly.

  • Agency or consultancy: not a great choice, in my opinion. Too much hopping around many different projects, different code bases and as a junior you are a risk to the company hiring you, because you will have to be paid based on how fast you can move. We know a junior moves slowly.

  • Startups: just no. Not as a first job, at least. Not without experience. Not as a junior. Never.

  • Bonus: don't be the only engineer/developer (being there; doesn't work)