Hacker News new | past | comments | ask | show | jobs | submit login

This, I feel, is so accurate and is why I bristle when people call me a "software engineer". I do not feel like an engineer as I went to a university with many engineering degrees (my degree was from the mathematics department) and I have friends who are actual engineers (not in the train-sense, in the "constructing things" sense). Very little of what I do in software conforms to what I would consider engineering practice.

I'm not suggesting that there aren't software developers who construct software with an engineering mindset. I just see so few of them.




I went to school for computer engineering with greater emphasis upon hardware and over the years I've tried to approach software the way that I've learned how reliability is increased in hardware and electrical engineering, and the business drivers are nothing alike between the two worlds to me on top of the technical differences in disciplines.

When we write ASICs in HDLs, most commercial designs have at least 10 to 100 times as many lines of code for test harnesses compared to the actual design. I've never seen a general commercial software product with anywhere near that much test code in my life (SQlite included perhaps). Furthermore, much of what allows hardware testing is through problem spaces being enumerable (or at least approachable on a statistical basis similar to how memtest works with various bit patterns aimed at different failure modes) and with cross-disciplinary lessons (materials sciences, chemical engineering, etc.). The closest we have in software is the functional programming test ecosystem, especially with Haskell's QuickCheck. But commercial software typically just doesn't care about software reliability to the extent anyone in real world systems does, and there's probably a lot more people pumping out random code now than there are hard sciences engineers thanks to the accessibility of modern software and computers. Combined with software developers as a community being more fashion driven than Milan, London, New York, or Paris we're constantly reinventing the wheel. This is both the blessing and curse of modern software.


"commercial software typically just doesn't care about software reliability to the extent anyone in real world systems does"

And there is nothing wrong with this! I'm not suggesting every line of code should be "engineered". I do think that more projects could benefit from the engineering mindset you are talking about here. Operating Systems for example.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: