DEV Community

What do you need to become a great developer?

Anja on October 25, 2020

šŸ’”Curiosity
ā¤ļøSelf-love and belief in yourself
šŸ‘„ask for help and collab with other devs
šŸ“ˆkeep learning + improving
What do you want to add? Happy Sunday. 🐿

Collapse
Ā 
isarisariver profile image
isarisariver •

While (!greatDeveloper) {
practice()
}

Just build stuff. Courses are great for the basics, after that start building something. It can be anything that interests you. For example a Twilight quote generator or a vegan recipe search machine. Every project will present new problems which in turn teach you something new that you can use in your next project.

Collapse
Ā 
anja profile image
Anja •

Hi Marian, yes projects accelerate your learning rate and inspire you. šŸ˜ŠšŸ‘

Collapse
Ā 
ssimontis profile image
Scott Simontis •
  • Learn to make a persuasive business case for your proposed solutions. The coolest technical implementation doesn't mean anything if you cannot convince your superiors that it's a good investment and that it will make everyone's lives easier.
  • Automate repetitive tasks. You will learn a lot in the process of automating the task, and it will save you time in the future to work on more interesting ideas.
  • Ask why. Why did the system fail? Why didn't we get any alarms from our APM system before it crashed? Dig a couple layers deep when things go wrong to understand the root cause of the issue. Similarly, bugs may be symptoms of much more serious issues in the codebase that need to be discovered and dealt with.
  • Write good documentation. Preserve knowledge within your organization and make the onboarding process suck less for the next person who comes along.
  • Choose your battles wisely. There's a million things you could fix in some code bases, but what will deliver value now? You can't debate the merits of every fix, sometimes it's fairly evident that code needs to be fixed but the timing isn't right. You can only crusade for so many causes without wiping out the enthusiasm of your coworkers and supervisor, so make sure to get them involved with the cause when it really matters.
Collapse
Ā 
billernet profile image
BillšŸ’” •

Excellent list! Agreed on all points.

Stepping back and asking why is a hugely important skill to have. You may be able to say "This broke because xyz happened and we can fix it easily", but ask "why did xyz happen?", "Did xyz cause anything else we've not discovered yet?", "How should we handle xyz in the future?", etc. This applies to all sorts of work in development and doesn't stop at code.

It's also worth repeating that it's repetitive tasks that should be automated. We all know that one person who spends hours automating something which could have been done manually much quicker, and their automation is never used again! Unless you're doing it purely as a learning project, I would recommend only automating tasks that are done frequently, or tasks which are done occasionally, but would benefit from automation to reduce human error.

When writing documentation, don't be afraid to write partial documents as it can be off putting if you think you need to document an entire process at once. You'll find some notes are better than no notes.

Put your documentation in source control! Not only does it protect the history, it also helps make it accessible to other members of the team. I've implemented a build pipeline using Azure Devops and DocFX, where once changes to documentation are committed to the Git repo, the documentation website is rebuilt and deployed with the latest changes.

Collapse
Ā 
anja profile image
Anja •

Thanks for sharing all these important points!😊 You should create a separate blog post from them šŸ˜ŠšŸ“

Collapse
Ā 
recursivefaults profile image
Ryan Latta •

I think great developers, in addition to the Anja's list, solve real problems. I see a lot of developers focus on the solution side too much.

There is way too much code written that is never executed.

A great developer knows how to involve themselves deeply with customer, user, and stakeholder needs so they have a sense of what problems need to be solved and which ones are just going to be a source of bugs later.

Collapse
Ā 
julianoe_ profile image
Julien āœļø •

šŸ” Know how to research : being able to find answers to your problems is a major building block to progress and solve challenges as a developer.
šŸ“ Share your knowledge : as a developer you often heavily rely on the works other people put in sharing their experience and writing about great things they discovered. Do your part, share yours.

Collapse
Ā 
aminmansuri profile image
hidden_dude •

Learn to code defensively:

  • use assertions (or better: permanent assertions)
  • logging
  • unit tests
  • debug your code instead of executing
  • hallway useability reviews
  • rubber ducky code reviews
  • code reviews

The bug is the enemy, pull out all the weapons against them.

Collapse
Ā 
anja profile image
Anja •

Thanks for sharing! 😊 What's a hallway usability review?

Collapse
Ā 
aminmansuri profile image
hidden_dude •

Actually it's "hallway usability testing"

see this article for an explanation: joelonsoftware.com/2000/08/09/the-...

Collapse
Ā 
cchana profile image
Charanjit Chana •

Can’t argue with any of those points!

I would add one more which could be controversial: Knowing when to move on šŸƒ

Sticking around in toxic or a less than ideal environments not only makes it hard to progress yourself as a developer. Even somewhere where it’s challenging, is it the right challenge?

What about your friends at work? For me, real friends have remained so even after we’ve posted.

If you don’t see the signs, you might not be able to help others around you to make them great too. That applies to new starters, juniors or just a colleague who needs some help.

I’ve been guilty of this and stagnated. I feel like I still did a really good job but was I ’great’?

Another would of course be time ā³

Easy to put pressure on yourself, but as with anything you just need to take the time and put in the work!

Collapse
Ā 
anja profile image
Anja • • Edited

Hi Charanjit, thank you for adding this! Yes it's very important to have a supportive environment that helps you to grow but at a rate you feel comfortable with. That's an ongoing topic for us devs, keep growing but don't burn out and have enough down time. šŸ§˜ā€ā™€ļø

Collapse
Ā 
toqeer__abbas profile image
Toqeer Abbas •

Tea or Coffee šŸ˜€

Collapse
Ā 
anja profile image
Anja •

True šŸ˜„ā˜•ļø

Collapse
Ā 
bobbyiliev profile image
Bobby •

I recently wrote a post on my 10 Tips for Being an Awesome Developer šŸ™Œ

Collapse
Ā 
anja profile image
Anja •

Great, will check it out!😊

Collapse
Ā 
andrewbaisden profile image
Andrew Baisden •

Great list. I would add planning and having a roadmap of what you want to work on and the problems it could solve.

Collapse
Ā 
imkiran profile image
Kiran Suvarna •

The first point is most important.

Collapse
Ā 
darkain profile image
Vincent Milum Jr •

Stubbornness. ĀÆ_(惄)_/ĀÆ At least that's what worked for me. Too damn stubborn to give up on anything.

Collapse
Ā 
anja profile image
Anja •

Yes keeping on it is key šŸ˜ŠšŸ‘

Collapse
Ā 
cheahengsoon profile image
Eng Soon Cheah •

Communication also very important.

Collapse
Ā 
aliraza35690 profile image
AliRaza35690 •

Happy Sunday would do the job.

Collapse
Ā 
__orderandchaos profile image
Order & Chaos Creative •

Study hard and work hard for several years. Repeat.

Collapse
Ā 
hammadjamil92 profile image
Hammad Jamil •

Okay. i think hard work