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

How are you reading noosphr’s comments?

I read it as: “software is special because its design space is high dimensional, compared to all other engineering disciplines which are limited to 3 spatial dimensions. Large design space leads to ability to mess things up.”

I wholeheartedly agree with you: “real” engineering (where lives are on the line) is hard. Most software that is made is not to control pace makers, air plane autopilot, space shuttles, etc. When we do need to program in these life and death situations, we should look carefully at the real engineers that do this all the time (looking at you self-driving car software).




I graduated in Electrical Engineering but have worked as a Software Engineer for the last 20 years.

I totally agree with their post and get what they're saying.

Within circuits (big or small) it is possible to do some crazy stupid shit, but reality kicks in much sooner. Either because of physics or price.

Analog circuits (my specialty) are a perfect example of this. Sure I can try to cut corners and interconnect two distant parts of the circuit together in weird ways ("tight coupling" in software), but the options I will reach for are limited, and "nature" forces me to "decouple" them. With software I can just set a distant variable...

I have a Building Engineer on my team, who also moved to Software Engineering. I can ask for examples in his field too.


Software "design space is high dimensional" is true in that storage, latencies, processors, memory we just keep growing and growing. Given that, software should be faster and better than ever because the dimension where software lives has gotten exponentially larger and more performant. Rather than use that like responsible engineers we all started writing bloatware because it was easy and we could get away with it.

Engineering with constraints builds discipline. Maybe we are lacking as engineers in software because the constraint bar just continues to raise.


The power of software is not tied to processing power or memory, although those help a lot. Code is the deciding factor, not quite because it can be laid out wherever and have far reaching effects, but for the underlying basis for code. Software is all about leaky abstractions. It's not quite math or any sort of empirical engineering. Software models entire worlds. Excel is "just" people churning out calculations from paper spreadsheets, except now you just see the results on a screen. Pong is a ping-pong game. But I used the word "leaky" before. "All models are wrong, but some are useful."

We could always talk about stacks, AVL trees, or NLP before any meaningful conception of computers, and indeed a lot of computer science research happened when computers were still fairly primitive. Computer science and its applied form, software engineering, are about computation (data and code) and abstraction. Even computation is just a distraction at some level. There's some world with the ideal behavior that a program should abstract from, but an ideal is an ideal, so programming is often floundering to figure out what ad-hoc world the program mirrors and tweaking haphazardly. Software engineering isn't engineering not because it can't be, due to the (very real) differences of software from the physical world. It isn't engineering currently because we aren't taking control of our actions and their consequences, in all senses.

Intellectual superiority is not relevant here. Everyone has hard tasks. If you're a civil engineer, then design and build infrastructure well. If you're a programmer, then design and build programs well. Any discipline demands honesty and forthrightness in evaluating its work.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: