← Back to context

Comment by api

7 years ago

Another 40 year old here: I mostly agree and I've also found that thinking deeply about a problem for a long time before trying to build anything pays huge dividends. In particular I spend a long time thinking about how I can simplify the design to save implementation time, which means actually building it is faster. I also think a lot about UX and DX: simplifying installation, interface, maintenance, removing unnecessary knobs, choosing the right algorithms and tooling, etc.

I think waterfall style development works for one person inside one's own mind, but not beyond that.

A lot of the stuff I see from 20 year olds these days is monstrously over-engineered and Rube-goldberg like. Many keystrokes, sure, but less thought. This also yields bloatware that hogs resources and is hard to install and maintain.

http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer....

More thought and less typing young padawan.

Waterfall can work, and in all the businesses that build physical hardware it's kind of unavoidable. I've been a cog in a giant IC project and seen how it works there: architecture diagram at the top, broken into functional blocks, each individual contributor is handed a tight spec for what to produce with defined inputs and outputs.

But there are four big constraints on waterfall:

- it takes considerably longer

- it produces no visible results until right at the end

- all but the smallest changes require restarting the clock and budget

- it requires a small team at the start and a big one at the end (an observation dating back to Brooks)

36 yo here. I've found that it is incredibly easy to 'overthink' and therefore overengineer things, and I've seen a LOT of my coworkers fall into that trap. Analysis paralysis is real, and delivering something and then being able to iterate on it is a massive step in overcoming that. Way wayyyy too often I've seen people try to think of all the edge cases before starting work, and that's just not a viable approach to software development in today's world.

Also, disclaimer, I didnt actually read the article :o

  • I agree... For personal projects, if I find myself overthinking something, it's time to just put together something that works.. that usually resolves a bulk of 'what if' questions that were freezing me up in the first place. However, it also means a decent amount of refactoring/or sometimes even junking what is tried out.

    Trouble is that this approach rarely works beyond a very small team.

Age isn’t the most accurate proxy for experience. You can meet 30 year olds learning programming for the first time or 20 somethings with a decade of experience.