{"id":17923,"date":"2014-08-08T13:46:54","date_gmt":"2014-08-08T17:46:54","guid":{"rendered":"http:\/\/ssgreenberg.name\/PoliticsBlog\/?p=17923"},"modified":"2014-08-08T13:46:54","modified_gmt":"2014-08-08T17:46:54","slug":"lessons-learned-from-life-as-a-software-engineer","status":"publish","type":"post","link":"https:\/\/ssgreenberg.name\/PoliticsBlog\/2014\/08\/08\/lessons-learned-from-life-as-a-software-engineer\/","title":{"rendered":"Lessons Learned from Life as a Software Engineer"},"content":{"rendered":"<p>I have been known to mention two experiences in my life that have made me realize there are two kinds of people.\u00a0 One experience was real, the other imagined.<\/p>\n<p>The real experience came from my years as a software engineer supporting and developing code for the circuit simulation program called SPICE (Simulation Program with Integrated Circuit Emphasis).<\/p>\n<p>Computer programs are broken down into subroutines.\u00a0 Each subroutine has parameters which are its inputs and outputs.\u00a0 In Spice, there was seldom an explanation of what a subroutine was trying to accomplish and seldom an explanation of the meaning of its inputs and outputs.\u00a0 If you knew either what the routine was trying to do or if you knew the meaning of its inputs and outputs, you would have a much easier time figuring out the missing piece of information.\u00a0 In the case of SPICE, you would start by making some assumptions about the two missing pieces of information, and then go round and round in circles trying to reconcile the two things.\u00a0 If you succeeded in finding out what was going on, you frequently realized that your initial assumptions on both what the routine was trying to do and the meaning of its inputs and outputs were quite different from what was actually correct.\u00a0 Of course the effect was multiplied because to figure out what a subroutine did, you had to figure out what the subroutines inside it did.\u00a0 You were continually going up and down the hierarchy of subroutines trying to make sense of it all.\u00a0 In bugs I found and fixed in SPICE, I could frequently detect that the person who wrote the bug didn&#8217;t fully realize what the routine was trying to do or what the inputs and outputs were supposed to represent.<\/p>\n<p>What I learned from this experience was that I would never write computer programs in this way and inflict this amount of pain on whomever might have to work with the code I had written. As I saw other people work in this domain, it seemed to me these others took a different lesson.\u00a0 The lesson they seemed to learn was that the code in SPICE was an example of how a PhD student ought to write code and lesser people should aspire to that same style.<\/p>\n<p>The imagined experience was thinking about the hazing rituals in fraternities.\u00a0 There too, I expect there were two lessons you could take away from that experience.\u00a0 The one I took away from imagining it is that I would not like to go through that experience, and I would never want to inflict that kind of punishment on anybody else.\u00a0 The other lesson I suppose you could learn is that if the people who did it to you could get away with it, you were certainly going to take your turn inflicting this on the next set of initiates.<\/p>\n<p>I suspect that you can see these life lessons and my reactions to them reflected in many of the things I post on this blog.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have been known to mention two experiences in my life that have made me realize there are two kinds of people.\u00a0 One experience was real, the other imagined. The real experience came from my years as a software engineer supporting and developing code for the circuit simulation program called SPICE (Simulation Program with Integrated [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[166],"tags":[],"class_list":["post-17923","post","type-post","status-publish","format-standard","category-stevegsposts","czr-hentry"],"_links":{"self":[{"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/posts\/17923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/comments?post=17923"}],"version-history":[{"count":1,"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/posts\/17923\/revisions"}],"predecessor-version":[{"id":17924,"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/posts\/17923\/revisions\/17924"}],"wp:attachment":[{"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/media?parent=17923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/categories?post=17923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ssgreenberg.name\/PoliticsBlog\/wp-json\/wp\/v2\/tags?post=17923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}