“The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.”
– Edsger W. Dijkstra
As a developer — especially one at a junior level in terms of professional experience — one of the most difficult and most daunting experiences is to join a new team. Especially when that team mainly consists of more experienced developers — who, for lack of a better term, have done it all.
When looking for my first experience of working with a team of developers, building a real-world product, I placed huge emphasis on the team of people I would be working with. After thinking long and hard about my aspirations, I had decided that the best way for me to grow professionally and personally was working with a team full of humble developers.
hʌmb(ə)l — “having or showing a modest or low estimate of one’s importance”
My personal definition of humble, within the context of the team-focused software development world, is:
“an expert who is passionate about helping people learn about a certain technology, tool or framework”
Surrounding yourself with like-minded, humble, developers is one of the best starts you can give to your career building software. Developers who care about you and helping you grow your wide range of skills. Developers who ask why you are making a certain decision, not telling you what decision to make (at least without explanation); all in the bid to help you become an independent decision maker, who justifies their reasoning with careful attention to detail and stakeholder priorities in mind.
In the future, I will be at a stage in my career where I have the responsibility of a senior level software developer. Someone with experience building digital products and experiences; but also someone to mentor others who are starting on their journey. Thinking about what it may take to be senior in the technology world — faced with building things that have potentially never been done before, having no concrete definition as to what’s the right way to do something — just research, ideas and concepts you can call upon from past experience.
Juggling the above with having to make time to answer queries from less experienced developers. Queries that you may sometimes have no idea what the answer is. That’s hard.
Being a good senior level developer, in my opinion, is a little more than being able to turn water into wine with code. You need to be humble: passionate about helping people learn about a certain technology, tool or framework while being able to turn water into wine with code (and a whole load of other business-oriented concepts somewhere in the middle).
I’ve seen enough experts — excellently technically skilled — not care enough about helping others who are new or relatively inexperienced, putting people down because they’ve not heard a particular way of doing something. I’ve seen enough juniors ask a question; have a senior get up; fix the issue; and sit down without even a basic explanation of what the fix was; without asking the junior what they had tried up until that point, leaving them arguably more confused than they were before the fix.
I can vouch, personally, that finding a group of humble developers to work with — while very difficult to find — is absolutely the best way to kick-start your career in commercial software development.
I have no way to objectively measure working with humble developers vs. working with a team who aren’t very helpful; but all I know is that I love what I do, and a lot of that is down to the people I work with.
I firmly believe that as more developers try to be more humble, the more open and welcoming our community will become. The better our community will become.
It all starts with caring enough about others who, themselves, have shown a passion and aptitude to learn.
“It’s not at all important to get it right the first time. It’s vitally important to get it right the last time.”
– Andrew Hunt and David Thomas