DEV Community

What are the key skills necessary to be a competent developer?

Jeky on November 29, 2019

Asked myself this question today. Wondered what others thought. —— Obviously we’d have to define competency. But interpret it as you wish. It...
Collapse
 
chrisrhymes profile image
C.S. Rhymes

The most important thing by far is having stickers on your laptop

Collapse
 
technomad profile image
Tech Nomad

No. The most important thing is to have the RIGHT stickers on your laptop!!! And what‘s right depends on your environment. And it‘s important to have stickers which you can easily pull off after a trend has passed by.

Collapse
 
chrisrhymes profile image
C.S. Rhymes

I just stuck a DEV sticker on my laptop yesterday. It came with my hacktoberfest tshirt. Can’t get more right than that surely?

Thread Thread
 
technomad profile image
Tech Nomad • Edited

yep, you're a trendy mf dev ;)

Collapse
 
avalander profile image
Avalander
Collapse
 
karmablackshaw profile image
KarmaBlackshaw

hahahaha

Collapse
 
axelledrouge profile image
AxelleDRouge

Ok that cost me 1min of my day laughing alone like an idiot :D but it was worth it

Collapse
 
jeky_zero profile image
Jeky

😂😂😂

Collapse
 
cjtaylor1990 profile image
Corbin Taylor

The most essential in my mind are the ability to adapt, to learn, to effectively solve problems, and to collaborate well with others.

Collapse
 
_jgawlik_ profile image
_jgawlik_

Agree 100%

Collapse
 
jeky_zero profile image
Jeky

Agreed, these are pretty robust qualities for a developer to have Corbin.

Collapse
 
mjsarfatti profile image
Manuele J Sarfatti • Edited

In my experience the single most important thing is to be able to see and understand the big picture. If you don't you might be the cleanest code writer on Earth but you'd write the wrong features, you might be the best problem solver but you'd solve the wrong problems, you might be the most detail oriented but you'd focus on the wrong details. It's harder then it looks, after ten years coding I still make the wrong decisions all the time.

Second to that, that there is no black and white, everything is nuanced, everything has tradeoffs. There is no one way of writing something, there is no best language or best library, there is no "single most important thing".

PS: I'm assuming we are talking about "hard" skills only

Collapse
 
jeky_zero profile image
Jeky • Edited

Very good points, I didn't, initially, think about it from this more systemic perspective. So it's a really interesting take you've put forward.

Just playing devil's advocate here, but do you really need to understand the big picture to be a competent developer?

Because what if a senior dev, or some other team member was responsible for the big picture, and gave you accurate specifications/requirements? And you pretty much just had to figure out how to implement it in the best way, or come up with a solution within strict confines.

In this sense I think it could be a really competent developer without necessarily knowing about the big picture.

Or what if you were working on a system that was simply too big/complex to understand entirely, and you could only code a small part of it?

And then, let's say, your fundamental skill for competency was understanding the big picture. If you couldn't problem solve well (for example) you might never be able to reach the end goal, anyway.

Whereas you might solve the wrong thing a few times just coding but eventually through iterations/trial and error you could achieve a sufficient outcome.

So it seems you can have some skills that are not 'big picture', and still get somewhere, whereas you you might not get anywhere with 'big picture' alone.

Obviously this is being deterministic to illustrate the point, because I'm looking to distill the most fundamental skill(s).

Having said all that, I do think 'big picture' is a very good one, and is very important.

I'm not sure of the answer, haha, this is why I started the discussion.

Collapse
 
mjsarfatti profile image
Manuele J Sarfatti

Well by “the big picture” I don't necessarily mean EVERYTHING. But you need to be able to look bigger than the tasks you've been assigned, for a number of reasons. Nothing is ever developed in a vacuum, not even the smallest of tasks.

Thread Thread
 
jeky_zero profile image
Jeky

Indeed, appreciate your responses Manuele 👍

Collapse
 
iamsolankiamit profile image
Amit Solanki

In my experience I would say, some who understands the big picture on why are we developing something, make him very competent, which brings me to the second point of being curious and willing to sit down to understand and improve. These along with having empathy for previous developers, especially when working on legacy code, and the code might not be the most efficient and refactored to the current best practices.

So to list they would be.

  1. curious
  2. Empathy
  3. Big Picture.
Collapse
 
murrayvarey profile image
MurrayVarey

Vigorous use of the Delete key.