ESI UCLM
HomeOpinionLifelong skills in software development

Lifelong skills in software development

David Vallejo, professor at ESI, UCLM

Lifelong skills in software development

By David Vallejo, University Professor at ESI-UCLM.

“Read what you love until you love to read.” The proposal that draws this famous quote from Naval Ravikant led me to find, a few years ago, Morgan Housel. He now he is one of my favorite writers. Morgan has the amazing ability to make you think about a lot of topics, related to people's lives and behavior, through ideas and arguments that he intertwines with small stories.

His latest book, titled Same as Ever, focuses on knowledge of things that never change, while the general tendency of most of us is to make uncertain predictions about an increasingly unknown future.

In one of the episodes of his podcast, also highly recommended, Morgan reflects on skills that expire or expire and skills that are permanent.

All the expiring skills They tend to attract a lot of attention. At least, temporarily. They tend to be hot topics demanded by the industry to improve short-term performance. They also tend to generate the FOMO effect (fear of missing out).

By contrast, permanent skills They are different. They have always been there, and always will be. They are simple. They are basic. They are even silent. But they make a difference in the long term. Compound interest in its purest form.

All of this got me thinking about lifelong skills from a software development standpoint. And in this article I am going to list 7 that I consider especially relevant.

  • Skill number 1. Realize that having some solid programming fundamentals represents the cornerstone. This is as important as a house having a good foundation to build on. Technical debt is a recurring problem in many programming projects. To mitigate it, you must propose a good software design. And to propose a good design you need to have solid programming fundamentals. I'm sorry, but you can't learn to program in 21 days.
  • Skill number 2. Have the ability to handle abstractions, applying existing solutions to recurring problems. Exact; You're probably thinking about it: design patterns. The wheel already exists, don't constantly reinvent it. Using what is well tested and works saves time and combats technical debt.
  • Skill number 3. Identify complexity of things and accept it with humility when it cannot be avoided. The KISS principle (Keep it Simple, Stupid) is your timeless ally, but there are projects that are inherently complex. Sometimes, there is no choice but to deal with complexity and simplifying is not realistic.
  • Skill number 4. Be able to create prototypes in an agile way, so that the development paradigm or the technology used does not represent a significant barrier. I call liquidity software. Tools, technologies, languages ​​and even paradigms are constantly changing. Being able to understand how they work in a short time and use them in a practical and agile way is key. Master skill number 1 before taking on skill number 4.
  • Skill number 5. Understand the problem that your client needs to solve. This step, prior to software design and development, is essential to reach a successful conclusion. The ability to interact and understand your customer is irreplaceable. Almost as much as the ability to say no when your expectations (stated requirements) exceed reality (available resources).
  • Skill number 6. Don't overoptimize. Economics can be understood as the definition of allocation policies for resources that are scarce. This also applies to software development. Remember: “time is your most valuable asset.” Concept of negative route. Warning that is activated every time a colleague uses the expression “well, here we are”.
  • Skill number 7. Be generous. This is a permanent skill that could be applied to any human or professional field. Software development is a collaborative work. The code that a developer writes must be understood and used by other colleagues. Presents and futures. The same thing happens with code documentation, even in one-person projects: “Documentation is a love letter that you write to your future self.” If you're thinking ChatGPT can do it for you, ask yourself if you'd really commission it to write a love letter for you.
Print, rising sun. Claude Monet, 1872.

References

  • The almanac of Naval ravikant.
  • Same as Ever. Morgan Housel.
  • The Morgan Housel Podcast.
  • The black swan. Nassim N. Taleb.
  • Quit: The Power of Knowing When to Walk Away. Annie Duke.
Share with:
Rate this item