DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Ben Halpern
Ben Halpern

Posted on

Do you prefer starting new projects or working on existing ones?

Green field or brown field?

Top comments (31)

Collapse
 
jdmedlock profile image
Jim Medlock

Both! I get a lot of satisfaction working on existing project that I believe in and am passionate about. But, I also work on new projects because our growth is limited if we don't broaden our horizons.

Collapse
 
deciduously profile image
Ben Lovy

There are few things more satisfying than turning an old convoluted mess of code into something clean, organized, and maintainable.

...why my GitHub is packed full of quarter-baked messy unfinished ideas is beyond me.

Collapse
 
murrayvarey profile image
MurrayVarey

Absolutely -- refactoring is good for the soul.

Collapse
 
ben profile image
Ben Halpern

I used to like starting things but I think I've swung hard in the other direction being years into something I once started.

I have a hard time sitting down and doing all the base work for brand new things.

Collapse
 
pachicodes profile image
Pachi πŸͺ (she/her/ela)

I like starting things but mostly because I always feel lost jumping into something already going on.

Collapse
 
hey_yogini profile image
Yogini Bende

Relatable! I get stuck at understanding the logic, the code practices followed and end-up asking so many questions to fellow devs. This initial phase makes you a little uncomfortable and you start getting into the imposter syndrome zone but once you pass this, every time you get to learn so much out of this.

I personally prefer starting projects from scratch but I have started to contribute to the existing projects whenever possible.

Collapse
 
ben profile image
Ben Halpern

What makes you feel lost?

Collapse
 
pachicodes profile image
Pachi πŸͺ (she/her/ela)

A little of newbie Syndrome ? Like having to learn and understand what the other people done to the project and how I make meaningful contributions.
It is probably fear tbh

Thread Thread
 
ben profile image
Ben Halpern

This is all pretty normal. Ideally people involved in the project can provide as much guidance and empathy as possible. And otherwise merely hanging around where discussions happen goes a long way.

Thread Thread
 
pachicodes profile image
Pachi πŸͺ (she/her/ela)

Guess I got a find a project!!!

Thread Thread
 
jinglescode profile image
Jingles (Hong Jing)
Collapse
 
waylonwalker profile image
Waylon Walker

I really like seeing a project come together. I like the feeling of taking it to the next level. Starting new things all the time seems like you never get anything too far along.

My /temp directory disagrees. There are 100s of quick projects left here to be forgotten forever. Really though I like to start simple new projects to shake out new ideas that I intend to implement on existing projects. Sometimes I come up with good ideas. Many times I am glad that I tried it in a toy project, learn from it, and move on.

Collapse
 
nickitax profile image
Nick Shulhin

Good question!

It can be rephrased as: "Would you take a red or a blue pill?"

In one scenario you write everything from scratch and create your own vision of bliss with ignorance, while in another one - suffer reality of unlimited refactoring, migration and "God, how does it even work!?".

But from personal experience jumping on existing project is much more interesting and beneficial.

First of all, you challenge yourself to dive into sometimes unknown stack + playing decipher games on written codebase.

Being abused with careless code makes you re-think an attitude: you should write a code like the next day it will be carried over by another team 😁

Collapse
 
patryktech profile image
Patryk • Edited on

Preferably new, but I don't mind existing as long as it's not spaghetti code with a best before date of ~2009...

Nice maintainable code base, with proper documentation and tests? Don't mind working on that one bit.

Collapse
 
roelofjanelsinga profile image
Roelof Jan Elsinga

Both! Brown field because I love shaping projects to serve a (new) purpose. Green field for the same reason, but also exploration of new techniques and being able to change a lot of stuff in a short period of time. The endurance I get from brown field is important for me as well as the new and shiny stuff.

Collapse
 
darkterminal profile image
Imam Ali Mustofa

Both! Coz, I like reading code is written by another developer, so I can learn their logic and their structure "how", "why", "what", "who", and "where" they go first and make the plot and twist in the app they have work with.

In the new project, on my own; it's nice to go and make something good and make the client happy with their hope and goals.

Collapse
 
hazhayder profile image
hazhayder

If you are a newbie and want to learn new stuff then go for existing ones because you will have to improve your analytical skills and you have to improve debugging skills ones that is done you will feel more satisfied.

Collapse
 
jeremyjackson89 profile image
Jeremy Jackson

While I like both, I do prefer existing projects.

Starting a new project presents it's own challenges and gives me the chance to be a bit more creative with my problem solving and can put me into a situation where I have to learn a new way to accomplish something.

Existing projects still allow me to create, but I'm a bit more confined to the way that things are already being done (unless it's my own project then I can just rework it how I want).

If it's an existing project on a team, there are plenty of learning an teaching opportunities since there are different (and more efficient) ways to accomplish something via code. You get to grow and help others grow.

Collapse
 
idoshamun profile image
Ido Shamun

There is something nice in existing projects that everything is already setup. You have the CI/CD pipeline working, tests, lots of boilerplate code that's there, BUT... starting a new project is always exciting! Deciding your stack (it's always an opportunity to sneak in a new tech), software design, no legacy code, just an empty file with so much potential to be awesome.
I just love starting a new project, especially when you buy a domain.

Collapse
 
gsto profile image
Glenn Stovall • Edited on

I've never heard the term "brown-field" before but I love it.

It sounds a little woo-woo, but once I took a personality test, and one of the results said something that resonated with me:

"You don't excel at starting new things, but your biggest strength is making good things better."

So for that reason, I'll say "brown-field." I struggle with creating from scratch, but I enjoy refactoring, optimizing, and building on work that is already solid.

As a counterpoint, My favorite way to test and learn new things has been in the green field space. Create a new project, mess around, take notes, delete it at the end of the day. Sometimes when you want to plant a tree you don't want to do it in the middle of a forest.

Collapse
 
rhymes profile image
rhymes

I like refactoring and debugging so jumping in an existing codebase is fun!

I once succeeded in porting a MySQL DB with its schema coded inside the PHP app that sit on top of it (the nightmare of anyone who knows about DB design and knows about normal forms ahaha). It had dozens of tables each with artificial columns the PHP code read to know where the rest of the data was. No wonder the company wanted it gone. The data had to be moved to the new app.

I ported it to Django + Python + PostgreSQL without knowing either PHP or MySQL πŸ˜‚. Fortunately the company knew what the new app should have done but writing the correct scripts to import the data was... complicated πŸ‘€

Collapse
 
thebinarymutant profile image
Smit Patel

I prefer starting new projects and abandoning them to start a new one πŸ˜‰

Timeless DEV post...

How to write a kickass README

Arguably the single most important piece of documentation for any open source project is the README. A good README not only informs people what the project does and who it is for but also how they use and contribute to it.

If you write a README without sufficient explanation of what your project does or how people can use it then it pretty much defeats the purpose of being open source as other developers are less likely to engage with or contribute towards it.