loading...
Cover image for How to become a senior developer?

How to become a senior developer?

carlillo profile image Carlos Caballero Originally published at carloscaballero.io ・5 min read

Introduction

One of the main advantages of being a professor in the university and in the vocational training centers for more than 12 years is that I have been able to witness the professional maturity of my former students.

To this day, the first of my students are architects, project managers and, of course, senior developers. The close relationships we have kept since the beginning, allows me to have confidence with them to talk about their professional maturity and to be able to extract signs and professional attitudes that make them senior developers.


Acquire valuable experience

In this article, I will try to summarize my personal experience about the different signs that I have detected in all of them when they stopped being junior developer to become senior developers.

If you want to become a senior developer you must follow the next natural cycle of software development

  1. Make mistakes.

  2. Correct mistakes.

  3. Learn from mistakes.

  4. Share mistakes with colleagues.

  5. Return to point 1.

You should to think that this life cycle of mistakes will allow you to gain professional experience, and this experience is what will allow you to prevent them from happening again; and even more, it will allow you to warn and teach Junior developers that these errors are there.

The experience will make you a senior developer.

The passage of time is not what will make you a senior programmer, do not wait to have +2 or +5 years of experience in a technology to call yourself a senior developer. It’s the number of times you go around the life cycle of mistakes what makes you gain experience.

We will now analyze the qualities that develop in this cycle of acquiring valuable experience.


Research

Research is a fundamental requirement to be a senior developer because, thanks to research you will end up testing solutions to hard problems. That is when you will get experience. Therefore, the fact of researching will lead you to learn more about a specific topic without being a mandatory task due to your labor issues.

Another side effect caused by researching is that new tools, concepts or patterns are tested in your personal experience. The fact of testing a specific technology allows you to analyze the pros and cons in a more real way since the pros and cons are being “touchable” with their own examples.

Therefore, senior developers are not always doing the same task but are constantly researching and testing to reinforce their learning.


Find the answers to every “Why”

Senior developers never accept “it has always been done that way” or “because I say so” in response. Good developers are constantly wondering why issues are solved in one way and not another. This allows us to reflect on the processes and improve them with the passage of experience. This is where a developer’s time is really treasured, by the amount of “Why” he has managed to solve.

Not only do they try to solve the “Why” of others, but also their own ones. At the moment they have a code or system that works and they don’t know the reason they have to find out what is going on. If you think about it, they are really looking for a possible bug or learning a concept that they had mistaken and hence their “Why” question.


Mentoring

A turning point in the career as a developer is when you start mentoring other programmers younger (in the profession) than you. It is a great mistake to consider someone a great developer if he is unable to work in a team, unable to communicate properly with their peers and especially if they are unable to mentor another fellow professional.

At the moment you start mentoring a junior developer, synergies begin both ways. The junior developer will begin to listen to the “war stories” of his partner, and if he is curious (point 1) he will begin to investigate to chart his own path towards being a senior developer.

But, not only does the junior developer benefit from mentoring in this case, the senior developer will reinforce his soft skills as well since he will have to communicate with someone who has less work experience and therefore will have to look for adapted metaphors or examples. Teaching another person strengthens your knowledge exponentially. In addition, the transmission of knowledge is not unidirectional from the senior developer to the junior developer since the junior developer (if it is curious) probably introduces fresh air to the senior developer reinforcing him about the knowledge of the latest trend that, due to lack of time, could not be reached by the senior developer.


Admit What You Don’t Know

It is very popular the quote in which it is said that the three most difficult words to say for the human being are not “I love you” but are “I don’t know” (Freakonomics Bestseller).

It is hard for people to admit that we don’t know something since we may seem ignorant, inferior or worse than other people. This is further aggravated when our role in the work context is assumed to have experience such as senior developer.

However, the great senior developers are the ones who quickly admit when they do not know, have not gone through or are not sure. This fact will allow them to learn it. This feature in a senior developer fits perfectly with the previous points in which we described that senior developers try to find the “Why” to problems and that they are people who “investigate.”

Therefore, and burn it on your mind:

Being a senior developer does not imply knowing everything but you have the ability to find solutions to problems.

Of course, these solutions do not have to be optimal the first time you find a solution. In the constant process of learning and improvement, you can improve the solution provided to your problem.


Conclusions

In this post, we have presented the personal qualities that a developer must have in order to become a great developer and over time reach the position known as senior developer.

The developers do not become a senior developer overnight simply with the passage of time but it is an inherent process to the person and therefore, soon you can detect those people who will end up being great professionals in the sector.

In any case, any of the points analyzed in this article will make you a better professional and are good practices for your day to day as a developer.

