Magic of software; what makes a good engineer also makes a good engineering org
a year ago
- #software-development
- #engineering-culture
- #innovation
- Software development is often seen as engineering, yet most practitioners graduate with degrees in computer science, highlighting a contradiction between science and engineering.
- Software exists within a fully understood universe (the computer), unlike sciences like biology or physics, which explore unknown domains.
- Despite the known nature of computers, software development involves discovery, with vision and engineering influencing each other bidirectionally.
- Historical examples like color cycling in early computer graphics demonstrate how deep understanding of tools leads to creative, non-obvious results.
- Abstraction layers in software can be used as shorthand for understanding or as black boxes, with the latter potentially stifling creativity and quality.
- Platforms that abstract away underlying complexity may lead to more output but often result in mediocre quality due to lack of deep understanding.
- Large engineering organizations often struggle with velocity and innovation due to siloed teams and black-box abstractions, hindering bidirectional vision-engineering relationships.
- Successful engineering organizations, like successful software, require deep understanding and the ability to adapt, rather than rigid hierarchical or autonomous structures.
- Copying current practices of successful companies without understanding their historical context can lead to suboptimal outcomes, as many practices are not optimized for innovation.
- True innovation in both software and organizations comes from deep understanding and the interplay between vision and engineering.