6 Matching Annotations
  1. Last 7 days
    1. The magic of both software and software organizations comes from those moments where insight into how something works sparks entirely new ideas about what it could become.

      I would have liked some more details or examples of a more ideal way for software organizations to reflect these insights, but they are good insights and it may end up turning into a false idols situation. :)

    2. But the change that every team needs to make is dependent on the change that every other team needs to make.

      I think an example of organizations that get it right are Elon Musk's companies. Both Tesla and SpaceX are working in these kinds of seismic shift opportunities. They are working from first principles and with the entire product (including the manufacturing process) in mind. You don't get things like the "Superbottle" with siloed teams.

      Both Tesla and SpaceX are also engineering in domains with very thin margins. The energy to weight ratio of electric batteries is very, very low compared to gasoline, so a Tesla has to be 95% efficient where an ICE car can be only 40% efficient.

      SpaceX is also working in a domain that has famously thin margins. Given Earth's gravity, it is just barely possible to leave Earth's surface and only after jettisoning parts of your vehicle through staging.

    3. These two ways of thinking about organizations (autonomous vs hierarchical) seem really different at first glance. However, in one respect, they are both essentially the same: Both assume a relatively unidirectional relationship between vision and engineering.

      This is an interesting point that I had not considered. What would an organization look like that allowed the "bidirectional relationship between engineering an vision to emerge?"

    4. I think we can only truly create when we truly understand what we have to create with.

      This is true, and (again) I think is not unique to software engineering.

      Even to take the film example, someone like Christopher Nolan actually knows quite a bit about how cameras work and even what kind of film he wants to use.

    5. the whole of software development is actually full of discovery even though it exists within a completely known universe.

      Yes! Software engineering is rightly conceived as an exploratory process!

      Software engineering is an exploratory process of refining and fitting your vision to and with feedback from the artifact you're creating.

      I think it is very similar in this respect to writing prose where you edit, read, re-edit, and re-read over and over to refine. You also throw out large chunks and rewrite. In the end if it is done well it looks effortless, which is the lie.

    6. At first glance, software seems like a straightforward engineering practice. After all, it exists within a fully known universe – the computer – of our own making. This is in stark contrast to disciplines that are more obviously science, like biology or physics, which exist within domains that we did not create and do not fully understand. Unlike computers, which are fully understood, those disciplines are in large part about the search for understanding. Science, in other words, is often occupied with the process of discovering how something works – which we don’t need to do with computers.

      Richard P. Gabriel also makes this point in his talk "Engineering(,) A Path to Science".

      Software engineers quite literally create the reality that computer scientists study. I think this is actually quite common in fields that are about shuffling concepts. (Gabriel also discusses cases where engineering precedes science even in physics.)

      This vision-engineering-non-linear-intertwining is essential to creative work in general. The creative process isn't so much one of creating but discovery; the artifact you are creating is a co-creator of itself.