Do you think software is something one person should do end-to-end, or is it a team effort?
This question has been confusing me for a long time, but I think I have a clear answer now.
Promises — I can vouch for all the work I do myself, but isn't it very hard to make promises on behalf of others and try to keep those promises?
Managers — Why do people need a manager? If we're going to do something together, why can't we just look each other in the eye, agree, and deliver our parts on time without issues — why does someone need to wave a stick over our heads?
Output — If the final output of software is a web, mobile, desktop interface, or firmware, service, or data — what's the classical equivalent of this?
Architect — The term "software architect" makes more sense to me now. What will this building be used for, what will it look like, how will the exterior and interior be arranged for use?
Coordination — But who is the person who takes over the architectural work, lines up the marble worker, the flooring worker, the mason? Who makes promises on their behalf and keeps the schedule on track? Haven't many projects failed because of this?
The Answer — The answer seems simple: LLMs (not "AI") — when run in the correct order, serial/parallel, with proper text and prompts — solve exactly this problem.
Soon, writing code might end completely — but that was never the problem anyway. Reading code, doing the right thing in the right order, making mistakes early and fixing them quickly.
The common thread of all these was being able to do this as a team. But creating was always easier when done alone.
It seems that software won't end, but teams will shrink and teamwork will become easier.
To the young friends
Please learn the fundamentals:
- Linux/Unix, kernel, socket, what is a protocol?
- What is system programming?
- How exactly does the internet work?
- What can a browser (W3C) do?
These are now more important — choose a good, modern programming language (like Rust, Zig, or Go) and improve yourself.
My generation was lucky because we had to learn all of this by reading Linux/Unix and man pages.
But you need to develop yourselves. You must transform into solo or small teams.
Good luck.