I'm convinced most successful mechanics could be successful programmers. The skill set of looking at a problem and debugging until you really understand the architecture and design of what you're looking at is very similar in both fields.
American McGee is probably the most famous example of this.
> Dead-end jobs followed – washing dishes, polishing rings at a jewelry store, ringing orders at a record store and, finally, fixing Volkswagens at Uncle J.O.'s auto repair shop.
> The tinkering that's required of mechanics appealed to the teenage hacker. The $6-an-hour job "was the first time I ever felt like I accomplished something at work," McGee said.
> On breaks, covered in grease, he'd write inventory and customer tracking applications for the shop.
I'm a software engineer and I do most of my own car work. Can't do everything though, I don't have a lot of room for tools that I'd rarely use.
Paid someone to fix my air conditioning vents though because I'd have to half disassemble the interior of my car to do it and I knew it would take me longer to do than I could have the car out of commission. I really hate the vacuum controlled vents in mid 2000's Ford trucks. I had a vacuum leak - somewhere.
Motorcycles are great for that. Except for a few really high end modern bikes (mostly BMWs) they are mostly repairable with nothing more than common tools and a little ingenuity.
Before I bought my first computer, at 16 - 22 I was repairing and thus disassembling and assembling back my motorcycles and cars on a monthly basis. I didn't have enough money to buy a good working one so I had to tinker with it very often.
The most extreme I did was to replace the car body after an accident I had (slippery road) in my own garage. After a week or something I got a running car again, with a different color and car body number but whatever ^^.
I'm convinced most successful programmers can be successful mechanics for the same reason!
Most programmers I know tend to be handy in some way, whether that's fixing their own cars (myself), wood working, or some other skill which requires them to think through problems and work with their hands.
I actually view fixing cars as not only a hobby of mine, but as a fall back career should I ever become bored of software or need some quick cash.
> Most programmers I know tend to be handy in some way, whether that's fixing their own cars (myself), wood working, or some other skill which requires them to think through problems and work with their hands.
I can relate to that. In fact, I find it downright relaxing being able to work with wood (I like to restore mid-century furniture as a hobby) and compared to all those digital, virtual tasks and projects it's so refreshing being able to physically touch, feel, see and use the result of one's work.
I leveraged my embedded systems knowledge into a cottage side business rebuilding the old Magneti Marelli ignition modules in 308/328 models with new ARM Cortex based electronics. There's nothing magic about Ferrari engines.
It's funny, I've met a lot of people that thought dsp and algorithms engineering to be magic and yet I find those fields to be a straightforward and fun. On the other hand I have a year of professional experience in ARM Cortex M4 programming and I find it to be magic that any somewhat complex embedded system works. Flip one bit the wrong way and the whole fracking system won't even boot. It took me six months and a significant chunk of my professional reputation to get some biomedical algorithms to interface with offline data on a fat16 formatted USB device.
I think it's just supposed to carry the same meaning as "Denial is not a river in Egypt," which is: hey, denial is a real thing, and you're facing it right now.
Programming prepares like almost nothing else to pay attention to details and to actually read and follow directions, it's like surgery in that regard one little distention and the programs malfunction or die.
This translates very well I in most task oriented jobs, like, maybe your average programmer won't be able to invent a new gourmet dish but I expect most of them to be very competent cooks with a recipe on their hands.
I am commonly told I am a good cook when I make stuff and I just say I follow the instructions. I guess when you spend a lot of time writing instructions you come to appreciate when people write them for you.
For me, if this software developing thing doesn't work out, my dream job would be to purchase, restore and re-sell classic cars. I already love tinkering with them, but there is only so much I can do with a full time job, and living in a flat.
I grew up working on cars and motorcycles. The mindset is very similar. Since I work more in DevOps than as a developer, I often think of myself as a software mechanic.
Interestingly, I find the musician mindset is also very similar, particularly musicians who compose or improvise.
Software Mechanic is a pretty good term. A lot of people out there claim to be software engineers (creatively design solutions to problems), when really they are mechanics (apply technical skill and knowledge to already solved problems). Web development is an example of a largely solved problem, the answer to every problem in webdev is to look it up in the manual (Google it). Adoption of this term would clear up a point of mass-confusion in our industry.
Software mechanic says: I don't mind getting my hands dirty while doing intricate work (computers, who understands 'em?). Janitorial work seems to be regarded as lowly drudge work, even though being a good caretaker/warden means preventing problems from occurring in the first place, like watering the garden and keeping leaks in check.
Everyone is trying to keep a cupboard in order somewhere :).
In my enterprise dev mgr role in maintaining a legacy codebase while introducing new features I used to talk w/ my team in terms of "software gardening".
Most mechanics are hardware hackers. Instead of searching for the problem on stackexchange/stackoverflow, they search service bulletins and automotive message boards.
I'm sure that the software in modern cars causes all manner of stupid problems that never existed before, and could be easily eliminated by giving the mechanics access to the source.