Software Engineer: Downsides

Software engineering as a trade and/or career can have upsides for many (should everyone learn to code?). A few downsides came to mind, as I realized we're vulnerable to power outages, for example.

[ note: [*] fellow engineers will have noticed I used some software terms as categories titles.. illustrating that the software mindset changes how you think and communicate. Which is obvious since thought and language are intimitaly related. ]

Health:
  • Sedentary lifestyle: you don’t necessarily get around. takes effort to get exercise, apart from walking to get coffee.
  • Increased risk of injuries, due to repetitive movements, to fingers, wrists, eyes, etc.
  • Work-life blending: certainly if you work on a laptop, your work might creep into your life.
Dependencies[*]:
  • Vulnerable: to infra breakdown, e.g. power or Internet
Impact/scope [*]:
  • Whatever you produce, will be limited to the digital world. Obviously you can have an impact in the physical world, since your products and services will (generally) be used by people.
Social:
  • Insulating: you can become tied to the screen, and a little insulated from the physical and social world.
  • Diversity: your fellow engineers might tend to be less diverse, and many might be males in their 20s or early 30s.

Who is a Good Programmer?

I believe a software engineer, like any professional, should maintain a certain sense of philosophy regarding their profession. For example, what does it mean to be a “good programmer”? You might say it depends on who you ask:

    The answer to “Who is a good programmer?” is always, “Who wants to know?”

  1. To a project manager, the programmer who hits every deadline (regardless of quality) is a good programmer.
  2. To a customer, the programmer who solves their problem quickest is a good programmer.
  3. To a business owner, the programmer who makes them the most money is a good programmer.
  4. To a PHB, the programmer who makes them look the best is a good programmer.
  5. To a journalist, the programmer who tells the best stories is a good programmer.
  6. To a junior programmer, the best mentor is the good programmer.
  7. To another programmer, the programmer they are most likely to want to go into battle with is a good programmer.
  8. To a blogger, the programmer who best fits the profile of the point he is trying to make is a good programmer.

Courtesy of Ed Weissman.

The UNIX Philosophy

Came across a gem of software philosophy: The UNIX Philosophy, summed up in 9 “paramount precepts”:

  1. Small is beautiful.
  2. Make each program do one thing well.
  3. Build a prototype as soon as possible.
  4. Choose portability over efficiency.
  5. Store data in flat text files.
  6. Use software leverage to your advantage.
  7. Use shell scripts to increase leverage and portability.
  8. Avoid captive user interfaces.
  9. Make every program a filter.