Maybe you’re stuck in your career and looking for that new ‘thing’ that will jump-start it back. Maybe you’ve encountered a technical problem that is just too big for your current state of knowledge. Hopefully neither of these things are true, and you’re simply looking to improve your craft and competence for the sake of becoming better. Whatever the reason, rest assured that there are things you can start doing today. Even right now, if you’re so inclined.
Over the course of my years in the industry, I’ve met a lot of great developers and technical people. Many of them had good knowledge of certain areas, knowledge that I now believe is very useful for ‘expanding’ the mind, regardless of its practical application. In fact, most of the architects at Sela have done all of the things I’m about to describe. Just one more reason why they’re such a kick-ass bunch of people to work with…
So, without further ado, here is the list, in no particular order.
1. Learn to Unit Test. It doesn’t matter whether you write test-first, last or driven. The very fact that you’re trying to take control over the many, many ways your code can break helps you write better code. When you’re writing tests, you’re actually writing the first client for your code. It is at this point that you see just how easy – or hard – it is to use your code, regardless of how smart/efficient/magnificent it is. This has the direct implication that your users are no longer beta-testers, but are given code that has some form of ‘guarantee’ with it.
2. Study Inversion-of-Control and Dependency Injection. IoC and DI are game-changers. Once the penny drops, you’ll never look at code the same way again. Rather than just talking about ‘low coupling’, you now have a practical approach for making it happen. Your classes and methods become smaller, more self-contained and testable. Ultimately, you write better code (which hopefully means less bugs).
3. Study functional programming. J.R.R. Tolkien (of The Hobbit and Lord of the Rings fame) describes his first encounter with the Finnish language as “entering a complete wine-cellar filled with bottles of an amazing wine of a kind and flavor never tasted before”. I can’t think of a more apt description for the experience of learning a functional language. In the .NET world we have F#, and have had it since 2010. Learning F# will immediately give you superpowers for writing code in the Microsoft ecosystem. But why stop there? If it’s a different flavor you’re looking for, why not try Haskell or Erlang? The new concepts that you come across (once your brain stops hurting, that is…) will allow you to see things in a completely new light and perspective. Here too you can learn new tricks for your code.
4. Give a talk. In front of people. Maybe gather a few colleagues over lunch. Or in a local user group. Or in an international conference. OK, so strictly speaking this doesn’t really enhance your technical knowledge. But being able to communicate clearly and get a point across is a fantastic skill to have. So pick a topic you’re interested in, research it, prepare an agenda and a talk and just go for it. The process of preparing for a talk is not all that different from planning and solving a difficult technical problem. In any case, you win.
I hope this short post helps in moving you forward on your journey to being a great developer. Happy travels!