DEV Community

loading...
Cover image for 5 most underrated skills of a top developer

5 most underrated skills of a top developer

Anubhav Singhal ☃️
A simple guy in a complex relationship with computers and books. Software developer by profession, sharing my learning/experiences here.
・4 min read

You all might have stumbled upon blogs like "Best books you should read to become a top developer", "Best frameworks you should learn to become a successful developer", etc. We all aspire to be ninja developers, and so, we try to gain more and more understanding of technical concepts.

Today, I am going to take you through some of the most basic, yet important skills, that bring a very significant impact upon a developer's life.


#1 Touch typing

giphy

We have 10 fingers, and the standard Qwerty keyboard is beautifully designed to use each of our fingers all together, without even looking at the keyboard.

Still, I've seen plenty of developers who type with 2-3 fingers only. Most of the time they spend is looking at the keyboard and then checking on the screen if they typed correctly.

We got to learn to use the keyboard, before using a keyboard. Touch typing is one of the best productivity hacks for developers, you save a lot of time and energy.

Wanna learn touch typing? Checkout KeyBr, 10FastFingers


#2 Documentation

me-when-looking-at-the-code-i-wrote-two-weeks-43114931

Documenting a project is something that we all know is a good practice, but the least of us care to follow. Good documentation is one of the most important part of the Open Source world, includes information for contributors, applied coding conventions, file organizations, comments, naming conventions, programming practices, etc.

"Workers spend about 2.5 hours per day, or roughly 30% of the workday, searching for information."
Xenit

When you write clear and accurate documentation of your projects, not only it gives an easy way to others when they look at your code, it also works as an easy checkpoint for you while revisiting code after a week/month/year. It might be tiring at the beginning but very effective in the long run.

Check this: How to write a good documentation


#3 Data Structures and Algorithms

Today's developers

We're living in a world where data is more costly than oil/gold. More and more data is getting stored, processed, and slowing down the processing time of the systems, which costs tech companies a fortune. Effective and efficient use of these data is a challenge, and that's where DSA plays a very significant role.

Under the cloak of all your SQL and Linux commands are algorithms and data structures. Google manages to search plenty of information in a fraction of seconds, all thanks to its Page Rank algorithm. Spotify, compared to it's competitors, consumes least data and gives the best personalized music experience, thanks to its BaRT algorithm that analyzes every piece of audio to give you the one that Spotify is confident you’ll like.

Real-world problems that take months can be solved in minutes using the knowledge of DSA. Understanding of data structures and algorithms may not seem relevant in the development of small scale applications, but makes an exceptional difference in large scale applications.

For more interest, check this: Improving your Algorithms & Data Structure Skills


#4 Coding standards

hqIXH

Following standard coding practices have a very positive impact on the software and growth of the organization, it decreases security concerns and enhances performance very significantly.

Series of procedures are explicitly defined of each programming language, they can be for various aspects of the program written in that language and are considered as essential attributes of software development.

To structure a smoother process of maintaining the code and providing readability to the code, coding standards, and code quality are essential to be managed by every developer.

Read more: Importance of Code Quality and Coding Standard in Software Development


#5 Communication & Collaboration

Communication skills are equally as important as technical skills. It's said that failures in software teams result more often from communication issues than from technical problems. Just like every other aspect of life, communication and collaboration play a very crucial role in software development. Being a talented developer won't bring the desired results if there isn't a successful collaboration.

my-model-for-business-is-the-beatles

There are many success stories that I can talk about where effective collaboration led to a smart product. E.g. Twitter, Jack Dorsey was paired up with Biz Stone during a hackathon. He and Biz came up with the idea of Twitter, which today has 150M+ active users worldwide.

How to connect with fellow developers, and build up strong connections, asking for help, pointing bugs, and all together staying humble and polite is an art that every developer should master.

Learn more at Communication is Key to Software Engineering


These were the 5 most underrated skills of a top developer, in my opinion at least.

What do you think? Did I miss any? Put it down in the comments.


Find me on: Twitter | GitHub | LinkedIn

Happy Coding!

Discussion (34)

Collapse
leob profile image
leob

Nah ... :)

"Collaboration and Communication" should have been #1 ...

"Touch Typing" LOL are you joking, no that does not belong here (especially because personally I suck at it, haha) ...

