> It may sound harsh, but there's not a lot of skill involved in starting new coding projects (it's one of the best things about the craft imo).
I generally feel the opposite. Starting a new project, not just a prototype, requires a lot of decisions and knowledge that mostly only has to be applied at the beginning of a project. Language choice, core dependency choices, build system, deployment, general project structure, etc. Each one can be changed later on, but the longer a project goes on, the more of an impact these early decisions have, and the more important it is to get them mostly right from the start.
On the other hand, when you join an existing project, many decisions of the project are already made and you just write code that resembles existing code.
I think we’re just splitting hairs over what “project” means.
But even so, many web projects are as easy as `npx create-next-app` and you have a solid foundation.
It’s much harder to start working on an existing codebase.
> you just write code that resembles existing code.
This is so incredibly wrong.
Every line of code you write as an IC on an existing project should take into consideration the existing code, the teams patterns and code style, and the reasoning behind existing systems.
The choices that were made that you’re unaware of makes it much harder to write any code, let alone code that also resembles existing code.
Decisions don’t require skill, necessarily. Anyone can just choose a web framework or a database.
Working within the restrictions of an existing system has a much higher skill floor.
I generally feel the opposite. Starting a new project, not just a prototype, requires a lot of decisions and knowledge that mostly only has to be applied at the beginning of a project. Language choice, core dependency choices, build system, deployment, general project structure, etc. Each one can be changed later on, but the longer a project goes on, the more of an impact these early decisions have, and the more important it is to get them mostly right from the start.
On the other hand, when you join an existing project, many decisions of the project are already made and you just write code that resembles existing code.