Engineers-solve-problems.md (1922B)
- ---
- date: 2020-08-17
- title: Software engineers solve problems
- layout: post
- ---
- Software engineers solve problems. A problem you may have encountered is, for
- example, "this function has a bug", and you're probably already more or less
- comfortable solving these problems. Here are some other problems you might
- encounter on the way:
- 1. Actually, the bug ultimately comes from a third-party program
- 2. Hm, it uses a programming language I don't know
- 3. Oh, the bug is in that programming language's compiler
- 4. This subsystem of the compiler would have to be overhauled
- 5. And the problem is overlooked by the language specification
- I've met many engineers who, when standing at the base of this mountain,
- conclude that the summit is too far away and clearly not their responsibility,
- and subsequently give up. But remember: as an engineer, your job is to apply
- creativity to solving problems. Are these not themselves problems to which the
- engineering process may be applied?
- You can introduce yourself to the maintainers of the third-party program and
- start working on a solution. You can study the programming language you don't
- know, at least as much as is necessary to understand and correct the bug. You
- can read the compiler's source code, and identify the subsystem which needs
- overhauling, then introduce yourself to *those* maintainers and work on the
- needed overhaul. The specification is probably managed by a working group, reach
- out to them and have an erratta issued or a clarification added to the upcoming
- revision.
- The scope of fixing this bug is broader than you thought, but if you apply a
- deliberate engineering process to each problem that you encounter, eventually
- you will complete the solution. This process of recursively solving problems to
- get at the one you want to solve is called "[yak
- shaving](http://catb.org/jargon/html/Y/yak-shaving.html)", and it's a necessary
- part of your workflow.