We're a special breed

I was trained as an Electrical Engineer, hired as an Electrical Engineer, and developed software tools to interface with our hardware, so I got put in a software group. In the few companies I've been at, there's a different feel between the hardware and software sides of things.

In hardware, there's a focus on getting things working right, quickly and efficiently. You draft a board design, simulate it until it's right. Then you print it, put it together, and test it until it's right. Once you've run out of tests to run, it's time to call it good.

In software, "quickly" is a priority only when things are going wrong. There is no one or two "right" ways to get to your final goal, and a lot of the process is fighting with your fellow developers over which way is the best. It's not quite as important THAT you get it right, as it is HOW you get it right. Because software needs to be actively maintained, so writing code that's hard to sustain is a big problem. Not to mention that code can more easily than hardware be adjusted to match new priorities, so in software it feels like you're never quite finished with any projects.

If I were to pitch a war between Engineers and CS developers, I'd probably hear insults being slung back and forth along the lines of how Engineers are sloppy, and will take a "if it ain't broke, don't fix it" approach. Whereas developers spend too much time arguing and too little actually working. And how hard is it to test your code as you go, anyways?

It's an interesting comparison, and I'm still feeling out the difference between the two spheres. Overall, it comes down to friendly competition between differing mindsets. CS is still in its infancy, anyways, with no tried-and-true process for developing final products, whereas Engineering has had decades (if not centuries) of refinement of the mindset.

/r/ProgrammerHumor Thread Link - i.imgur.com