I love the Lord of the Rings trilogy, more importantly the role Sean Bean played in the first movie. In case you didn’t know, any character that’s portrayed by Sean Bean in a movie or TV series has a high probability of dying. Some of his deaths can leave you speechless and confused, as they are more grotesque than others. For instance, his death by separation in the movie Black Death where he was torn apart by horses running in opposite directions. Although extreme, that’s exactly how I felt when I was asked by one of my accountability buddies about career goals for the next 2 years. Like Sean Bean’s body, I was all over the place!
I couldn’t specifically narrow down what technology stack I wanted to work with, as there was a plethora of languages and technologies that I wanted to explore. In addition, there were so many different opportunities like working with non-profit organizations and open source projects that were available to take advantage of. However, one of my immediate fears was taking a deep dive into a technology stack only to find out that it may become obsolete in the years to come. But in the midst of all of this internal confusion, I knew that I wanted to become a senior developer.
The definition of senior developer varies from company to company and is mostly determined by years of experience and the number of projects one has been involved in. However, it felt that there was an underlying metric that stood above all. This unknown metric became painfully obvious when my accountability buddy asked me reasons for jumping into the list of technologies I presented to him. And to add insult to injury, he followed up by asking “How are those things going help you become a senior developer?” Honestly, at that point I really didn’t have a good answer. So rather than putting my foot in my mouth, I conceded and my journey to find the answer(s) began.
I recently read Richard St John’s book, titled The 8 Traits Successful People Have in Common. Richard personally interviewed approximately 500 successful people with the goal of finding out the common factors for success in any given field. In the end, he was able to identify 8 traits that his interviewees’ portrayed. And presented them in his book. They are as follows:
- Passion
- Work
- Focus
- Push
- Ideas
- Improve
- Serve
- Persist
I won’t go into anymore detail, but you can get the gist of his research and his book from his TED-ED Talk.
In order the answer the question of “What does it really mean to be a Senior Developer”, I took Richard’s approach and interviewed a series of senior developers and sure enough found one word that resonated with all of the interview sessions. That word was Adaptable.
What does it mean to be Adaptable?
As long as you’re a developer you’re always having a new project to work on. The project can range anywhere from the implementation of an existing business process, an entire system re-write or even as personal proof of concept. Regardless of the type, there’s always some ramp-up time that’s involved. Now, I must admit that at some point, ramping-up meant acquiring all the information that I needed to start committing code and getting my task or feature done in a timely manner. Most developers are okay with that; just knowing the bare minimum to get the job done. However, after conducting my interviews, it was evident that ramping up involves much more.
Ramping-up on a project should be geared towards understanding the domain and using that knowledge to make design and architectural decisions. Knowing how your feature fits into the domain’s bounded context will eventually affect the application in the long run. Most believe that domain knowledge is something that only project managers have to deal with. Taking the “Just tell me what I have to do and I’ll get it done” approach to every task. As Martin Fowler once said “Don’t just be a code monkey“.
Now the word adaptable means being able to adjust to new situations or conditions. As such, in the context of Software Development an adaptable developer is one that can enter a project at any point in its Software Development Life Cycle and be able to exact change and produce results. In addition, an adaptable developer should be able to see a project through from start to finish. What I found interesting, was that ramping-up is an essential part of being adaptable. In fact, regardless of the domain, ramp-up time is indirectly proportional to one’s level of adaptability. Meaning the more adaptable you are, the less time you spend on ramping-up.
How to become adaptable?
When I started doing martial arts, my instructor would always have us do at least 100 squats before training. On other days he would have us stand in horse stance for as long as we can, even when we started shaking in the legs. This was all done so that we could build a strong base, as it was necessary to execute and display proper technique. Any karate expert will tell you that it takes a strong, solid base to land a powerful strike. The same principle is applicable in a career in software development. As such, building a strong technical foundation is the key to becoming adaptable.
One of the interviewees said: “The problems have not changed, but the tools have”. In fact the existence of these problems is what lead to the development and introduction of basic principles that are applicable in particular situations, such as Design Patterns and Domain Driven Development. Understanding the problem is a major factor in understanding and taking advantage of different tools or languages. On the flip side, it’s also makes understanding their limitations much easier.
Yes, tools are great! Technology stack even better. But in order to make the best of them, one has to understand and master the basic underlying principles that they are based on.
Conclusion
My research not only gave the answers I was looking for, but a compendium of good advice. A lot of the things that were said to me were not necessarily eye openers but served as motivators and guidelines that can follow fearlessly. Nothing Good comes easy, unless your idea of “Good” is a Scoop of Ice Cream, in that case Ben and Jerry’s here I come. But on a serious note, each career path has its own set of challenges, some being more challenging than others. But regardless of the demand, one has to put in the WORK. Bruce Lee once said “..you put water into a cup, it becomes the cup, you put water into a teapot it becomes the teapot…” Become adaptable my friends.
Leave a Reply