What’s the one thing you would tell a developer trying to take their career to the next level?
Emergent themes from a vibrant twitter discussion around software careers
Randall Kanna asked this question on twitter to her audience of 36,000 followers. A lot of responses were received. In this post I attempt to summarize them for you. After going through the hundreds of responses, there seemed to emerge certain themes. I have tried to present the themes and then add color around each theme.
Communication 📢
Among the themes that seemed to resonate the most with tweeple was that around communication. Communication is a two way street. As a developer one needs to be good at both - being able to communicate ideas outward, and also being a good listener of other peoples ideas.
Communicate. It doesn't matter how good you are at software development if nobody knows about it. (link)
Listen. The developers around you are intelligent people with outstanding backgrounds and experiences. Listen to their perspectives and insights with an open mind and you will grow exponentially. (link)
A communication hack to consider is Hype Docs. I have written about this earlier but the idea, first presented by Marie Chatfield Rivas essentially says that in order to help one’s manager see all the work they are doing - keeping and constantly updating a hype doc with details of work the the developer is proud of, can be a good way to get to the next level.
Learning & Curiosity 🤔
Another theme that emerged from the responses was around learning / growth mindset.
The entire process of being a developer is learning. It really doesn't matter whether you master a language, because your job isn't to maximize the useful lifetime of old languages or methods. It's to find new ways of adapting new methods to new functions and old systems. (link)
Listen. Communicate. Remember that you’ll never know everything. Keep learning. (link)
Write everything down. Be a source of knowledge and answers your team can't afford to lose. (link)
Don't forget to work on yourself. The higher you go, the more people/leadership/communication skills you will need. (link)
Our industry is constantly evolving, and so are the domains around which we build software. Evolving with the times is crucial to survival. But those who take advantage of the constantly changing nature of our work are the ones that really excel.
Very closely related to learning is curiosity. Don’t just simply copy paste things. Try to ask questions around why something is working? What does it work the way it does? Don’t be afraid to ask questions. Let go of your ego and try to aim for deeper understanding.
Understand the internal working of the tools and libraries that you use frequently (link)
Ask all the questions you need to ask, and take exhaustive and searchable notes. (link)
Mentorship 🧑🏫
A strong theme emerged around being a mentor, as well as finding mentors. The idea being that the process of mentoring or teaching someone forces you to get deeper understanding of the subject, and also makes you better at communicating technical concepts:.
Mentor someone. Teaching will improve communication skills so much. (link)
Start sharing what you know. Give webinars, pitch to conferences, pair with newbies, volunteer at community teaching events, record YouTube Tutorials. As part of doing this, reach out to the other people in your networks and at your employer and ask how you can help each other. (link)
On the flip side, one of the best ways to really up level your skills is to surround yourself with senior software engineers who are experienced and are generally respected. Personally I have (& continue to) benefitted immensely from being surrounded by A-players who are stronger and sharper than me. I learned this from a soccer coach. He used to see me get dejected by having to play around teams that consisted of taller and stronger players many of whom were faster than me. But he made me realize that every time we played against a stronger team, if we forced ourselves to up our game, even if we lost, it was a huge learning opportunity for us.
Learn from mentor who is e.g a senior software engineer or senior it consultant (link)
Find good mentors and teachers and then hold on to them tightly! A good mentor and teacher goes a long way towards helping you level up! (link)
Specialist or Leadership 💥
This wasn’t quite a strong theme, but I felt it important to highlight. At some point during the course of one’s software career there’s a fork in the road - should one go deep technically in certain areas and become a specialist. Or should one take on the engineering management route. To be clear this isn’t one of those decisions that cannot be reversed, in fact some of the strongest engineers and managers I know have switched roles around quite a bit. Yet, this is still something to ponder about. The sooner one realizes that path they want to take, based on the strengths they have, the better in terms of career growth. Either way, in terms of maximizing your impact as a software engineer, know that you need to make others around you better as well. I really liked how Jens Backbom put it below:
Perhaps think about whether they want to become a specialist or move into leadership positions? Ultimately you’ll have more impact helping 20 other developers go from 1x to 2x than if you go from 1x to 5x yourself. (link)
Just Do It! ✔️
Quite often I have seen people wait too long to the take the first step. Be it switching to a software engineering career, or switching tracks within software engineering. Or even something trivial as getting feedback on a pull request. Thinking that you need to be perfect the first time will hold you back. Abhishek puts is really well:
Don’t wait till you learn everything. Start working and learn along the way. (link)
Domain Knowledge 💡
One thing that many software engineers fail to absorb is that we are engineers. The job of the engineer is to solve a problem. It may or may not involve programming. The first instinct should not be to code. The first instinct should be instead to empathize with the user, and really understand the job that needs to be done.
Look outside code: what’s working for users and what’s not. Load yourself with context. Now you are the one who says: this feature also helps X. Let’s stop as it’ll hurt Y. We don’t need Z, things are working. Super powerful for your career, your effectiveness AND your users. (link)
Be a good team player ⚽
Building software is a team sport. This is not a solo sport. In our careers we want to go far, but many people mistake that and instead they want to go fast. As the old saying goes, “To go fast, go alone, but to go far, go together”. Our careers are long and we must try to go far. In order to do so, we need to be good team players.
Treat others with respect. It doesn't matter if it's your peers, users, or competition. Be a generally nice person doing good work, and people will notice soon enough (link)
Be a team player. Pitch in as much as you can to help others. Work cross team, listen, and collaborate. (link)
Be a kind, genuine human being that wants to help others. (link)
Summary 📈
Finally, if I had to summarize it all, I thought this tweet did the best job in capturing the essence of the discussion. \
Solve problems - don't care you do via code or in your head.
Kill ego and be open to new opportunities.
Don't shy to fail - failing in public is a good thing. The sooner you deal with your insecurities the stronger you will grow as a dev.
Passion - u Know!