Creating new projects from scratch can trip up even experienced professional developers because in most jobs you come in, work an existing codebase, and iterate. Even if you need a new service or app, you often start with a copy-paste or a common template. When the team needs something more new, usually there's just one person who sets that up. Setting up the whole project from scratch and making all the 0-to-1 choices is much less common.
An apprentice model doesn't really change that. Your average electrician gets called to many more "here's new construction that we're wiring from scratch" jobs than your average corporate engineer gets "we need to set up a new project from scratch without copying any of our existing files or folders."
> Creating new projects from scratch can trip up even experienced professional developers because in most jobs you come in, work an existing codebase, and iterate.
I’ve worked on greenfield projects for so long (15+ years at this point) that my experience is the exact opposite. The few times I’ve had to contribute to an existing code base was a painful experience of figuring out where everything is, and why everything is done in such a weird way.
There is no better feeling than doing that first `git commit -m 'initial commit'`
In a way, it is interesting and a bit frightening to know that my experience is very different than most engineers are socialized and molded for team work and daily standups and code review which are alien (and scary) to me.
What are you doing, where you're solely working on greenfield projects? I remember a professor of mine saying something specifically on never trusting a Software Engineer that has never had to work on legacy code.
I'm a full-stack consultant (the actual full stack, not whatever kids mean these days) and deliver "solutions" to clients. I've got my fair share of legacy code to maintain, don't worry. (I have this Django app I wrote 15 years ago that I should really port to Elixir which is my main thing these days - but there's no money in rewriting an entire application that's in production for that long)
Here's my 2 cents: take any advice on professional matters from someone that has never left academia with a heaping dose of salt.
(the actual full stack, not whatever kids mean these days)
Can you clarify what that means to you? The full stack of modern web solutions spans from datacenter hardware selection to client device PCB design, and I don't think any single person can realistically manage all of that by themselves.
I think "modern fullstack" is knowing React/Svelte/whatever frontend tech and being able to plug that in to Firebase or some all-in-one backend system that provides everything from user management to databases and messaging.
They wouldn't be able to spin up a RabbitMQ queue and Postgres on bare metal.
Please, don't ever spin up a PostgreSQL instance for a client on bare-metal in $CURRENT_YEAR. Some jerk-off did that for a current customer of mine, and now they're having issues with their migration from SUSE to RHEL in production.
Also, this dick measuring contest on who is the fullest-stack developer sounds ridiculous.
I've worked on very VERY brown field projects for 25 years, no green in sight, so I actually have no clue how to bootstrap many of the languages I use professionally (Java + C#) :D
Maybe that's why I like LLM-enhanced programming, I can use it to get the project up to speed and I'm perfectly capable of taking over after that. I'm not that precious about the scaffolding used to bring the project up.
When I worked at a startup (ans therefore where these skills are useful) and was interviewing, this was actually one of my questions - I’d ask people what they would do on setting up a new Python project. It is quite telling to learn who has never done anything from scratch (some people couldn’t even get as far as creating a Git repository) vs those who have done the full process and understand what “good” looks like. It wasn’t a “no hire” signal but it certainly set seniority.
An apprentice model doesn't really change that. Your average electrician gets called to many more "here's new construction that we're wiring from scratch" jobs than your average corporate engineer gets "we need to set up a new project from scratch without copying any of our existing files or folders."