$Evolution of roles in software engineering
This hub traces how software engineering roles evolved from historical constraints through modern complexity understanding to the emerging product engineer role.
Historical Evolution
How technology constraints shaped software practices and roles:
- The increase in uncertainty drove each era of software development practices
- Slow feedback loops and expensive computing forced optimization for machines over people
- Agile practices only make sense when iteration is cheap
- Methods, methodologies and mindset
Understanding Complexity
Why software is fundamentally different from engineering disciplines:
- Software development is complex, not complicated
- The correct response to complexity is probe, sense, respond
- There are no best practices in complex systems
- Software development is knowledge management
Product Engineers
The modern integration of product and engineering concerns:
- Product Engineers are a rejection of fragmentation
- Software engineers should be involved in product decisions
- Product engineers with strong industry knowledge do better problem solving in that domain
- Product engineers with strong industry knowledge make better technology choices
- Product engineers with strong industry knowledge can communicate better in that domain
Hiring & Assessment
How to identify and evaluate modern software engineers:
- Hiring product engineers like product managers
- Years of experience are not a good metric to assess someone's ability to do the job
Future of Work
How AI and automation change what engineers actually do:
- The atomic unit of what happens in the workplace is not the job, but the task
- The currency of the future will be thought
- The question of the future is "what if"
Related
- [[ZETTELKASTEN/MAIN NOTES/HUB NOTES/
Building software products with AI]] - How AI changes engineering work - Pull Requests are just a tool - Developer experience depends on process, not tools