Hacker News new | ask | show | jobs
by cortesoft 3217 days ago
Oh my god this is such pompous article. None of these things are specific to software developers, and 90% of the things it says are platitudes that mean nothing.

There are even some that are just wrong, like the 'throw it away' section.

"It's not the code that is valuable. It's the understanding you've gained from building it."

What? Maybe at some places, but where I work, the software I write is NEEDED.

And this:

"Never be afraid to throw something away and do it again. It will almost always be faster to build and much better the second (or third, or Nth) time around."

Has he never heard of the second system effect?

5 comments

> throw something away and do it again.

This jumped out at me too. This is such a HUGE fallacy. If what you have written is core to or is the product you're selling, you can't just rewrite it! Software evolves over time, and it can become difficult to replace it when it gains features and bug fixes for random edge conditions.

Properly replacing existing software requires having a consistent API against which you are developing and can test to make sure that it continues to work. And then having the ability to potentially dark launch new software next to old to see that it works properly. Even doing all of that, replacement projects often fail, why? Simply because most organizations can't afford to have a team that is not contributing to the bottom line of delivering features to customers.

Doing a replacement project should never be started without a significant amount of thought and attention. Software always takes longer to develop than you think, I even underestimate "Hello World!" most of the time.

For sure - when writing upgrades to existing systems these days, 90% of the work goes into the transition; how do you start using the new system without breaking the thousands of people who rely on the old one?

But yeah, I kinda have a feeling I know where he is coming from with some of his thoughts... my first few jobs were at startups that never went anywhere. We made great software, but never gained any customers because there was no real market for what we made.

After a while, you get REALLY focused on the craft of your code, because it is all you have. You can throw out old stuff and rewrite it, because it doesn't matter, you don't have customers depending on you. You already made what is needed by the business, the problem is there IS no business.

My current job is with a large CDN, serving a huge number of actual real customers with real demands. I don't have time to treat every piece of code I write as a piece of art. It is simply a tool to further the business.

Personally, I much prefer my current job. I would rather create things that actually matter, rather than amazing art that no one uses.

> Has he never heard of the second system effect?

My team and I were recently working on a replacement for an old service. One weekend I thought, "I could re-write the whole thing in a way better, clever-er way!" I stayed up way too late hacking on it. It was my masterpiece. Sunday night I uploaded it to our org's GitHub and then on Monday the team lead was like "Um, what's that?" and then I knew that the feelings I'd ignored while writing it were true: it was a waste of time. We weren't going to use my new re-write.

But it was better!
Haha yeah, I really thought so :)
This, 10000 fold.

Starting with the title. Yes, I'm an engineer. I studied engineering, including algebra, calculus, and physics for CS students, a common core for all engineering students, regardless their specialty. Don't take that away from me. I saw colleagues leave after 1st and 2nd years because they couldn't stand it. It's my peers' and my achievement.

I'm an engineer also because I solve people's problems through software, applying technology derived from scientific breakthroughs.

Yes, sometimes we need to get creative, as everyone else.

Finishing with this

We are in a very fast-paced industry, and nothing will stand still for long.

That mentality is toxic. I aim for my designs, APIs, routines, scrips, to be as long lived as I can make them. Most of the time I don't achieve it. Sometimes it's my fault, sometimes it's the environment. But I create for the future. For me it would be an enormous achievement to learn some piece of software is still kicking ass 5y/10y/15y after.

I mostly agree. They're selling a development platform. You could look at this at marketing fluff aimed at stroking the egos of their prospective customers.
Ah, makes sense.

'Come, write your code on this artisanal platform, carefully crafted by Tibetan monks in their 5th year of a 10 year vow of silence'

On the level of working on a single task or commit I agree with the "never be afraid to throw something away" concept.