If you haven’t read Successful Developer Career Strategies yet, do so right now! Cory House, Troy Hunt, Scott Allen, Julie Lerman, Oren Eini, Mark Seemann and Kyle Simpson answer questions on Career Strategy, breadth vs depth, and the skill and craft of software development.
Cory and I agreed on a very short conclusion for it. I kept my own commentary and personal opinions to a minimum on Outlier Developer to ensure I didn’t detracted from the words of wisdom from the experts. However I would like to share my own views here.
It is important to have some exposure to a few different languages, not for the purposes of using all of them in your day to day work, but to expand your understanding of what is possible to achieve in software development, and what the various trade-offs are.
Like many, I am a C# and JavaScript developer. It is more difficult to stand out as a specialist in this role for three main reasons:
1. C# and JavaScript are both very popular languages, almost everyone knows them to some degree – you can learn the very basics of either in a day.
2. Both areas are huge, especially in you consider the associated frameworks. Just keeping track of all of the new JS frameworks arriving is a challenge, and the .NET framework contains around 40,000 classes.
3. If you’re doing both, you only have half as much time to devote to either of them.
These are three of several reasons why I have so much respect for Cory – he never let either of these facts slow him down and has gone on to become a two time (and counting) Most Valued Professional in C# while also being heavily involved in JavaScript development.
What I think sets him apart from so many others is his communication skills. Of course his technical knowledge is also very good, but what is even better is the knack he has for being able to eloquently express ideas and concepts.
I don’t say this to put Cory on any sort of pedestal – he is the first to admit that he’s just an ordinary guy. In fact I was originally going to call it “All-Star Developer Q&A” but Cory didn’t feel comfortable with it, and one of our special guests came forward to suggest the new title which emphasizes the topic rather than the people. This taught me that self publicity should always be a by-product of good coverage of a topic, not vice versa.
No, what I mean to point out is you can always make excuses about how things are more difficult for you because of various circumstances, or you can see the opportunities out there and cease them.
We all come across new discoveries in our work all the time. In order to get recognition for that, we just need to share them. If like me you work as a full stack developer, it means there is always enough variety, and enough challenges, to keep things interesting for you. Even if you specialize in a particular area, there are still always plenty of new discoveries to be made.
What is an expert, anyway?
Broadly speaking, and especially outside of software development, it is not too hard to find examples of people who are generally viewed as experts, but who actually don’t know a subject too well under closer examination.
These people generally still reap many of the financial rewards associated with being labelled as an expert, but also make many knowledgeable people very wary of that “expert” label.
I believe that the main consideration is how confident you are teaching the subject.
For example here is a chart of how I view my own knowledge of different languages at the time of writing (and this excludes knowledge of frameworks).
(When I made this I completely forgot about my limited experience with C++, Go, PHP, assembler and the various VB languages. Although I think some of these are good languages, I now appreciate that I shouldn’t be pursuing expertise in those languages)
While beginners tend to view me as a C# / JavaScript expert already, the likes of Skeet and Crockford might consider me to be barely competent. The reason for this is the former group are in no position to identify the gaps in my knowledge, while the latter group can do so with relative ease.
I think the depth of someone’s knowledge can be assessed quite simply but how many times they can answer “Why?”. When I was a child I used to drive my parents to distraction by saying this word over and over again. After one or two levels deep, they felt that they were at a level of detail where they didn’t need to know any more.
“If you can’t explain it to a six year old, you don’t understand it yourself.” – Albert Einstein
What gets you noticed
Writing a book that collates existing knowledge can get you noticed, but my observation is what really gets a developer better noticed is to establish a reputation as someone who can think not just intelligently but independently. This means coming up with ideas and opinions that haven’t been voiced before. Having a blog and regularly updating it gives us multiple opportunities to demonstrate this.
The experience of writing the Q&A also taught me that most developers share the same passions, and are happy to help, often for free. When I contacted the six author / developers, I knew what busy professionals they were, and I was just hoping that one or two of them would agree. The fact that all of them agreed to take time out of their busy schedules to help shows that you never know what you might get unless you ask.
What did I miss?
I would like to hear your own opinions on this.
Is it better to have breadth of knowledge or depth of knowledge?
What do you think makes someone an expert?
What is an effective way of getting noticed?
Hello Kevin,
Great job for having these fantastic professionals to answer this set of questions.
I am sure it will be very valuable for developers out there like myself.
I must admit that, just like you, the work of Uncle Bob had a significant impact on my developer’s life, it changes the way I build software. I cannot imagine where I would be now without the SOLID principles and Clean Code.
Regarding your question about breadth or depth of knowledge, I think that the people you interviewed make us understand that both are possible and in my opinion “it depends”.
For me, an expert is someone who can answer most of your questions about a given topic. And if they cannot they still can give some advices to help you find the solution yourself. A good expert can also be a good mentor.
Thank you Julien,
I agree with everything that you say. That is a great definition for an expert that you give.
I am glad that I asked the developers about their inspirations. It is important to give recognition to those who have inspired us.
I am also glad that Oren gave credit to Michael Feathers because, amongst many other things, the spread of knowledge about the SOLID principles owes a lot to him as well.
When Robert C. Martin originally wrote about these principles, the were just individual acronyms and read SOLDI when read vertically. By creating the acronym of acronyms, SOLID, Michael Feathers made the principles much more memorable and accessible to the wider developer community.
I think it is telling that Robert Martin’s other 6 principles of Agile design, remain largely unknown. There is no good aconym of acronyms to be found for them.