Recently I read a hn thread on Unpopular Opinions on Software.
This one I could relate to, a lot.
Software as a team sport usually produces both poor software and a poor team experience.
Yes! But why?
- more bureaucracy and process involved
- 9 pregnant women can't make a baby in 1 month
- communication: time spent explaining decisions and sharing knowledge
- time cost of onboarding
- lots of different opinions, slow decision making
- feature creep. 10 person software team can't afford to say 'our product is complete' and refuse to build features
- more people = larger complexity budget. Solo devs build simpler systems because they can't hold the same amount of complexity in their heads as entire teams.
- lack of consistency -> more complexity. Everyone has their own coding style. Trying to conform to it is mental effort. Not conforming to it means less overall consistency and more difficulty onboarding.
- time spent on silly pet-peevy code reviews.
- people tend to forget they are there to help bring value to the business. Peple forget what the value of the business is.
- people tend to build overcomplicated shit when left alone (complex CI pipelines, etc)
- culture of CV driven development.
- requires uncomfy guard-rails (type systems, too many integration tests, slow end to end tests, CI/CD) due to lack of deep knowledge of the system.
- agile is not agile.
- ...
I wish to one day be a single dev in a small startup.
I want to write programs. I don't want to participate in modern software development.
Not because I dislike working in a team. I want to closely work with non-technical people. Work with users. Solve real problems.
I understand there are big problems with that, too. The bus factor is real. You can't always do everything by yourself. Know when to seek help, and know people that can help.
Also related: Programming As a Career Isn't Right for Me, One year of solo dev - marginalia.nu. I like tinkering with software. I have been doing it since I was ~11. I like creating stuff. But what I don't like is the processes and practices of "Modern Software Development".