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:
- Actually, the bug ultimately comes from a third-party program
- Hm, it uses a programming language I don’t know
- Oh, the bug is in that programming language’s compiler
- This subsystem of the compiler would have to be overhauled
- 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”, and it’s a necessary part of your workflow.