DEV Community

Ben Halpern
Ben Halpern Subscriber

Posted on

What software development skills only come with experience?

Some fresh-out-of-school grads are really good. Sometimes newer programmers have completely skipped over the hangups more experienced developers have gathered.

I'm often amazed at the skills of newbies.

But there are certain skills that literally can only be learned with experience. Let's talk about those.

Latest comments (87)

Collapse
 
felipperegazio profile image
Felippe Regazio • Edited

Architecture, for sure. Learn how to start a thing the right way, with a clear horizon and how this thing could scale is a matter of experience. You can learn some key points on books, but till you reach the perception of what points you should prioritize thinking on the customer, how this points may vary for different customers, and how it could drive you architecture, etc... Think in what problems you could avoid just making the right choice between two options that seems both ok. Man, thats a matter of experience.

Collapse
 
jaspekang profile image
Jasper K

All?

Collapse
 
danjconn profile image
Dan Conn • Edited

1) Knowing how to read people.

It's something that only comes with experience. I remember being a newbie and, because they said it rather rhetorically, genuinely thought the client wanted a tutorial of their website's functionality when they asked "What can I do with this?!?" 🤦🤦

2) Saying no to people

Saying no is really tough. But it is perfectly reasonable. If you are stacked then don't take on more work because the reason you've been asked might be that others have learnt to say no!

3) Learning to make a no sound like a yes

Sometimes when you're saying no to someone all the time they might think, rightly or wrongly, that you're just blocking them.
Learning to explain why you're saying no, perhaps letting them know the options you have, why taking their work can't be one and doing it in a way that is calm and not coming across as resistant sometimes takes a while before you can do properly.

4) Being able to nurture

There may be a point in you career where you start to teach others. I would say it's really tough to get the right balance. Sometimes you can come across as condescending, others you might not explain enough. It takes practice.

Collapse
 
beelzenef profile image
elena

Communication, writing clean code... but that's also communication, so that's all!

Collapse
 
sauloco profile image
Saulo Vargas

My guess: pragmatism

Instead of dreaming with the capabilities this system/app/feature has, you make them happens one by one.

If you are freelancer, or if it's your solo-idea, it's incredibly important, but if you are in a company and you're the last member of the last team it's incredibly important!

Collapse
 
omarel profile image
Omar Elbaga

What comes with experience is being able to actually put functionality together to make a cohesive product that is fit for production.

It's all fun doing tutorials here and there and watching a video or reading an article but I find that actually putting all the pieces together and building a full product that can be put into production takes experience.

Collapse
 
akashkava profile image
Akash Kava • Edited

Source Control - Git

Well since I am from India, I don't see developers use any sort of SCM till they are at least five years old in the industry. Forget about Issue Tracker, they are usually happy with Network Share, USB Portable HDD, DropBox as SCM and Excel Spreadsheet as Issue Tracker.

Unit Testing with Code Coverage

No idea what is this even after 10 years !! and simply argue that why waste time in doing code coverage for obvious logic.

Continuous Integration, Continuous Deployment

Expensive, too much configuration, altogether different line of business compared to Coding. Most likely after 10+ years they learn that it is certainly better then manually compiling, copying files to shared folder and hitting F5. Though dev ops is separate job, but in smaller organization, they don't have special position and someone must still do it rightly.

Multi versioned Separate Staging Environment

Usually websites have different folders, /v1, /v1_test /v2, /v2_test .... and even database has tables as customers and its respective customers_test within the same database. It takes long time before devs understand importance of having isolated instance to test.

Micro services

New devs simply love to write long lines of code, and feel proud of writing 10K+ lines in one file or 1M+ lines in one application. They just do not understand how to divide a larger logic into small piece of task and write separate modules or micro services.

Security - SQL Injection, Password Hashing, Session protection

Even if enforced by framework or platform, devs will still avoid and write unsecure code manually just because reading documentation is really lenghthy process and does not fit project turnaround time. Unfortunately, it is not considered as part of skill.

Reading !!!

I think many of devs never mature to a state where they feel that after decades of experience, they still need to learn new technology, documentation and product updates. Very few developer achieve this skill.

Collapse
 
nextlevelshit profile image
Michael Werner Czechowski

Handling this situation in a cool and convenient way. Learning things and beeing curious makes so much fun. It’s hard to convince people that it makes so much fun, they won’t believe ya.

Collapse
 
nextlevelshit profile image
Michael Werner Czechowski

German below
Most of the time you are in a shitty situation as a programmer: time and money are tight and the goal is to solve a technical problem with software (e.g. solving social problems with software is a completely different challenge).

Furthermore, we work in a field of tension between stakeholders, employees, customers and not to forget our ethical and moral principles. In most cases, we have to weigh up what is the best decision, when, why and how, and how this can be justified or revised in the future.

So, what is the greatest skill of an experienced developer? I would say that the question already contains the answer, namely it is the experience that distinguishes him from others.

With experience comes foresight, with foresight the resistance to errors increases, and at the same time a more stable system comes to light. With good software, another piece of security and reliability comes into our world. And that, in my opinion, is what is desirable with many technical products.

(translated by deepl.com)

German:
Meistens bist du als Programmierer in einer beschissenen Situation: Zeit und Geld sind knapp und das Ziel ist es, ein technisches Problem mit Software zu lösen (das Lösen von z.B. sozialen Problemen mit Software ist eine ganz andere Herausforderung).

Darüber hinaus arbeiten wir in einem Spannungsfeld zwischen Stakeholdern, Mitarbeitern, Kunden und nicht zu vergessen unseren ethischen und moralischen Grundsätzen. Wir müssen meist situationsspezifisch abwägen, was wann warum und wie die beste Entscheidung ist und wie diese auch in Zukunft gerechtfertigt oder notfalls auch revidiert werden kann.

Also, worin liegt die größte Fähigkeit eines erfahrenen Entwicklers? Ich würde sagen, die Frage bereits die Antwort beinhaltet, nämlich ist es die Erfahrung, die ihn von anderen unterscheidet.

Mit Erfahrun kommt Voraussicht, mit Voraussicht steigt die Fehlerresistenz, womit gleichzeitig ein stabileres System zu Tage kommt. Mit guter Software kommt ein weiteres Stück Sicherheit und Verlass in unsere Welt. Und das ist, was meines Erachtens bei vielen technischen Produkten zu wünschen lässt.

Collapse
 
janux_de profile image
Jan Mewes

You can't persuade people of your ideas for the "right way to go" without experience. You have to earn credibility for this and have to be able to discuss all aspects involved, some of which won't ever get written down.

Citing what you learned at university or the best books available is a weak argument.