5 Traits of an Excellent Developer (Part 2)
* good communicator
* deep technical experience
* refactoring skills
“/ˈhʌmbl/ showing you do not think that you are as important as other people” — Oxford Learner’s Dictionaries
Since not many people are talking about being humble in the software world, I must start with my definition: being open to learning. As simple as it gets. Since we are all professionals, — at least that’s what I’d like to believe -, we have standards. In my humble opinion, everybody can improve no matter how good they are and that is just a fact. A half a century old quote describes best the current situation: only a few know how much one must know to know how little one knows — Werner Heisenberg.
“Professionals have standards.”
Taking myself as an example, I needed 10+ years to figure out what I DO LOVE to do on a day to day basis and how I can get there. It is a journey for everybody, and the numbers are always relative, but since half of software developers don’t have more than 5 years of experience, it is also hard to expect a different outcome. On a scale of 1 to 10 knowing Java and software development, I grade myself between 7.5 and 8.25 because 12 years of experience enabled me to have a pretty good insight into the language and what surrounds it, not just writing code. Being SOLID in OOP, design patterns such as MVC, factory, builder, loving KISS, and having senior mentality and spiced with leadership qualities, still, I have to reserve the last two grades to the other professionals who are contributing to the language and are shaping the software world by going to conferences and spreading the knowledge almost daily. This is my attempt to give something back to the community.
“There is always room for passion.”
Being on both sides of the interview table, it showed me how much I’ve overestimated my view on my proficiency, and not just because I’ve met people who know a lot more than I do, but because doing my research, interviews, the process of interview, I’ve re-evaluated my value and knowledge. There is always room for improvement. In the last couple of years, I’ve switched jobs a couple of times and what I’ve learned is that there are two things that you can control in your professional work. The colleagues and the day to day work. Also, these two things will define how you’ll evolve. The single most important perspective in any profession is finding the best people around you and making sure you listen and learn. To be honest, I really love pair programming, it enables me to grow, to learn new techniques, and to guide the new generation. It is way more fun than the “come here little one, I’d like to teach you something” mentality or “since I am an architect, let’s keep it simple and lets assume I am right”. I never understood how teaching can be unidirectional, hence this should be advocated, not to mention, scientific papers are showing the benefits of pair/group programming, in the long run. It reduces bugs, enhances collaboration, builds culture and shapes values for the whole group. Knowing your limits always shows respect. Saying out loud that I don’t know the answer is the hardest in the software world.
Being senior does not translate to years of experience. Being senior is a lifestyle, way of work, mentality, always striving to improve. I can’t stress enough that this is a profession and it should dictate having disciplines, like TDD, DDD, BDD, values, and respect. The fastest way to learn is to teach others. The fastest way to grow into a senior is to help others to grow. If one sums everything up, the result is being humble.