Live data from Hacker News

Why do we hack?

curious.galthub.com

11–20 of 52 posts

Re: Why do we hack?

#11
post #2

I think the "brutal pragmatism" and corpo SWEs have always been an opposing force to the hacking spirit. Catch phrases include, but not limited to: - don't reinvent the wheel - right tool for the job - use a library - time to market - customers don't care about X - premature optimization I hack because it's the expression of the exact freedom that made me interested in computers in the first place. Discouraging devel…

Except for one, all of the above are good bits of wisdom, not reinventing wheels, using the right tool for the job, reuse of libraries, quick time to user - to get feedback. All great engineering - whether you are building for the masses or just yourself to scratch an itch.

But one that cuts to the core of a deep problem in computing and sticks out to me is;

   "customers don't care about X"
That's so broken it's not even wrong. It's a just profoundly ignorant and arrogant misunderstanding of the world and what we do as programmers.

Developers have never known what customers want. Customers don't know what customers want. Because software is not a supply-demand business based on reasonable a-priori expressed preferences. It never has been.

For the most-part people accept what they get and define their understanding of technology and its possibilities accordingly. The limits of their horizons are arbitrary, the product of fumbling evolution, fads and fashions, science-fiction and fantasies, endless copying and reconfiguration of features, educational pre-requisites to access and understanding - and all happening within a rapidly changing world of social and hardware change.

The conceit of the programmer as a "master-chef", lovingly creating a dish to the exact delectation of a discerning customer is nonsense, and I have always taken pronouncements about "what customers want" to be naive, grandiose and out of touch.

Re: Why do we hack?

#12
post #2

I think the "brutal pragmatism" and corpo SWEs have always been an opposing force to the hacking spirit. Catch phrases include, but not limited to: - don't reinvent the wheel - right tool for the job - use a library - time to market - customers don't care about X - premature optimization I hack because it's the expression of the exact freedom that made me interested in computers in the first place. Discouraging devel…

I personally make a sharp distinction between my professional and personal work. Personal time is for "hacking", exploring, playing around with stuff. Professional/work time is for enriching the bossman as fast as possible - so using stuff other have made.

Re: Why do we hack?

#13
post #12
post #2

I think the "brutal pragmatism" and corpo SWEs have always been an opposing force to the hacking spirit. Catch phrases include, but not limited to: - don't reinvent the wheel - right tool for the job - use a library - time to market - customers don't care about X - premature optimization I hack because it's the expression of the exact freedom that made me interested in computers in the first place. Discouraging devel…

I personally make a sharp distinction between my professional and personal work. Personal time is for "hacking", exploring, playing around with stuff. Professional/work time is for enriching the bossman as fast as possible - so using stuff other have made.

Of course. Very few people get paid hacking - nevermind generally for things they enjoy.

Re: Why do we hack?

#14
post #2

I think the "brutal pragmatism" and corpo SWEs have always been an opposing force to the hacking spirit. Catch phrases include, but not limited to: - don't reinvent the wheel - right tool for the job - use a library - time to market - customers don't care about X - premature optimization I hack because it's the expression of the exact freedom that made me interested in computers in the first place. Discouraging devel…

> premature optimization

This reminds me of my first FAANG interview, about 2 decades ago. I was already accomplished, and I assumed it would be a normal software interview, which pretty much always went very well. But once in the interview, they wanted me to write some code on a whiteboard, which I'd only seen once before, and to talk as I'm doing it. OK, I'll try that. (I actually hadn't slept the night before, for unrelated reasons, and I'd unknowingly eaten something that makes me feel queasy, but I knew my way around whiteboard analysis and design, and I guess I could code on one.)

Right before then, I'd been working on an (introvert-powered) meticulous coding style, so I adapt that style to this unfamiliar interview format. I was time-slicing my attention between focusing on the code, and explaining my thinking process for some stranger's mental model (plus the social context awareness overhead).

While I'm coding on the whiteboard, I see that I have a variable that will end up getting set redundantly sometimes in a loop. As I quickly correct that, I verbalize what I'm doing.

And he interrupts me with an order, "Don't prematurely optimize." No clarification -- like that he thinks I'm barking up the wrong tree on algorithm approach (plausible), or that he doesn't know that meticulous coding can be super-effective and not a barrier to also seeing bigger picture, or that he just knows "premature optimization" is a thing. I should've asked, but I was thrown by interruption of my flow, and the tone of voice.

In any case, that set the tone for the interview, and I didn't get an offer, somewhere that otherwise seemed made for me. I ended up going instead to a career path much less lucrative than 2 decades of FAANG, so that might've been an extremely expensive waste of whiteboard marker.

