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.
ever completed a project to find out 6+ months later that it was never used, for reasons? working on an existing mess with outstanding complaints at least better guarantees that it is a valued mess. some environments, that’s not about comfort, it is about survival.
The Messy Page Or: why I don't like greenfield projects
21–30 of 87 posts
Re: The Messy Page Or: why I don't like greenfield projects
#22Re: The Messy Page Or: why I don't like greenfield projects
#23Sounds 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.
ever completed a project to find out 6+ months later that it was never used, for reasons? working on an existing mess with outstanding complaints at least better guarantees that it is a valued mess. some environments, that’s not about comfort, it is about survival.
A lot of what makes my job enjoyable or not is in whether there’s a business case for what I’m doing. If some VP is asking me to fiddle around with something that’s never going anywhere I’ll be miserable. But if I’m fiddling around to build something that drives more revenue or makes people happy with our product then I’m there.
Re: The Messy Page Or: why I don't like greenfield projects
#24I 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.
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 architecture. [2]
--
1: Since someone is bound to ask, I am incorporating a Rust standalone app into a larger Elixir monolith. Because while static typing is nice, turning a Rust app into a highly-concurrent and highly resilient with native OS primitive (threads & co.) or, yikes, async, is masochistic when I have the power of the BEAM at my disposal.
2: Tongue-in-cheek here, I am well aware of https://en.wikipedia.org/wiki/Second-system_effect
Re: The Messy Page Or: why I don't like greenfield projects
#25My goodness, this describes me perfectly as well. The countless choices of a blank slate brings anxiety to a recovering perfectionist like me. Do I choose A or B or Z? I prefer improving things rather than creating them from nothing. I’ve come to a similar conclusion as the author as far as how to get out of the fog of greenfield: Satisfice instead of optimize. In this context, optimizing refers to choosing the best…
What you describe is a very common pitfall that is completely avoidable using well established frameworks.
In systems engineering one of the key principles is that you build a system to meet requirements. This means that prior to making architecture diagrams or picking your database, you instead meet with all of the stakeholders and enumerate a list of what is required of the system or service you are building.
Once you have requirements, you simply look at the normal trade offs (operational ease of use, cost, license model, performance, etc…) and make decisions accordingly.
There is still some room for decision making, but if you apply a tried and true framework it’s helps cut down on the decision making a lot.
Re: The Messy Page Or: why I don't like greenfield projects
#26But hey, I guess it's a spectrum that all programmers fall somewhere on. You might be good at starting things from scratch, you might be good at polishing up and improving existing projects, or you might be somewhere in between.
Re: The Messy Page Or: why I don't like greenfield projects
#27I 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.
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…
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 make a bunch of new mistakes, but that's ok—there's still the benefit of tons of knowledge from the original project.
Furthermore, the Elixir ecosystem really helps mitigate that "too many tools" feeling.
Re: The Messy Page Or: why I don't like greenfield projects
#28Not that I mind messy pages or projects, I love to refactor and clean up. Just new projects always give you a chance to do really well and clean.
Re: The Messy Page Or: why I don't like greenfield projects
#29Re: The Messy Page Or: why I don't like greenfield projects
#30IME “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.