and "Algorithms", that's so horribly overrated, I'll refrain from calling it complete nonsense, yes in academia and Computer Science it's super important but in RWD (Real World Development), especially Web, it plays oh so tiny a role ...

So reduce your 5 point list to 3 points and I'm all in (BTW why do listicles have to contain at least 5 items nowadays? good ol' "magic 3" is what I'd like to see more)

Collapse
dillonheadley profile image
Dillon Headley

After being a web developer for 7 years I finally recently invested some time into touch typing. And man it makes a huge difference! A customizable keyboard also helps. But yeah I can get my thoughts on the screen quicker and even my neck and back are less strained at the end of the day from less bobbing my head up and down. Don’t knock it till you try it bro

Collapse
leob profile image
leob • Edited

Right, I get your point - all of that does make sense, fact however is that I don't actually suck at typing - I can do it reasonably well, with more than 2 fingers, and without constantly looking at my keyboard ... it's not perfect by any stretch, but it's just good enough to not substantially hamper my productivity or jeopardize my health :)

If I'd suck that bad at typing that I'd only be able to do it with 2 fingers and I'd have to look at the keyboard all the time, yes then you'd be completely right - it would be bad. And well anyway I think by now I'm not gonna learn the perfect touch typing technique anymore, it's too late lol.

So yes, apologies for unjustly belittling this skill, which is important indeed - I just sort of assumed that any dev would naturally be at least at my level (or better) with their typing skills - which I assumed would be sufficient then.

Thread Thread
larsejaas profile image
LarsEjaas

What about challenging yourself? Sit down one day and learn the basics of touchtyping and then use 5 min. every day on practicing? It will take some time to learn this way, but 5 mins only! It makes a huge difference: trust me!

Thread Thread
leob profile image
leob

You could be right ... I'm okay-ish with my typing, but I guess I could be better.

Thread Thread
larsejaas profile image
LarsEjaas

Well, you never get to old to learn new stuff 😉 I was super fast typing without touch typing, I feel it´s more about typing more "automated" so more attention is on coding or writing really.

Thread Thread
leob profile image
leob

I guess you're right, well let's see, I definitely know I could be better at it, OTOH life is short and there's only 24 hours in a day, you know what I mean ... ;) anyway thanks for the advice :)

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

I am thankful to my high school computer teacher for teaching me touch typing, and yes it makes huge difference.

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

I had tought time deciding #1, #2..., #5. For me each one of them were equally important. I just moved ahead with what seemed right.

Collapse
leob profile image
leob

By all means, although I still think that "Collaboration and Communication" is just that tiny bit more important than "Touch Typing" ;)

Thread Thread
anubhavitis profile image
Anubhav Singhal ☃️ Author

Hi, Leob

I agree with you, but again, this article is not about which skill is more important, but which is more underrated.

Lots of people know about documentation, there are numerous blogs for writing good documentation, but touch typing, a simple productivity hack, no one is talking about.

Hope you understand my point here.
Thanks.

Collapse
foresthoffman profile image
Forest Hoffman

1000 points for listing communication! I started my career thinking that soft skills and the humanities were completely useless in the software engineering world. OH BOY, I was so wrong. Now, I'm a firm believer in fluid communication and building patterns that allow teams to communicate easier and more effectively.

Nice post! :D

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Thanks, Forest.
I am glad you liked it.

Collapse
leob profile image
leob

Performance is of utmost importance, but in most cases it's achieved by applying "best practices" like using your framework's ORM or database library correctly (for instance use eager loading, use SQL joins, define database indexes), using caching where needed, properly designing your database schema, and so on.

But, I'd argue that most of that has little if anything to do with "algorithms". Most web/app developers are never going to program their own bubblesort or quicksort or whatever (let alone their own encryption or security), they just use the most suitable "sort" or "crypt" routine provided by their programming language or framework, whether that's JS, PHP, Ruby, Rails, Laravel, Node or whatever it is.

So performance, yes, important - theoretical knowledge of algorithms, no not really, UNLESS you want to design programming languages, compilers or frameworks.

(analogy: most people are perfectly able to drive a car without knowing or understanding how the combustion engine and all of the other technology inside of it work "under the hood" - but if you want to become a car mechanic, or a designer, or an engineer, yes then of course it becomes important)

