Wednesday, June 29, 2016

Senior Software Developer

New software developers are often asking themselves, and others, what is it that makes developers to be considered senior?
Some senior developers, also ask themselves if and why they are considered senior (usually when they are seeking a new workplace).
Is there a list of things that I need to do in order to become senior? I would say No, and yes. Well there is no algorithm to measure how much senior a person is. Seniority is a matter of experience. And yes, there are a few ways of gathering experience.

I laugh everytime I see the distinction of senior developers as those having 5 years of experience or more. Imagine a guy who started working on his first job on the 1st of July 2011. He should be very happy right now, because in 3 days he will be baptised "a senior", as it will be the 5th anniversary of his carreer.

I will try to summarize my thoughts here. Here we are with some pragmatic points I consider as general directions to what exactly software development experience is. And everything in this list comes with a lot of experience:
  • to know and recognize software design patterns
  • to know and apply what is known as best practices
  • to have holistic view of the solution or system or application
  • to be up to date with existing and new technology developments
  • to have the ability and mood to test and measure different things while designing a solution
  • to be able to define the trade of technicalities with business needs and time management
Experiment as a word contains the word experience. That's what experiencing things mean. Experience means conducting experiments, and an experience software developer is the one who has experimented a lot. And of course your experiments should be based upon experiments of other people. The programming languages you use, the libraries, the frameworks and the virtual machines are (successful or not) experiments of other people. If you are not based on others' experiments, then you would need to experiment on whether "if" works as it claims, or whether "for loop" loops exactly the number of times it should!

You get some sort of experience when you are reading a book or an article about a technology, but still, this experience is far from conducting an actual experiment.
You are actually reading the procedure and the results of an experiment that was conducted by someone else. That's not bad. It's great!

That said, the most purely experienced software developer is not the one who has read a lot. It's most probably the one who have participated in a lot of different projects.

I know people who are working on the same project for years. I can't say they are not experienced. They have achieved to master another aspect of the experience: "deep" experience is often mentioned.
This is the kind of experience that can probably be referred as "specialization". And of course, "deep" experience or specialization does not come by itself... You have to mention right after "what" this "deep experience" or "specialization" is in. I mean you must be specialized in something, right? It's quite contradictary to be specialized in something that is abstract or too general...

Last but not least: have in mind that keeping up with a project for years means that it's complex enough, at first, and above that, it keeps your interest high, it's challenging. In other words, it has to be an evolving project. Otherwise, you will be "specialized" or "deeply experienced" in such a small amount or range of stuff that could make you feel embarassed.