I'm a good engineer but I suck at building stuff
111–120 of 128 posts
Re: I'm a good engineer but I suck at building stuff
#112Earlier quoted context omitted.
I have a simple mantra that helps me remember this. "Its clay, not stone".
More like tar...
Yes. Code is like dough.
Re: I'm a good engineer but I suck at building stuff
#113> When I try to build something new, I find myself instantly criticizing my technique, to the point of paralysis. This function is hard to test; this object's dependencies need to be injected rather than initialized internally; that module needs an integration test; and so on and so forth. Even when writing spike or proof of concept code, I find myself revisiting the same lines over and over again, looking for the be…
You Ain't Gonna Need It. Let that be your mantra. And always promise yourself that you'll refactor (and actually do it!)
Re: I'm a good engineer but I suck at building stuff
#114Re: I'm a good engineer but I suck at building stuff
#115Earlier quoted context omitted.
I'm naturally a perfectionist, so I fall into this trap often, though I've gotten better over time. I rely on a few simple tricks (ugh, the buzzfeed headline practically writes itself): 1. If I'm stuck and can't decide which path to take, it's usually because I don't have enough data to tell which path is better. The fastest way to get that data is to pick one path arbitrarily and start walking down it. Pretty soon,…
I frequently use TODOs and I don't get crazy if I don't go back and do all the TODOs. Some seem important at the time and become less so with age. Others become more important.
Re: I'm a good engineer but I suck at building stuff
#116Re: I'm a good engineer but I suck at building stuff
#117There is a quote from Louis Nizer that applies here: "He who works with his hands is a laborer. He who works with his hands and his head is a craftsman. He who works with his hands and his head and his heart is an artist." Its that last part that is hard to bridge for a lot of engineers. The thing that did it for me was sitting through a LOT of formal usability studies. Seeing folks actually use an application you ma…
Of course, this backfired spectacularly a few years later at a different company, when a customer stopped paying a lucrative support contract because the software always "just works". I have decidedly mixed feelings about that!
Re: I'm a good engineer but I suck at building stuff
#118There is a quote from Louis Nizer that applies here: "He who works with his hands is a laborer. He who works with his hands and his head is a craftsman. He who works with his hands and his head and his heart is an artist." Its that last part that is hard to bridge for a lot of engineers. The thing that did it for me was sitting through a LOT of formal usability studies. Seeing folks actually use an application you ma…
I started my career in a small software company that wrote Mac software (in the System 6.5, System 7 days). We had no dedicated support staff, so support calls were either handled by the sales staff or development. Talking directly to customers, hearing where they were having trouble, and learning what they wanted to do, was probably the single most valuable experience in my career. My first thought with any work bec…
Re: I'm a good engineer but I suck at building stuff
#119I've eventually come around to flipping this idea on its head, though. If I design not just some kind of product or solution, but a whole process, starting basically with how I want to run my life and then drilling into specific details from there, the technical knowledge stands on more even ground with other forms of knowledge, and with seeing life itself in a more precious sense.
With that mindset, good scheduling of every day as an end in itself grows vastly more important, and abstraction-for-its-own-sake falls away: All programming problems start by assuming they are solved first with "code that looks like breadboard wiring" [0] and then working up the abstraction ladder from there. Automating the technical parts of the solution won't guarantee that it's right in any other way, but it will ease the pain of changing the specification. Acknowledging that the problem is messy, that breadboard coding is messy, and that I won't know how to solve everything immediately and cannot depend on a silver bullet, all constitute crucial first steps.
Now I always look for really basic groundwork to be laid out early on - typically, transforming the breadboard code into something that uses a new data structure, or generating the code flow from a stack or a list or a tree - and that no shortcut is possible without compromising the ability of a potential future abstraction - that it just takes a lot of layers to get where I want to go. Breadboard code is assumed to be ideal until demonstrated otherwise, while "x in y lines" hype is to be avoided under the assumption that the solution is brittle and over-modeled towards the demo code. I cannot assume that my valuable production code will need x or work in y lines. I don't abstain from adding dependencies, but I will preference towards copy-paste-own when I find a reason to reuse code.
[0] http://www.instructables.com/id/How-to-Build-an-8-Bit-Comput...
Re: I'm a good engineer but I suck at building stuff
#120> When I try to build something new, I find myself instantly criticizing my technique, to the point of paralysis. This function is hard to test; this object's dependencies need to be injected rather than initialized internally; that module needs an integration test; and so on and so forth. Even when writing spike or proof of concept code, I find myself revisiting the same lines over and over again, looking for the be…
Another useful idea is to be not interested (except maybe theoretically) in achieving the best, and concentrating on the good enough. Sometimes the best is overkill, and a good enough is significantly cheaper (shorter, easier, available already). Sometimes the best is not good enough, and you have to rethink your strategy.