Originally published at https://www.carloscaballero.io on September 27, 2019.

Posted on by:

carlillo profile

Carlos Caballero

@carlillo

I'm PhD. in Computer Science from Málaga, Spain. Currently, I am teaching developers and degree/master computer science how to be experts in web technologies and computer science.

Discussion

pic
Editor guide
 

Senior, adjective

  • of or for older or more experienced people.

Both age/time spent and experience are factors in the definition.

We really need another word to use for "very experienced with mentoring skills", since that is what most people mean in developer context, the duality of "senior" makes for too much confusion.

Then perhaps we would not need articles to explain and debate what senior means' to them. :D

 

Does everything have to be defined in a literal sense? Seems like a great way to miss the point.

 

If we leave things up to interpretation then people are ultimately gonna disagree what things mean, which then leads to problems in my experience.

In the end this a rather benign problem relatively speaking imho, but a problem none the less. :)

fx. when a none teck person are looking for X type of developer, but by X they really mean Y, and the person reading it understands it as Z.

 

Does everything have to be defined in a literal sense?

Not necessarily. On the other hand do words with established meanings need to be overloaded? "Seniority" is a concept used in many different contexts, not only software development. Adding particular connotations and subtexts because they fit our specific discourse — or whatever someone believes that should entail — seems like a bigger opportunity to miss the point to me, but YMMV.

 

Great article.

I agree with your point on finding the answers to every "why".

I recall during my first job, while building a contact form for a client, I made the form submit user-input via AJAX, and display a 'thank you' message in real-time.

My 'senior' dev told me to make the form a 'hard form' which loads a new page on submission. It took way longer to do that than than the original implementation, and he didn't seem to care.

I asked why, and his response? "Because that's how we've always done things". 🙄

His credibility as a dev was shot long before this for similar stuff, but man, I do not miss working for that company.

 

Heh, I've been that Sr. — doing the "...because that's how we do things..." or the ever popular "...because I said so..."

When I really meant "...because there are conceptual flaws in your approach that don't work for our audience and/or client and I really want to explain but I'm already 2-weeks late on my own deliverables and don't have time to explain why your solution isn't optimal. So save your solution, but do it this way and we'll discuss it when this project's out the door."

Hopefully I (and your former senior) get better at communicating the latter. ;-)

I say that tongue-in-cheek — my experience likely has nothing in common with yours. I understand the frustration, though. I've been both the Jr. Dev and the Sr. Dev in that scenario. It's always hard trying to balance mentoring with just getting stuff done. The same as it's hard to be new, intelligent, highly talented and both eager and hungry to do awesome stuff.

 

I wouldn't be surprised if there was a little fear of the unknown happening there. If you stop learning it becomes tempting to shut out anything unknown, for fear of being shown to be obsolete.

 

A brilliant, former manager of mine (whom I respect a great deal and co-founded a famous company) once said:

After you make more mistakes than everyone else you get to be "Senior"

Could probably use a few caveats from your list, but is nice and concise.

 

Mistakes do not help automatically.

A senior is a developer that he (or she) knows how to get out of the mistakes.

 

Thanks, I really needed this encouragement. My impostor syndrome was sneaking back in, as I'm interviewing for a senior developer position, but this quote kicked said impostor syndrome in the teeth:

Being a senior developer does not imply knowing everything but you have the ability to find solutions to problems.

 

Really enjoyed reading this! Great post!

As a some what mid-level developer, without sounding overly confident or arrogant, it's nice to know i'm adopting some of the things you've spoken about while on my way to becoming a more senior developer!

 

I think the key take away here is "I don't know" but being able to rectify that by having the ability to know.

Ultimately being honest with your self and abilities, along with constant exposure from being open minded, sharing and connecting with others coming from a place experience is solid trade marks for being a senior developer. Plus being able to deliver!!

 
 

As a "senior developer" (in both senses of the term) what people want when the say, we need a senior developer is a dev with highly relevant recent experience to our stack. It doesn't mean anything anymore. And as for "junior developer"? That's just plain insulting. Its a dog-whistle for we pay poorly.

 

Amazing!
I never dared to consider myself as a senior developer.
Now I know that I am one.
I research a lot, I ask "Why?" all the time, I mentor with my writings and I dare to say "I don't know"

Muchas gracias!

 

Congrats!!!

You're welcome!

 

Best way to become a senior developer is to work in a Spanish speaking country. You become Señor Developer by definition. It's even cooler if you are a gal, Señora Developer!

 
[deleted]
 
 

Great article Carlos! Wow, hit it right on target.

 

Thank you for this article. I think that I found missing piece of my puzzle :)