β€’

newsletter

Meta skills of a professional software developer

What meta-skills do I cultivate as a software developer? Communication, writing, learning independence, creative exploration. This is how I think about them.


Sandro Maglione

Sandro Maglione

Software development

Successful software is not just about code. As such, coding practice alone is not enough.

While working on a big company, a small startup, on open source, or even a solo project, some skills can have a greater impact than your ability to code.

These are the meta-skills that I cultivate as a professional software developer πŸ‘‡


Communication

It's almost clichΓ©: clear communication is key for a successful team.

ClichΓ© indeed, but true.

Think of it this way: if you work alone, no communication is necessary. All the overhead of having to pass knowledge to others is not existent. You are therefore as productive as you can be as an individual.

Working alone is like building a local-only app: fast, cheap, reliable.

What's then the limiting factor? Leverage.

There is only so much that you can do with your time. As the ambition of a project grows, more people working in parallel can (in theory) achieve the same result in less time.

Great, why then adding more and more people is not the solution for everything? Answer: Communication overhead.

That's the same problem of distributed systems: multiple machine in parallel can produce more output, but since the state (i.e. knowledge) is distributed, resources must be spent to pass it to others.

If communication is not efficient, the cost of passing knowledge is higher than the benefits of parallelism.

Some things to consider in practice:

  • Own your work, don't share details that are only relevant to you
  • Ask for clarifications if you don't understand something that is relevant to your work
  • Always share information about your work that are relevant for the work of others

Writing

Let me tell you a secret: clear communication originates from clear writing.

Writing is the process of clarification of your thoughts, ideas, and knowledge. This clarification is a key prerequisite for effective communication.

Writing is everywhere:

  • Documentation
  • Reports
  • Meeting notes
  • Emails
  • Chats

Clear writing means organized thoughts, smooth communication, and fast understanding. It's a superpower, a key meta-skill!

Learning independence

Software is probably the most fast-paced industry, as well as one of the most chaotic. Countless ways of building the same app, with new libraries and frameworks growing like mushrooms.

Fast-learning is key to stay relevant. You cannot always rely on others to teach you.

A new project, new requirements, new framework, new libraries; there is always something to learn from scratch. The faster your learning process, the more effective you are at your job.

Some suggestions:

  • Stay relevant by focusing on the principles, not the quirks of specific tools
  • Practice on personal projects, the goal is using unknown technologies and absorbing ideas
  • Prioritize present-day sources like newsletters and community discussions over things like books

Creative exploration

Programming is a creative activity, not different from art, music, and such.

Therefore, exploring other creative endeavors is an underappreciated meta-skill. This is what I personally do:

  • Drawing/Pixel art
  • Fiction writing
  • Game development
  • Graphic design

XState course coming out this Friday: 13 September 2024.

I also updated the newsletter landing page (appreciate a share if you know someone who may be interested πŸ‘‹).

Planning to explore more meta-topics as well, stay tuned πŸ‘€

See you next πŸ‘‹

Start here.

Timeless coding principles, practices, and tools that make a difference, regardless of your language or framework, delivered in your inbox every week.