logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

Engineers-solve-problems.md (1922B)


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