We didn’t see a global pandemic coming when we made our new year’s resolutions last December. Moreover, we didn’t see a mandatory work-from-home policy for those professions that allow it—which, to some extent, has brought some “extra” hours in the day that we no longer waste commuting. Some of us are using that extra time to think about how can we make ourselves better. As an exercise of introspection, I put together a simple list of 5 habits that— if consistently practiced—will indeed lead you to be a better version of your software-developer self.
1. Surround yourself with people smarter than you
I realize the definition of “smart” could vary from individual to individual. What I really mean is that you take conscious effort to find individuals who already have what you want: a better version of your developer-self. A good benchmark, though not at all definitive, are the years of industry experience a fellow developer has. More YOE in the software industry means they’ve seen everything *screams in assembly*.
Seriously though, the more experience a person has, the greater the chance that they’ve experienced a variety of challenging situations—with code, projects, and people, so they can share them with you. Learning about something that would otherwise take years to experience by yourself, in a matter of seconds, minutes or days (depending on the lessons) represents a shortcut for you, a life-hack, and if you are blessed enough to be around people who have got what you want and are willing to share it, why not go ahead and take advantage?
This takes us to our next habit:
2. Get your code reviewed
Very early in my career I found myself working on few engagements/projects where the planning and execution was a wasteland. A code wasteland. Some of the developers did not even use a version control system and code was shared in a Dropbox folder. The only rule around any of the code was “we need it ready by yesterday.” Code reviews were a luxury no one had time to afford.
Soon after, I was lucky enough to join a team in which peer to peer code reviews where the norm. When I first tasted this bittersweet dynamic, I was amazed at how many things I failed to see myself while coding a solution. Turns out, I was making all sorts of assumptions (a sign of not enough questions being asked). I would fail to consider edge cases an end user could fall into very naturally (a sign of happy path-only testing). Or the abstraction of a component I designed could have been simplified by incorporating design patterns and basic software engineering principles (a sign of needing to polish my design skills). My perspective was broadened in a matter of days, just by getting more sets of eyes on my code. To me, this meant I would be able to design a better solution next time. Another chance to shortcut the path to self-improvement!
3. Share knowledge with others
When you share knowledge, you’re not only helping others, you’re helping yourself as well. Knowledge-sharing not only exercises your technical skills “muscle,” it also exercises a whole lot of other traits that are essential for you to be a better version of yourself. Whether in a 1-on-1 setting with specific team members, or a 1-to-many setting (like blog posts, tutorials, conference/tech talks) you challenge yourself communicationally because you need to find the best way to deliver your message, based on the setting. You want to be clear and educational, while making sure your style is engaging for your audience.
On top of this I would add, not only should you make a habit of sharing knowledge with technical people in your team; you should also share with the non-technicals as well. This raises the communication challenge to a whole new level because it forces you to learn how to actively “translate” all the technical jargon you use on a daily basis into simple (yet real) terms a “normal” person would understand. This is particularly important when it comes to communicating with broader teams that include, say, marketing, sales or senior leadership/management. Because if they can understand what you do, and the technical challenges you face every day, chances are they will develop a deeper appreciation of your work. Further, this opens the door for new collaboration opportunities you would otherwise miss.
4. Read books…
…not just blog posts. Though there’s an enormous pool of high-quality software development content online, books offer a unique, more polished view. Remember how I mentioned I was able to produce better code by getting more eyes on it? This is no different. Imagine that you have the opportunity for an unlimited number of 1-on-1 educational sessions with the top minds in the software development industry. How would you like a teaching session with Uncle Bob so he could explain how coding is all about craftsmanship and passion? Well, you have all of that in his “Clean Code” series. What about an intensive training course on refactoring techniques by Martin Fowler? Refer to his Refactoring: Improving the Design of Existing Code. Steering your career towards software architecture? What about a crash course in Fundamentals of Software Architecture? That’s what you get in Mark Richard’s book. From reading just these three individuals you have 50+ years of combined industry experience within your reach. Pretty cool, right?
5. Keep up with industry trends and community discussions
“The only constant is change” might be an annoying cliché in the software industry. However, with all that we’ve gone through in 2020, it couldn’t be more accurate. As a consequence, it’s never been more important to stay relevant on how our industry is adapting to overcome the challenges we’re facing. Participate in discussions with fellow developers to exchange ideas and gain perspective through remote collaboration.
I am subscribed to a few newsletters and follow a bunch of content producers on Medium for “serious” reads. Also, I follow technical conversations in Twitter for a more informal technical exchange of opinions. I do this to keep myself aware of what technologies/frameworks/trends are emerging or becoming industry standards, so I can consider a broader spectrum of possible platforms to support potential solutions to a software problem. I hope you found this information and advice helpful. If you have further questions around literally any aspect of software development, please don’t hesitate to reach out to us. We’d love to help you get started.