I’ve had a lot of occasion lately to think about what makes a developer a “senior” or the sort of developer who’s your go to for solving a tough coding problem. Like so many things in life I can only define senior in terms of negatives–that is what is it that junior developers lack that seniors seem to have. I can list some of them and I’d love to hear from others as well.
1.) Only knows one development language. This is to my mind the hallmark of the beginner. And please don’t misunderstand me; I’m not faulting juniors. We all have to start somewhere. But if you only know one development language, no matter how well you know it, you’re not a senior. In fact I’d venture to say that seniors usually know at least three languages and they’re fluent in them:
A scripting language: e. g. python, ruby, bash etc.
A database language: SQL but also some understanding of DB theory and DB structure. That is, if you ask a senior about a primary key he or she won’t scratch his or her head and say “what’s that?”
The language they use for the day job: Java, C#, C++ etc.
2.) Knows nothing or next to nothing about data structures. This is one that I expect people could make a strong argument against–most of us don’t need to roll our own linked lists or queues on a daily basis. But there’s a large difference between not needing to write data structures and being totally ignorant of the concept. I’ve never needed to write a doubly-linked list but I know what one is and I have a notion of how I would encode it.
I also realize that a lot of us are self-taught. No matter. I wouldn’t trust an engineer that didn’t know the properties of the materials he or she is designing with; I don’t trust a software developer who has no conception of data structures or their properties.
3.) Knows nothing or next to nothing about using a CLI. Again given the advent of powerful IDEs I’m sure a lot of folks will disagree with me on this. So be it. CLIs are the developers’ power tools. If I want precise behavior and I want a repeatable build I want a CLI with a script (see above). Plus when it comes to IDEs let’s be honest–if you’re not doing a mainstream language (and mostly C# or Java) you won’t have an IDE. That leaves you out of 90% of the most interesting stuff going on in the realm of software development these days.
4.) Only goes to development conferences if someone else pays for it. If you’re not so hellbent on learning new stuff about writing better software that you won’t pay to go to a conference then you’re simply not a senior.
I realize that there are people who don’t have the disposable income to attend conferences. There are user groups in pretty much every major metropolitan area in the US and overseas as well–if you can’t pay to go to a conference then attend a local user group. Better yet present something interesting at the local user group–most of them are always looking for people to give their monthly talk. And if there’s not a user group that is discussing what you want to learn about then start one. The main thing is a strong, strong desire to keep improving your software development game.
These are just four of the qualities that I see lacking in many junior devs that want to become senior devs. I’d love to hear what anyone else thinks on this subject as well.