4 ms·
The universe posed in this blog post is absolutely horrifying. Starting off from the beginning: The last thing the world needs is more hero-worship. The idea o
by throw149102 5y ago
The universe posed in this blog post is absolutely horrifying.
Starting off from the beginning: The last thing the world needs is more hero-worship. The idea of a "softwarenova" is somehow even more self-absorbed than "rockstar" or "ninja". It is completely antithetical to open source principles of collaboration, meritocracy, and community. We should strive to include as many people, and as many differing viewpoints, to the creation of software as possible. This is both in the name of diversity and inclusion as well as correctness and reliability. Creating people who are "above the common masses" can only hurt this goal. To the (hypothetical) interviewee's credit, she doesn't like the term.
Secondly, this idea that things in our universe are somehow prematurely over constrained, while in the design universe you work with design briefs and things are looser. The problem in the real world is that things are too often underspecified - Either in terms of latency, or availability, or security, or correctness, or even in what problem you're trying to solve. I find this extremely confusing to be coming from someone who has worked on F# and functional programming. Functional programming has such a strong emphasis on types, and eliminating classes of errors via types. I think if the author went to work in a software shop using C# or Java or any non-functional language he would instantly recognize how this loosey-goosey approach leads to software that is utterly unmaintainable.
Thirdly, while I do agree that a great number of problems are ill-defined, that is not because they are wicked. Wicked problems imply novelty and uniqueness, but the vast majority of software is simply executing some CRUD operation on a set of data. It isn't unique or novel, there are clearly correct and incorrect answers, there are alternative solutions available, etc.
My imagined universe is almost the complete opposite of this one, that is, instead of thinking of software engineers as designers, we should think of them as mathematicians. (Or at least, that is the mental model that would help the world the most). Software should be formally verified, and be proven to be correct rather than aesthetically divined to be correct. We should seek to maximally specify software, much further beyond the way the industry is currently working. We should overwhelmingly reject the notion that certain people have a gift to work on this, and others do not, and instead seek to bring everyone we can up to a level of technological literacy. We should standardize as much as possible to make software easier to use, rather than having this boutique approach. We should avoid thinking that age has anything to do with how well someone can program, young or old. In other words, the field of software development needs to grow up, badly. If the field could live up to the title of "Engineer" things would improve dramatically.