There are many ways to do the thing. There are many more ways to not do the thing.
There are many ways to do the thing. There are many more ways to not do the thing.
Example: I get asked at the start of a project to provide ModbusTCP comms mapping for a new control panel, so that the client can start integrating it into their SCADA system. It's just a spreadsheet, maybe 100 rows, how hard could it be? They need it right now, why am I telling them it'll take 6 months?
Typing the addresses and descriptions into the spreadsheet is 'the work', and it only takes an afternoon, but it can't start until we do the work before the work:
- To document the ModbusTCP mapping I need to the PLC program
- To finish the PLC program I need the electrical drawings
- To finish the electrical drawings, the electrical engineer needs the device list, datasheets for all the devices, and the functional spec
- To finish the device list and functional spec, we need to agree with the client exactly what we're building and what it's meant to do
None of these things are 'the work' but all of them are 'the work before the work' and usually nobody wants to do, to wait for, or pay for this work.
Need to verify feature X - okay, let me just -
- Find the list of CPs needed
- Get a recent source tree
- Acquire a board
- Flash board
- Get CPs
- Manually assign IP and bring up SSHD to the device so I'm not working over serial
- Build and SCP the rebuilt thing to the device
- Find whatever byzantine command you need to run it to verify it
- Of course it doesn't work, ask your coworker
- Oh did you remember to flub the flabnabber? echo "1" > /dev/i2c5 then restart the flabnabber-daemon
- Run the fking thing and it works
- 3 hours has passed
Wow is working in embedded great. But I think that this is basically everything. The time isn't building the shelf, it's figuring out exactly which hinges are right for what I want it to do, it's measuring and measuring and sanding, it's multiple runs to home depot.
ALL of this _is_ "doing the thing". They are all prerequisites and as such are part of the task.
Ah dammit I always forget the flabnabber.
10/10 authentic embedded development experience.
Permission denied.
> $ sudo bash -c 'echo "1" > /dev/i2c5'
I forget every time
It can be really difficult to strike that productive balance.
This never meant: "It's fantastic if things don't scale". It means: "Trying to start by doing things that scale is probably bad". I mostly believe that.
But it's easy to find dysfunctional organizations that focus almost exclusively on System 1, and it looks like grinding, hustle, "doing the thing", being stuck at CMM Level 1, and in my experience, it leads to burnout. So there has to be a balance.
The item is all done. I'm waiting for the action.