Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Things I Learned the Hard Way: Programmers are Tiny Gods (powazek.com)
30 points by brm on Jan 15, 2009 | hide | past | favorite | 22 comments


Ones and zeroes in the clean environment of a computer chip can be controlled absolutely. When you write a reasonably self-contained program, everything that goes right and everything that goes wrong is entirely your fault. It is not a metaphor; programming simply is small-scale godhood.


Ones and zeroes can't be controlled absolutely all the time.

"...Sun's UltraSPARC II workstations were crashing at an alarming rate. The inability to initially locate the source of the problem created significant customer dissatisfaction issues for Sun. The root cause of the problem was finally traced to IBM supplied SRAMs that were experiencing high upset rates due to charged particles causing soft errors in the memory system. Ultimately, not only did Sun switch memory vendors, they also designed new error checking and correcting logic and implemented it across the entire cache architecture."

from:

http://www.actel.com/documents/SER_FAQ.pdf


It's omnipotence without omniscience, though. Any reasonably complex program will grow beyond the programmer's ability to keep it all in his head at once.


Can I quote you on that as "Computer programming is omnipotence without omniscience"?


Sure, go hog wild.


Ah, but if you run it slowly enough (step through it, for instance), you get the same thing in effect; anything you want to know you can find out before anything changes.


You can easily lose the big picture by stepping through each line of code, especially if your program is heavily iterative or even mildly threaded. You can miss the forest for the trees or the trees for the forest; the middle ground is elusive at best.


Yup - you can't find a race condition by stepping through your code.


Assuming a REPL, and methods of introspection that do not otherwise change state of the system!


You don't need a REPL to step through a program.


You're absolutely right. Sorry, I had repressed those memories ;)


And this is why it's best to have both design and engineering skills when bootstrapping a startup. You don't have to treat yourself like a tiny god.

But seriously, I'd like to see more being done to help people cultivate both. It's massively valuable to be able to both care about users and code the thing. What Steve Jobs does on a larger scale by being a dictatorial designer can easily be replicated at the individual stage when you are both designer and implementer.


"Technical people are motivated by interesting work. They will put up with abominable working conditions if they get to work on something that interests them. I've managed people who had to be sent home at night. But technical people without interesting work are very difficult to manage. Their active minds tend to get them into trouble. A happy team is a group that is busy and too intrigued with their project to get mired down with internal politics"

http://www.computerworld.com/action/article.do?command=viewA...


The only good thing about this blog entry was a certain comment:

       Plus, we also demand human sacrifices.


I liked the post quite a bit. He not only describes a psychological type that is indeed common among programmers, he also gives reasons for why they are that way and advice about how to interact with them effectively. Plus it was short.


I don't think the header image was large enough.


Obligatory XKCD cartoon: http://xkcd.com/224/


A Thing A Programmer Shouldn't Learn the Hard Way: Be humble.


Hmm... Where does that fall in the trinity of Hubris, Impatience and Laziness?


If you are not humble, you are not a successful programmer. Humility commands respect. Respect legitimizes hubris,impatience, and laziness.


So that's why I love programming.


yeah with only difference that God din't need to know how to code.




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

Search: