There is a never-ending torrent of technology and information screaming for your attention, insisting that without it, you are an inferior developer, incapable of doing anything of value.

It is not so.

Knowing Python's file APIs, understanding the vagaries of MySQL configuration, grokking C's dereference operator - these are valuable skills, but they are not essential to writing software. They apply only to certain tools.

A small set of fundamental skills, however, are useful in all software projects, regardless of environment or tools. You need not be an expert in any of these to make valuable contributions, but learning any of them will make you much more effective. These are the essential skills in writing software, the ones you should spend years mastering and refining:

  • Caring for users
  • Understanding problems deeply
  • Listening
  • Reading
  • Writing
  • Speaking
  • Triage
  • Learning new tools
  • Learning from mistakes
  • Experimenting
  • Naming
  • Data modeling
  • Using programs
  • Documenting programs
  • Writing maintainable programs
  • Adding features to programs
  • Removing features from programs
  • Removing errors from programs
  • Improving program internals
  • Designing interfaces
  • Designing algorithms
  • Editing text
  • Optimizing programs

Other Articles In 'fundamentals'

  1. Caring For Users

    If a program runs in a forest but no one sees the output...