Today, people who use the term premature optimization had better be using it well, or I will secretly think glares at them.

Re: Why do we hack?

#15
Not for money, not for recognition, not to please anyone, because I don't know how to not hack at anything that seems interesting (including things outside the domain of computing).

Re: Why do we hack?

#17
post #2

I think the "brutal pragmatism" and corpo SWEs have always been an opposing force to the hacking spirit. Catch phrases include, but not limited to: - don't reinvent the wheel - right tool for the job - use a library - time to market - customers don't care about X - premature optimization I hack because it's the expression of the exact freedom that made me interested in computers in the first place. Discouraging devel…

Oh man! You've nailed it with this comment. I am that senior corpo SWE you describe, and I confess that I push a lot of these ideas. I have to ensure my teams stick to business critical paths but I do encourage things like...

- If you come across something you don't understand, don't just unblock yourself with stack overflow or asking me, try to grok the problem. Take time out to play with the idea.

- Try to understand what you're doing, never cargo cult program. Dig a level deeper than you need to. Foster your curiosity. Understand HTTP now? Great, now look at TLS and TCP.

- Focus on quality of life scripts and tools. Don't ask permission, if a bash script will save us time to do repetitive task X, do it. Resist the constant pressure to deliver the ticket quickly at all costs.

- Do you really need that library? Try as hard as you can to avoid it, even if it adds a bit more work.

- For 10% time, free you mind to work on things and ideas that excite you. Don't let the perceived business objectives pressure you.

Etc...

The truth is, it's a balancing act but I do very much agree with the sentiment of this post. I struggle with the cognitive dissonance of having to think in these two ways at once, and push, as hard as I can justify, away from the 'ruthless pragmatism' route. As ever, it's all difficult trade-offs.

From a business point of view, if you have to sell it, the above produces better engineers and, therefore, the business benefits from higher quality and velocity ultimately. Obviously there is an upfront investment...

Re: Why do we hack?

#18
post #6

Earlier quoted context omitted.

"don't reinvent the wheel" The single worst piece of advice that I consistently see repeated. If you're product is a bunch of APIs, you're a user not a maker.

Then, where does being a "maker" even start? One will always end up using something someone else created, or discovered, whether it is a library, a language, an OS, hardware... Even if you build your own computer from scratch using materials you gathered, you still did not "create" the raw components, did you? All of this is only but a paraphrase of this famous quote from Carl Sagan: "If you wish to make an apple pie…

Being a "maker" starts when you want to existentially vanish whatever is providing you the interface, whichever that is, from copper wires, to a hacky Chinese PLC software which works only in Windows XP SP 1 with the manual translated to English by a word randomizer, to a fancy GraphQL API. And if your current interface is not hurting you, making you to want to hurt it back, remove it from existence altogether and start from scratch, one layer deeper in the stack, well, you are not a maker. And that is fine, enjoy your interface.

Re: Why do we hack?

#19
post #2

I think the "brutal pragmatism" and corpo SWEs have always been an opposing force to the hacking spirit. Catch phrases include, but not limited to: - don't reinvent the wheel - right tool for the job - use a library - time to market - customers don't care about X - premature optimization I hack because it's the expression of the exact freedom that made me interested in computers in the first place. Discouraging devel…

> premature optimization

I don't get it. Even when I'm working on a hobby project of no practical value with no deadlines. Premature Optimization is something I'd still like to avoid. I feel like PO harms code maintainability. It's far easier to optimize bottle necks in well written code than do refactor code complicated by PO in my humble opinion.

Edit: Newline

Re: Why do we hack?

#20
post #6

Earlier quoted context omitted.

Then, where does being a "maker" even start? One will always end up using something someone else created, or discovered, whether it is a library, a language, an OS, hardware... Even if you build your own computer from scratch using materials you gathered, you still did not "create" the raw components, did you? All of this is only but a paraphrase of this famous quote from Carl Sagan: "If you wish to make an apple pie…

Being a "maker" starts when you want to existentially vanish whatever is providing you the interface, whichever that is, from copper wires, to a hacky Chinese PLC software which works only in Windows XP SP 1 with the manual translated to English by a word randomizer, to a fancy GraphQL API. And if your current interface is not hurting you, making you to want to hurt it back, remove it from existence altogether and st…

I agree with this. The inevitable conclusion of my focus is a bare metal implementation.

Manufacturers value supply chain; so too should tech. If it's not your advantage, it's likely a disadvantage. Own your stack.

Post reply on HN