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.
New course XState Complete Getting Started Guide release date: 13 September 2024 π 4 modules, 32 lessons From zero knowledge of XState, actors, or state machines, to building complete production apps And it's all completely free π
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 π