Software developer skills
October 01, 2018
There are things you learn working in every profession: architects tend to draw well, lawyers tend to be good at negotiation, and writing. Accountants develop a good eye for detail.
Software teaches a lot of specific skills, too:
- Project management: you think construction is hard? Try managing something with no "labor": everything well-understod is already automated, leaving only the things we have no idea how to do, to complete. "I have no idea how to do this, but yeah, it'll take about two days".
- Attention to detail: know what an off-by-one error is? Software people eat this stuff for breakfast. Spend your day in a world where every comma, period, and quotation mark is meaningful, and it's easy to see why even minor errors are nails on a chalkboard.
- Appreciation of the long-term: anything meaningful takes a long time. Be patient.
- Incrementalism: it's always tempting to "tear it down" and build a new one. Software people know the better approach is to refactor, incrementally, a little bit at a time.
- The need for maintenance: total cost of ownership never ends with the initial purchase price. What will this cost over the long run?
- Systems thinking: how do we work on something with tons of small parts? How do we break up big problems into small ones? How do we sequence work so that something will stay working, even as it's rebuilt, one piece at a time? De rigeur.
- Learning quickly: how to stay current in a field that reinvents itself every few years?