Generative AI Is Not Going To Build Your Engineering Team For You - Stack Overflow
๐ Abstract
The article discusses the challenges and importance of hiring and training junior software engineers, as well as the role of generative AI in software development. It argues that while generative AI can help with certain tasks, it cannot replace the critical skills and experience that junior engineers develop over time.
๐ Q&A
[01] The Early Days of the Software Industry
1. What was the author's experience entering the software industry as a young person?
- The author dropped out of college at 19 and moved to San Francisco, where they were able to find work as a software engineer despite having limited prior experience with computers.
- The author was homeschooled in Idaho and didn't touch a computer until they were 16 and in college, but was able to learn on the job through sysadmin work for the university and CS departments.
- The author was able to enter the industry when hiring standards were very low, and jobs were plentiful for those with basic HTML or command line skills.
2. How has the software industry changed since the author's early days?
- The amount of prerequisite knowledge and experience required to enter the software industry has grown significantly over time.
- The stakes have risen, the magnitude of the mission has increased, and the cost of mistakes has soared, leading to the development of certifications, trainings, standards, and legal rites.
- It is no longer possible to learn "literally everything on the job" as the author once did.
[02] The Role of Junior Engineers
1. What is the importance of hiring and training junior engineers?
- Hiring and training junior engineers is critical for developing the next generation of senior engineers, as software engineering is an apprenticeship industry.
- Junior engineers help keep teams diverse and prevent overengineering, as they don't yet know enough to imagine all the edge cases that need to be solved for.
- Intermediate engineers, who are highly productive at writing code, are only possible to develop by first hiring and training junior engineers.
2. What are some of the challenges companies face in hiring and training junior engineers?
- Many companies see hiring junior engineers as a cost to externalize rather than an investment in their future.
- Getting that first job as a junior engineer is extremely difficult, especially for those not graduating from top colleges or entering the feeder system of big tech companies.
- Companies need to ensure they can properly support and mentor junior engineers, which requires having the right team dynamics, management, and organizational conditions in place.
[03] The Limitations of Generative AI
1. How does the author view the capabilities and limitations of generative AI in software development?
- Generative AI tools like ChatGPT and Copilot can help generate code quickly, but the author emphasizes that the generated code cannot be trusted and requires significant manual review and rework to integrate it into a codebase.
- The author argues that the "hard parts" of software engineering, such as understanding, maintaining, and operating complex systems, are not addressed by generative AI tools.
- While generative AI can be useful for certain narrow tasks, the author believes it cannot replace the skills and experience that junior engineers develop over time through hands-on work and mentorship.
2. What are some of the specific use cases where generative AI can be helpful in software development?
- Generating example code using unfamiliar APIs, as the training data includes real-world usage of those APIs.
- Producing code for predictable, repetitive tasks that could be automated with tools like sed/awk or vi macros.
- Translating code snippets between different programming languages.