Software engineers solve problems August 17, 2020 on Drew DeVault's blog

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”, and it’s a necessary part of your workflow.

Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~sircmpwn/ [mailing list etiquette]

Articles from blogs I read Generated by openring

Loopr: A Loop/Reduction Macro for Clojure

I write a lot of reductions: loops that combine every element from a collection in some way. For example, summing a vector of integers: (reduce (fn [sum x] (+ sum x)) 0 [1 2 3]) ; => 6 If you’re not familiar with Clojure’s reduce, it takes a reducing func…

via Aphyr: Posts June 23, 2022

What's cooking on SourceHut? June 2022

Hello everyone! Let’s get straight into the news today. Our user count today is 29,612 users, of which 576 have joined since the last update. Remember to be patient with these new users as they learn the ropes. Welcome! GraphQL Adnan continues to ship GraphQL…

via Blogs on Sourcehut June 15, 2022

Status update, June 2022

Hi! Yesterday I’ve finally finished up and merged push notification support for the soju IRC bouncer and the goguma Android client! Highlights & PM notifications should now be delivered much more quickly, and power consumption should go down. Additionally…

via emersion June 15, 2022