Let’s start this post with an exercise: Pick a technology that you have been working the most in the past few years or months, the one that you feel more comfortable working on and ideally the one that you like the most. Now, if I ask you, in which level of expertise from the list below will you categorize yourself in, what would be your answer?
- Junior
- Middle
- Senior
Next other question, and probably, the most important, how did you get to that answer? What parameters did you take in consideration?
I have been asked this question several times and I always struggle on how to answer properly, first of all because I’m convinced that you can’t never evaluate yourself without being biased, additionally, it’s a matter of perception, you can be seen as a Senior for certain people or company but others could think that you’re a Middle and that you still have a lot to learn to become a Senior. Well, then, how can we know what we are? Furthermore, what do we should do to reach the next level?
For those who don’t know (like me), let me start by telling you that there’s a whole level above “Senior” and it’s called “Luminary”; In this category, you’ll find people like Uncle Bob Martin, Donald Knuth, Oren Eini (aka Ayende Rahien), Peter Norvig, Jon Skeet and Linus Torvalds. If you don’t know who these people are, please take a couple of minutes and Google them. Go, I’ll wait…
Anyhow, let’s go back to a most human dimension and leave the gods in the Olympus. While I was trying to understand “what level am I at”, I decided to do a proper research about what it means to be a Junior, a Middle and a Senior, and, as I expected, I found lots of different definitions and points of view, however, there were several things in common for each level; The main purpose of my research was not entirely to determine in which category do we fit, but rather, what can we do to keep improving in any level and start a path to reach the next one. As they say, be so good they can’t ignore you (So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love). Nonetheless, since we all start our careers somewhere, I’ll dedicate this post to the first level of expertise: Junior.
First of all, don’t be mislead by the word “Junior”, being a Junior is not bad or meaningless, it’s a very important role on every company, it comes with several responsibilities. A lot of people think that after two or three years of experience in one technology or technique, you suddenly become a Middle, or even better, a Senior… well, this is not necessarily true. I bet we all know at least on person who has been working on a technology for years and years, and for some reason, he is still unable to reach a level of expertise where he can dominate the technology or to coach others. Why this happen? Can you be a Junior in a Senior position? Unfortunately, this happens more than we’d like to.
Little disclaimer, as you probably know, there’s a trend in certain areas where they completely avoid using terms like Junior, Middle or Senior, instead, they use roles like Lead or Apprentice. At the end, in my opinion, we’re talking pretty much about the same thing: You start your professional career in one point and continuously improve to achieve the next step.
Apologies in advance to those of you that are not in the IT field, but I did my research based on the role of a Software Developer.
Junior Developer
noun: A recently graduated creature that, in most of the cases, is starting a career in the industry by landing his first real job.
noun: A not recently graduated creature that for some reason, has not found the right path to grow up on his professional career.
noun: A not recently graduated creature that has been stuck in a technology or a company that perhaps, is not motivating him enough to take the next step.
Some of you may think that at this stage, you shouldn’t require much skills other than have been graduated from the area that you’re applying for… wrong! Even a Junior should have certain technical and soft skills and not, I’m talking about knowing how to make coffee (although, it’s a very valuable skill).
I checked some job opportunities for Junior developers and the following list includes several of the technical oriented skills that big companies are requiring:
- Bachelor’s degree from an accredited college or university.
- At least one year of programming experience with C#, .NET, and SQL. Experience with REST and the WCF framework (.NET developers).
- At least one year of programming experience with XML, HTML/HTML5, JavaScript, and AJAX (Web Developers).
- Solid understanding of Object Oriented Programming (Web Developers).
- Experience using Interface Builder and Storyboards (iOS developer).
- Experience with integrating REST APIs into client applications (iOS developer).
- Professional work experience OR strong academic experience (i.e. projects, internships) using C# experience with Xamarin, Android development (Android developer).
- Minimum 2 years experience in PHP, Drupal, JQuery (PHP Developer).
- Experience with Java, Bootstrap, developing and consuming REST web services (PHP Developer).
- Familiar with Agile development processes and version control systems (Web Developers).
Desired technical skills:
- Ability to use dependency management systems such as Cocoapods.
- Knowledge of continuous integration tools such as Jenkins.
- Familiarity with distribution of apps to testers through TestFlight or other platforms.
Bonus point:
- Any of Spring Framework, Oracle, Cassandra, MongoDB, Redis, Elasticsearch, Lucene, solr.
And these are some of the soft-skills that the same group of companies are requiring:
- Demonstrable traits of initiative, work ethic, and ability to write clean and concise code.
- Good planning, organization, and work management skills.
- Maintain a good standard of coding and adhere to the same conventions as the rest of the team.
- Good verbal and communication skills.
- Good time management skills.
- Able to ask questions when needed.
That’s a pretty aggressive skill set for a Junior, don’t you think? Yet, having a high standard when hiring new people is the only way a company can stay competitive in the technology field, or any field for that matter.
A Junior developer is code focused, not development focused, and doesn’t understand the distinction (http://mattbriggs.net).
Nobody will be judging you if you start to reconsider the level of expertise that you chose at the beginning of this post. We’re here to help each other!
As a Junior, your curriculum will probably look a little bit empty, but don’t panic! There are alternatives. Assuming that you know HTML and CSS (at least, the basics), well then, buy a domain and build you own website, there’re several options where you can host it for very affordable prices.
Push your personal projects to GitHub. Companies will look at your GitHub profile and how active you are on there. Andrei Neagoie (https://hackernoon.com) recommends to make commits 5 times a week on your personal projects (they don’t have to be big) and also to try to contribute to some open source projects like freeCodeCamp.
The list below describes other skills that I also found listed for Junior developer positions, in my opinion, here is where the dividing line starts and if you start to consider them, you’re on the good track to reach the next level:
- Have notion of the security of a site or an application to prevent future problems of website security vulnerabilities.
- Good understanding of how to (accurately) estimate a work effort.
- Knows when to use a specific prototyping technique or method and able to explain to the team.
- Being able to change your approach and having a willingness to change.
- Being able to write and maintain clean code which is production ready, maintainable and documented.
- Self-motivated with a sense of ownership.
- Strong logical reasoning and solution oriented.
- Have code published in Github.
- Have participated at least in one hackaton.
Now, it’s time for you to work with this information and start making your next move. Don’t feel overwhelmed by the amount of skills that I listed above, the important thing here is that you begin the journey today and don’t keep postponing it indefinitely.
Remember that achieving the next level requires time and effort, don’t give up!