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

twitter logo ・1 min read

Asked myself this question today. Wondered what others thought.

——

Obviously we’d have to define competency.

But interpret it as you wish.

It could mean the ability to produce optimised code that meets a set of criteria.

It could mean being able to consistently and reliably produce a solution from start to finish in code, that functions as intended, without bugs.

Whatever you interpret, what do you think are the bare essentials to be competent?

I know it’s difficult without more specificity, but to counter that make it general or be specific by applying it to what you know/your expertise.

What is the minimum, the most fundamental, that applies most broadly?

twitter logo DISCUSS (17)
markdown guide
 

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

 

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.

 

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

 
 
 

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

 
 

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

 
 

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

 

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

 

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.

 

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.

Indeed, appreciate your responses Manuele 👍

 

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.
 
Classic DEV Post from Sep 17

SOLID PRINCIPLES: To start with Object-oriented programming

Jeky profile image
JavaScript / Jekyll SSG --- “...all singing, all dancing crap of the world” 🤡 Too many Domain name purchases, not enough time.