5 Things Great Developers Do Really Well
Read. Practice. Create. Network. Listen. Consistently…
The path to greatness is a tough one and requires a tremendous amount of dedication and work. Expertise in our time is more crucial than ever and yet it is thrown out in exchange for fast career growth, salary increments, job security, etc. We live in a time where most of us want instant results. We look for some instant magic formula to resolve our problems.
“People around you, constantly under the pull of their emotions, change their ideas by the day or by the hour, depending on their mood. You must never assume that what people say or do in a particular moment is a statement of their permanent desires.”
― Robert Greene, Mastery
That is why there are so many get-rich-quick schemes promising us that we will make money just by signing up. But that doesn’t work. A proven way to make real change and get results is the compound effect. It’s the principle of reaping huge rewards from a series of small, smart choices. Success is earned in the moment-to-moment decisions that in themselves make no visible difference whatsoever, but the accumulated compounding effect is profound.
The deep sense of fulfillment comes from achieving something deep and meaningful. And understanding how great developers operate will help you realize your true potential. There is no hidden secret but there sure is a set of habits that you can instill into yourself.
Read. Read. Read
Great developers read a lot, having a broad library of books is essential, as they provide a deep understanding of the subject in question. Favoring books that teach fundamentals of something.
For example, I am currently reading this book called Designing Data-Intensive Applications by Martin Kleppmann and it has everything you need to know about building systems that scale, are reliable, and resilient. The focus is not on a particular technology but on the concepts of distributed systems. These are conceptual books.
Other types can be behavioral books, for topics like project management, soft skills, scrum, leadership, etc. Or influential books, which are a must-read for every developer as they are constantly mentioned in technical conversations. Some examples are Clean Code, Design Patterns: Elements of Reusable Object-Oriented Software, Domain-Driven Design, The Pragmatic Programmer.
If you don’t like reading then you can take up online courses instead. In order to kick-start learning a new technology, you can watch videos. They provide the perfect balance between theory and practice. Watch them at an increased playback speed to maximize the amount of material you can get through. Some of them offer industry certifications too. For example, Amazon’s Solutions Architect is one of the highly taken certification courses along with some Google certified developer courses.
Practice. Practice. Practice
You will always find great developers working on some pet project allowing them to play, experiment, and learn new technologies. Reading a lot requires practicing a lot. In fact, pet projects are like real projects without pressure — no deadlines, no restrictions on languages, no control on the requirements. There are lots of different products that started like that. Facebook is a well-known example in this category. And see where it stands now, having millions of users and a huge product offering.
There are several other ways to keep practicing and keep learning. Contributing to open-source projects is an excellent way to practice and raise your public profile. Just locate the project you are interested in, download the source code, inspect the codebase, make sure you can run it end to end, debug through, and are ready to get stuck in.
You can also become an active member of the question-answer community. You can actively contribute to Stack Overflow or Quora and help others. This might also help you refine your understanding. If there are gaps in your understanding, you will be able to catch that pretty quickly.
Create. Create. Create
As a developer, your primary job is to code. When you code, you create. The inherent nature of coding is that it produces something every time. Even the simplest of the code will produce an output making it interesting and exciting. There is so much you can do. You can create:
A digest of favorite Twitter accounts,
A quiz game for your favorite topic,
Your personal portfolio website,
A tech blog,
A YouTube channel
“If you don’t produce, you won’t thrive — no matter how skilled or talented you are.”
For example, if you start a blog, initially, it will be daunting to start something new, and you will think that only experts with original ideas should write blogs, or that your views might not be good enough, but you will quickly realize that writing will become an outlet to record your own learnings.
I started my blog around a year ago sharing my experiences and a few of the best articles I wrote are around developer productivity. One of my articles got published in hashnode's year-end ebook. You can find the links at the bottom of this article. Not to mention that blogging is a great way to have an online presence, establish your experience and passion in a certain area, and most importantly get live feedback from those who kindly read and engage with your content!
Network. Network. Network
One of the highly underrated attributes for a developer is networking. People do think that is important but nobody actually wants to do anything about it. And the reason is quite obvious — it is not so obvious how to network well. But great developers know how to break the ice and connect with like-minded people to improve and learn.
They attend conferences. They engage with fellow developers on Twitter and other social media platforms. They share their learnings and insights. There are so many great developers on Twitter who have a good amount of followers and they utilize their online presence to generate traffic for their blogs, podcasts, videos, etc. Tomasz Łakomy, Sarah Drasner, Dylan Beattie, Emma Bostian are a few examples that come to mind.
It’s easy to think of the time you spend browsing your favorite social network as a waste. But believe it or not, it’s one of the most important things you will do given you follow the right people and use the platform to your benefit. Twitter is a great way to network with fellow developers. You can tweet about anything, if you are working on a project and you find something interesting like a language feature or an easy way to implement an algorithm, you can just tweet that, and if it gets viral, you get to interact with a lot of people. And consistently doing this will get you, followers. And with that, you build an online presence.
Listen. Listen. Listen
Listening is an art that requires work, self-discipline, and skill. The art of communication springs as much from knowing when to listen as it does from knowing how to use words well. And great developers focus on soft skills as much as they focus on coding. A great developer knows how to listen and actually hear what others are saying.
I have learned that most people do not listen well. In this day when everyone carries around a smartphone or tablet, people don’t focus on each other when they’re together. Unfortunately, this holds true for many of us. Listening requires putting our own egos aside to listen to someone else. Epictetus, the Greek philosopher wrote:
“We have two ears and one mouth — for a good reason.”
It’s more important to listen than it is to talk most of the time. How else can you learn about what needs to be done to improve a situation? No one ever stops growing and evolving in his or her work and one of the ways to learn is by listening to others. And podcasts are just meant for that. They are tailored for people who like to listen while they are doing other stuff in a bite-sized format. A few of the good podcasts for developers are Ladybug podcast, Developer tea, Software Engineering Daily.
Becoming a better version of yourself doesn’t happen overnight, but this is the perfect time to start, and the content shared above is going to help you set a goal. The first step to start a journey is to know the destination. And I hope this will help you define that destination for yourself.
The illustrations on this post are awesome and free at [manypixels](manypixels.co).