Live data from Hacker News

The Messy Page Or: why I don't like greenfield projects

registerspill.thorstenball.com

41–50 of 87 posts

Re: The Messy Page Or: why I don't like greenfield projects

#41
post #33
post #30

Greenfield projects are 1% of a SE job. IME “the code is crap, we need to start again” really means “I don’t want to (or worse, can’t) read source code that isn’t mine”. Reading and understanding someone else’s code then making and executing a plan to improve it is a much more valuable skill. If you’re always working on greenfield projects, you’ll never understand what it means to build software with longevity.

> IME “the code is crap, we need to start again” really means “I don’t want to (or worse, can’t) read source code that isn’t mine” understood. but sometimes the code really is crap, and possibly a danger to the business.

I think it’s more helpful to try and quantify that though, rather that just leave a vague “sometimes” response.

For example, one thing I look for is when the model can not explicitly express all of the states that we now need, and as a result the code has developed various “hacks” that try and simulate the additional states. This code tends to look like “guesses” or “assumptions”. For example, “if not red than blue” or “if no records than user is still on step one”. I tend to see developers spending hours in that kind of code, trying to confirm that the assumption is still always the correct one to make, or trying to shoehorn in another state, and it’s just a horrible time-suck. Improving the model at this point generally pays off in time saved puzzling.

Re: The Messy Page Or: why I don't like greenfield projects

#42
post #24

Earlier quoted context omitted.

I have to port an app I've written in Rust to Elixir. [1] It is Sunday and I have to force myself not to open Emacs today. That's the best of both worlds: a reimplementation of an existing project. You have all the freedom of a greenfield project, and you don't suffer from the "blank page syndrome" or writer's block the author talks about. Port the tests over, then rewrite everything, this time with a better architec…

I'm currently working on a greenfield project that is a rewrite of a smaller portion of a larger app I worked on several years ago. Normally I wouldn't advocate for a rewrite, but the business has since been re-imagined and vastly simplified. Incidentally, I'm also doing it in Elixir. Not only do you not suffer from the "blank page", you can are privy to all the mistakes made before. Of course, you're now open to mak…

I've done a lot of greenfield web application projects and my current stack of choice is also Elixir / Phoenix / LiveView. An opinionated stack solves a lot of the issues the author mentions. He also seems to be mixing in product / UX concerns with implementation concerns.

Re: The Messy Page Or: why I don't like greenfield projects

#43

Earlier quoted context omitted.

I'm currently working on a greenfield project that is a rewrite of a smaller portion of a larger app I worked on several years ago. Normally I wouldn't advocate for a rewrite, but the business has since been re-imagined and vastly simplified. Incidentally, I'm also doing it in Elixir. Not only do you not suffer from the "blank page", you can are privy to all the mistakes made before. Of course, you're now open to mak…

I've done a lot of greenfield web application projects and my current stack of choice is also Elixir / Phoenix / LiveView. An opinionated stack solves a lot of the issues the author mentions. He also seems to be mixing in product / UX concerns with implementation concerns.

It does make life so much easier. My whole stack is Elixir, Postgres, a bit of Vanilla JS, Tailwind (which isn’t strictly needed but I love it), and libvips (we do lots of stuff with images). Esbuild is in the mix for assets but no npm! And no web API!

Re: The Messy Page Or: why I don't like greenfield projects

#44

Sounds like the author is majorly suffering with analysis paralysis, something that’s quite relatable. Still, I can’t say I’ve suffered it to the extent I’d rather be stuck debugging spaghetti projects.

This is a problem that afflicts perfectionists; they want to consider all the options so they can pick the best one, and a blank canvas has nothing but options.

Re: The Messy Page Or: why I don't like greenfield projects

#45
post #5

I get that but I couldn't be more different: I love greenfield projects. I find designing a robust, performant and reliable architecture to be the most interesting part of the process.

Agreed, and it doesn't even feel overwhelming to choose between all these options. It's just fun.

Re: The Messy Page Or: why I don't like greenfield projects

#46

Earlier quoted context omitted.

I've done a lot of greenfield web application projects and my current stack of choice is also Elixir / Phoenix / LiveView. An opinionated stack solves a lot of the issues the author mentions. He also seems to be mixing in product / UX concerns with implementation concerns.

It does make life so much easier. My whole stack is Elixir, Postgres, a bit of Vanilla JS, Tailwind (which isn’t strictly needed but I love it), and libvips (we do lots of stuff with images). Esbuild is in the mix for assets but no npm! And no web API!

Same stack here, I just use Stimulus instead of Vanilla JS because it pairs well with Live View, it is sane and simple.

Put everything in a container, stick it in a dedicated server at Hetzner, and Bob's your uncle.

Re: The Messy Page Or: why I don't like greenfield projects

#47
post #33
post #30

Greenfield projects are 1% of a SE job. IME “the code is crap, we need to start again” really means “I don’t want to (or worse, can’t) read source code that isn’t mine”. Reading and understanding someone else’s code then making and executing a plan to improve it is a much more valuable skill. If you’re always working on greenfield projects, you’ll never understand what it means to build software with longevity.

> IME “the code is crap, we need to start again” really means “I don’t want to (or worse, can’t) read source code that isn’t mine” understood. but sometimes the code really is crap, and possibly a danger to the business.

Most of the time it’s better to adapt existing code than light a match and start again.

For example, I’ve seen and participated in the transition of a completely undocumented custom web framework (with an entirely Redis based ORM) to an industry standard web framework with a MySQL backed ORM.

All of this happened without any customers noticing, no feature development pause, no huge “rewrite” branch requiring regular rebasing, and without the original development team responsible for the mess.

That was truly a work of art.

Re: The Messy Page Or: why I don't like greenfield projects

#48
I appreciate the authors position, but I like Greenfield projects. It's best to have a goal, but the blank page offers an opportunity to search for an optimal or satisfying solution. The author mentions having early work thrown away, but that's part of the search. Of course this needs some freedom to fail and change course, so environment matters. Easier to do on personal projects than under a deadline.

Re: The Messy Page Or: why I don't like greenfield projects

#49
post #31

Honestly, I think this kind of discomfort with a blank page is an excellent thing to have on the team with a greenfield project. One of the ways greenfields go wrong is confident people bringing too much to them. They're sure that features X, Y, and Z are vital. They're sure that the best technical approach means architecture A with framework B and library C. So they jump in and build things, ignoring the lack of pro…

> One of the ways greenfields go wrong is confident people bringing too much to them. They're sure that features X, Y, and Z are vital.

That might be Second System Syndrome:

https://en.wikipedia.org/wiki/Second-system_effect

Re: The Messy Page Or: why I don't like greenfield projects

#50
post #38
post #30

Greenfield projects are 1% of a SE job. IME “the code is crap, we need to start again” really means “I don’t want to (or worse, can’t) read source code that isn’t mine”. Reading and understanding someone else’s code then making and executing a plan to improve it is a much more valuable skill. If you’re always working on greenfield projects, you’ll never understand what it means to build software with longevity.

That’s brown-field at best. Green field (to me) is a new product entirely. A blank slate, a wonderful opportunity.

Agreed. Opportunities like that are super rare though.

Within the confines of an existing company it’s usually better to reuse established tech, for the sanity of your colleagues. :D

Post reply on HN