Thread Thread
horomancer profile image
horomancer

wait in your analogy are devs just car drivers? i figured they would be more like mechanics, or maybe modders, and the consumers of their products would be drivers.

Thread Thread
anubhavitis profile image
Anubhav Singhal ☃️ Author

Exactly, Horomancer.

Thread Thread
leob profile image
leob • Edited

Analogies only ever take you so far, but yeah if you're a dev and you're not actively developing (or modifying the internals of) your programming language, compiler or framework, yes then you are a user of that tool ... the "driver" so to speak :)

Maybe that's not a popular view, because we like to see ourselves as geniuses, but it's a practical and realistic one.

Collapse
kg_thebest profile image
Kaique Garcia

I learned typing with my mom, hahaha
Not WITH her, but I learned it just to teach her when I was 8 y.o.
Now my new partners keep sending me that black cat meme typing super fast hahaha

Sounds totally normal to me, but it's true: study typing, it's worth it.

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Exactly, it's so worth it.

Collapse
christyc92 profile image
Christy Campbell

Number one biggest underrated skill in a developer for me is the ability to manage their focus/effort. This can range from the small (cases to tests, meetings to decline, minor comments in a code review to ignore) to the large (pushing clients to allow a feature to be delayed so that an MVP can be shipped, writing tools to remove manual process from their ownership). The best developers I have worked with are masters of spending time on the important stuff

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Hi, Christy
I agree with you, it's just that I wanted to focus this article more on developer skills, and ability to manage focus/effort is a skill that is, irrespective of profession, a very important skill.

Collapse
aatmaj profile image
Aatmaj

Nice post!! Beautifully explained!
Al the skills are a must have for all the developers.
I especially liked your #2 skill of documentation. Here is my post upon the importance of documentation
The Memes and the quotes were really nice! Hope that the developers of tomorrow would definitely learn from this invaluable piece of advice..... :-)

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Thanks, Atmaj
Glad to know that you loved it.

Collapse
sjatkins profile image
Samantha Atkins • Edited

Fortunately I took typing in high school back in the days of dinosaurs. I sucked on old selectrics in the days before built in editing abilities. But I trained the muscle memory. Then I retrained it for DVORAK which is scads better in every way and especially on the hands.

Anyone that things Data Structures don't matter is out to lunch. Not fun reading code that was hacked on to only used simple arrays and perhaps a POJO or two when that actually obfuscates what the code is trying to do and makes it less efficient than it could have been with a bit more knowledge of common data structures and algorithms.

Some coding standards make tons of sense and some are completely arbitrary and worthless conventions that it would be better to have software do for you. There are better things to focus on to deliver quality maintainable software.

Refactoring didn't even make the list? Taking the extra trouble to have clean composable reusable abstractions makes all the difference in the world when the specs or functionality inevitably change and expand. It will save many a rewrite and make you look like a super hero when tweaking parameters and composing some bits together satisfy what is needed tomorrow and needs to be delivered yesterday.

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

In days of dinosaur :lol

Btw, I very much agree with you.

Collapse
httpcyberdata profile image
httpcyberdata

As software engineer, this post there could be a remake of 100 underrated skills of developer and not just 5. The top software engineer should know how to use VPS virtual private servers for hosting software web app over the air and use version control systems to track progress of engineering.

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Yes, there is so more to discover.

Collapse
biffbaff64 profile image
Richard Ikin

Touch typing has never been particularly important for developers. It's about what you type not how fast you type it, as long as it's not too slow obviously.

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Yes, It's not particularly important for sure, but again, touch typing is the best way to type fast and efficiently.

Collapse
winstonpuckett profile image
Winston Puckett

Should 2 be in this list? Documentation is a failure to express yourself using code. It's necessary sometimes, but shouldn't self documenting code be the thing we strive for?

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Hi, Winston

Self documentiing code is surely an awesome thing, but again in more complex systems, it's tough to navigate through codebase. Documentation does the charm, and it's also helpful for begineers to read and understand one's project.

Have a nice day. :)

Collapse
vijayvenkatanarayan profile image
VijayVenkataNarayan

Wonderful!! Must read this often to keep it on top of my head
Thanks!!

Collapse
anubhavitis profile image
Anubhav Singhal ☃️ Author

Glad to know you liked it.