{"id":431,"date":"2022-10-11T22:40:33","date_gmt":"2022-10-11T22:40:33","guid":{"rendered":"https:\/\/www.iterudio.com\/?p=431"},"modified":"2022-10-11T22:40:33","modified_gmt":"2022-10-11T22:40:33","slug":"sdlc-youthful-arrogance","status":"publish","type":"post","link":"https:\/\/www.iterudio.com\/?p=431","title":{"rendered":"SDLC, youthful arrogance"},"content":{"rendered":"\n<p>I achieved &#8220;crazy old man&#8221; status a few years back &#8212; so when I encounter &#8220;youthful arrogance&#8221; I&#8217;m always a little slow to perceive it as &#8220;youthful arrogance.&#8221;<br><br>Googling &#8220;youthful arrogance&#8221; gave me a lot of familiar quotes &#8211; a new favorite:<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>I&#8217;m too old to know everything<\/p><cite><strong>Oscar Wilde<\/strong><\/cite><\/blockquote><\/figure>\n\n\n\n<p>Being &#8220;slow to recognize&#8221; youthful arrogance in the &#8220;wild&#8221; probably comes from the realization that when someone REALLY irritates me &#8211; and I have trouble pinpointing the reason they irritate me &#8211; the reason is (often) that they have an annoying mannerism which I share.<\/p>\n\n\n\n<p>Self-awareness aside &#8211; most of the time &#8220;youthful arrogance&#8221; is simply &#8220;youthful ignorance.&#8221;  Having an appreciation that the world as it exists today did NOT all happen in the last 5 years &#8211; you know, some form of &#8220;large scale historical perspective&#8221; &#8211; is the simple solution to &#8220;youthful ignorance.&#8221;<\/p>\n\n\n\n<p>&#8220;True arrogance&#8221; on the other hand is a much different animal than &#8220;ignorance.&#8221; Arrogance requires an &#8220;attitude of superiority&#8221; and isn&#8217;t &#8220;teachable.&#8221;<\/p>\n\n\n\n<p>e.g. imagine someone having the opinion that the entire computer industry started 5 years ago &#8211; because that is when THEY started working in the &#8220;computer industry.&#8221; <\/p>\n\n\n\n<p>Gently point out that &#8220;modern computing&#8221; is at least 50 years old and traces its origins back thousands of years. Maybe point out that what is &#8220;brand new&#8221; today is just a variation on &#8220;what has been before&#8221; &#8211; you know the whole Ecclesiastes thing &#8230;<\/p>\n\n\n\n<p>If they accept the possibility that there is &#8220;prior art&#8221; for MOST everything that is currently &#8220;new&#8221; &#8211; then they were just young and ignorant. If all they do is recite their resume and tell you how much money they are making &#8211; well, that is probably &#8220;arrogance.&#8221;<\/p>\n\n\n\n<p>Of course if &#8220;making money&#8221; was the purpose of human existence then MAYBE I would be willing to accept their &#8220;youthful wisdom&#8221; as something truly new. Of course I&#8217;ll point back to the &#8220;wisdom books&#8221; (maybe point out that &#8220;the sun also rises&#8221; and recommend reading Ecclesiastes again) and politely disagree &#8211; but that isn&#8217;t the point.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SDLC<\/h2>\n\n\n\n<p>The computer industry loves their acronyms. <\/p>\n\n\n\n<p>When I was being exposed to &#8220;computer programming&#8221; way back when in the 1980&#8217;s &#8211; it was possible (and typical) for an individual to create an entire software product by themselves. (The Atari 2600 and the era of the &#8220;rock star programmer&#8221; comes to mind.)<\/p>\n\n\n\n<p>It is always possible to tell the &#8220;modern computing&#8221; story from different points of view. Nolan Bushnell and Atari always need to be mentioned. <\/p>\n\n\n\n<p>e.g. part of the &#8220;Steve Jobs&#8221; legend was that he came into the Atari offices as a 19 year old and demanded that they hire him. Yes, they hired him &#8211; and depending on who is telling the story &#8211; either Atari, Inc helped him purchase some of the chips he and Woz used to create the Apple I OR Mr Jobs &#8220;stole&#8221; the chips. I think &#8220;technically&#8221;  it was illegal for individuals to purchase the chips in question at the time &#8211; so both stories might &#8220;technically&#8221; be true &#8230;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Definitions<\/h3>\n\n\n\n<p>The modern piece of hardware that we call a &#8220;computer&#8221; requires instructions to do anything. We will call those instructions a &#8220;computer program&#8221;\/software.<\/p>\n\n\n\n<p>Someone needs to create those instructions &#8211; we can call that person a &#8220;computer programmer.&#8221;<\/p>\n\n\n\n<p>Nailing down what is and isn&#8217;t a &#8220;computer&#8221; is a little hard to do &#8211; for this discussion we can say that a &#8220;computer&#8221; can be &#8220;programmed&#8221; to perform multiple operations. <\/p>\n\n\n\n<p>A &#8220;computer program&#8221; is a collection of instructions that does something &#8212; the individual instructions are commonly called &#8220;code.&#8221;<\/p>\n\n\n\n<p>SO our &#8220;programmer&#8221; writes &#8220;code&#8221; and creates a &#8220;program.&#8221; The term &#8220;developer&#8221; has become popular as a replacement for &#8220;programmer.&#8221; This is (probably) an example of how the task of creating a &#8220;program&#8221; has increased in complexity &#8211; i.e. now we have &#8220;teams of developers&#8221; working on an &#8220;application&#8221;\/software project, but that isn&#8217;t important at the moment &#8230;<\/p>\n\n\n\n<p>Computer programs can be written in a variety of &#8220;computer languages&#8221; &#8212; all of which make it &#8220;easier&#8221; for the human programmer to write the instructions required to develop the software project. It is sufficient to point out that there are a LOT of &#8220;computer languages&#8221; out there &#8212; and we are moving on &#8230;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Job Titles<\/h3>\n\n\n\n<p>The job of &#8220;computer programmer&#8221; very obviously changed as the computer industry changed.<\/p>\n\n\n\n<p>In 2022 one of the &#8220;top jobs&#8221; in the U.S. is &#8220;software engineer&#8221; (Average salary:&nbsp;$126,127: Percent of growth in number of job postings, 2019-2022:&nbsp;87% &#8211; thank you indeed.com).<\/p>\n\n\n\n<p>You will also see a lot of &#8220;job postings&#8221; for &#8220;software programmers&#8221; and &#8220;software developers.&#8221;<\/p>\n\n\n\n<p>What is the difference between the three jobs (if any)?  Why is &#8220;software engineer&#8221; in the top 10 of all jobs? <\/p>\n\n\n\n<p>Well, I&#8217;m not really sure if there is a functional difference between a &#8220;programmer&#8221; and a &#8220;developer&#8221; &#8211; but if there is, the difference is found in on the job experience and scope of responsibilities.<\/p>\n\n\n\n<p>i.e. &#8220;big company inc&#8221; might have an &#8220;entry level programmer&#8221; that gets assigned to a &#8220;development team&#8221; that is run by a &#8220;senior developer.&#8221; Then the &#8220;development team&#8221; is working on a part of the larger software project that the &#8220;engineer&#8221; has designed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">History time<\/h3>\n\n\n\n<p>When the only &#8220;computers&#8221; were massive mainframes owned by Universities and large corporations then being a &#8220;programmer&#8221; meant being an employee of a University or large corporation.<\/p>\n\n\n\n<p>When the &#8220;personal computer revolution&#8221; happened in the 1970&#8217;s\/80&#8217;s &#8211; those early PC enthusiasts were all writing their own software. Software tended to be shared\/freely passed around back then &#8211; if anyone was making money off of software it was because they were selling media containing the software.<\/p>\n\n\n\n<p>THEN Steve Jobs and Steve Wozniak started Apple Computers in 1976. The Apple story has become legend &#8211; so I won&#8217;t tell the whole story again. <\/p>\n\n\n\n<p>fwiw: successful startups tend to have (at least) two people &#8211; i.e. you need &#8220;sales\/Marketing&#8221; and you need &#8220;product development&#8221; which tend to be different skill sets (so two people with complimentary skills). REALLY successful startups also tend to have an &#8220;operations&#8221; person that &#8220;makes the trains run on time&#8221; so to speak &#8211; e.g. Mike Markkula at Apple<\/p>\n\n\n\n<p>SO the &#8220;two Steves&#8221; needed each other to create Apple Computers. Without Woz, Jobs wouldn&#8217;t have had a product to sell. Without Jobs, Woz would have stayed at HP making calculators and never tried to start his own company.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">VisiCalc<\/h3>\n\n\n\n<p>Google tells me that 200 &#8220;Apple I&#8217;s&#8221; were sold (if you have one it is a collectors item). The Apple I was not a complete product &#8211; additional parts needed to be purchased to have a functional system &#8211; so it was MOST important (historically speaking) in that it proved that there was a larger &#8220;personal computer&#8221; market than just &#8220;hardware hobbyists.&#8221;<\/p>\n\n\n\n<p>The Apple II was released in 1977 (fully assembled and ready to go out of the box) &#8211; but the PC industry still consisted of &#8220;hobbyists.&#8221;<\/p>\n\n\n\n<p>The next &#8220;historic moment in software development&#8221; happened in 1979 when Dan Bricklin and Bob Frankston released the first &#8220;computerized spreadsheet&#8221; &#8211; &#8220;VisiCalc.&#8221;<\/p>\n\n\n\n<p>VisiCalc was (arguably) the first application go through the entire &#8220;system development life cycle&#8221; (SDLC) &#8211; e.g. from planning\/analysis\/design to implementation\/maintenance and then &#8220;obsolescence.&#8221; <\/p>\n\n\n\n<p>The time of death for VisiCalc isn&#8217;t important &#8211; 1984 seems to be a popular date. Their place in history is secure. <\/p>\n\n\n\n<p>How do you go from &#8220;historic product&#8221; to &#8220;out of business&#8221; in 5 years? Well, VisiCalc as a product needed to grow to survive. Their success invited a lot of competition into the market &#8211; and they were unable or unwilling to change at the pace required. <\/p>\n\n\n\n<p>This is NOT criticism &#8211; I&#8217;ll point at the large number of startups in ANY industry that get &#8220;acquired&#8221; by a larger entity mostly because &#8220;starting&#8221; a company is a different set of skills than &#8220;running&#8221; and &#8220;growing&#8221; a company.<\/p>\n\n\n\n<p>Again, I&#8217;m not picking on the VisiCalc guys &#8211; this &#8220;first inventor&#8221; goes broke is a common theme in technology &#8211; i.e. someone &#8220;invents&#8221; a new technology and someone else &#8220;implements&#8221; that technology better\/cheaper\/whatever to make big $$.<\/p>\n\n\n\n<p>btw: the spreadsheet being the first &#8220;killer app&#8221; is why PC&#8217;s found their way into the &#8220;accounting&#8221; departments of the world first. Then when those machines started breaking, companies needed folks dedicated to fixing the information technology infrastructure &#8211; and being a &#8220;PC tech&#8221; became a viable profession. <\/p>\n\n\n\n<p>The &#8220;I.T.&#8221; functionality stayed part of &#8220;accounting&#8221; for a few years. Eventually PCs become common in &#8220;not accounting&#8221; divisions.  The role of &#8220;Chief Information Officer&#8221; and &#8220;I.T. departments&#8221; became common in the late 1980&#8217;s &#8212; the rest is history &#8230;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Finally<\/h3>\n\n\n\n<p>Ok, so I mentioned that SDLC can mean &#8220;system development life cycle.&#8221; This was the common usage when I first learned the term.<\/p>\n\n\n\n<p>In 2022 &#8220;Software development life cycle&#8221; is in common usage &#8211; but that is probably because the software folks have been using the underlying concepts of the &#8220;System DLC&#8221; as part of &#8220;software development&#8221; process since &#8220;software development&#8221; became a thing.<\/p>\n\n\n\n<p>e.g. The &#8220;Software DLC&#8221; uses different vocabulary &#8212; but it is still the &#8220;System DLC&#8221; &#8212; but if you feel strongly about it, I don&#8217;t feel strongly about it one way or the other &#8211; I could ALWAYS be wrong.<\/p>\n\n\n\n<p>I&#8217;ve seen &#8220;development fads&#8221; come and go in the last 30 years. MOST of the fads revolve around the problems you get when multiple development teams are working on the same project.<\/p>\n\n\n\n<p>Modern software development on a large scale requires time and planning. You have all of the normal &#8220;communication between teams&#8221; issues that ANY large project experiences.  The unique problems with software tend to be found in the &#8220;debugging&#8221; process &#8211; which is a subject all its own.<\/p>\n\n\n\n<p>The modern interweb infrastructure allows\/requires things like &#8220;continuous integration&#8221; and &#8220;continuous deployment&#8221; (CI\/CD). <\/p>\n\n\n\n<p>If you remember &#8220;web 1.0&#8221; (static web pages) then you probably remember the &#8220;site under construction&#8221; graphic that was popular until it was pointed out that (non abandoned) websites are ALWAYS &#8220;under construction&#8221; (oh and remember the idea of a &#8220;webmaster&#8221; position? one person responsible for the entire site? well, that changed fast as well)<\/p>\n\n\n\n<p>ANYWAY &#8211; In 2022 CI\/CD makes that &#8220;continuous construction&#8221; concept manageable<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security<\/h3>\n\n\n\n<p>The transformation of SDLC from &#8220;system&#8221; to &#8220;software&#8221; isn&#8217;t a big deal &#8211; but the &#8220;youthful arrogance&#8221; referenced at the start involved someone that seemed to think like the idea of creating &#8216;secure software&#8217; was something that happened recently.<\/p>\n\n\n\n<p>Obviously if you &#8220;program&#8221; the computer by feeding in punch cards &#8211; then &#8220;security&#8221; kind of happens by controlling physical access to the computer.<\/p>\n\n\n\n<p>When the &#8220;interweb&#8221; exploded in the 1990&#8217;s the tongue in cheek observation was that d.o.s. (the &#8220;disk operating system&#8221;) had never experienced a &#8220;remote exploit&#8221;<\/p>\n\n\n\n<p>The point being that d.o.s. had no networking capabilities &#8211; if you wanted to setup a &#8220;local area network&#8221; (LAN) you had to install additional software that would function as a &#8220;network re-director&#8221;<\/p>\n\n\n\n<p>IBM had come up with &#8220;netbios&#8221; (network basic input output system) in 1983 (for file and print sharing) &#8212; but it wasn&#8217;t &#8220;routable&#8221; between different LANs. <\/p>\n\n\n\n<p>NetWare had a nice little business going selling a &#8220;network operating system&#8221;  that ran on a proprietary protocol called IPX\/SPX (it used the MAC address for unique addressing &#8211; it was nice). <br><br>THEN Microsoft included basic LAN functionality in Windows 3.11 (using an updated form of netbios called netbeui &#8211; &#8220;netbios Enhanced User Interface&#8221;) &#8211; and well, the folks at Netware probably weren&#8217;t concerned at the time, since their product had the largest installed base of any &#8220;n.o.s.&#8221; &#8212; BUT Microsoft in the 1990&#8217;s is its own story &#8230; <\/p>\n\n\n\n<p>ANYWAY if you don&#8217;t have your computers networked together then &#8220;network security&#8221; isn&#8217;t an issue. <\/p>\n\n\n\n<p>btw: The original design of the &#8220;interweb&#8221; was for redundancy and resilience NOT security &#8211; and we are still dealing with those issues in 2022.<\/p>\n\n\n\n<p>A &#8220;software design&#8221; truism is that the sooner you find an error (&#8220;bug&#8221;) in the software the less expensive it is to fix. If you can deal with an issue in the &#8220;design&#8221; phase &#8211; then there is no &#8220;bug&#8221; to fix and the cost is $0. BUT if you discover a bug when you are shipping software &#8211; the cost to fix will probably be $HUGE (well, &#8220;non zero&#8221;).<\/p>\n\n\n\n<p>fwiw: The same concept applies to &#8220;features&#8221; &#8211; e.g. at some point in the &#8220;design&#8221; phase  the decision has to be made to &#8220;stop adding additional features&#8221; &#8211; maybe call this &#8220;feature lock&#8221; or &#8220;version lock&#8221; whatever. <\/p>\n\n\n\n<p>e.g. the cost of adding additional functionality in the design phase is $0 &#8212; but if you try to add an additional feature half-way through development the cost will be $HUGE. <\/p>\n\n\n\n<p>Oh, and making all those &#8216;design decisions&#8217; is why &#8220;software architects&#8221;\/engineers get paid the big $$.<br><br>Of course this implies that a &#8220;perfectly designed product&#8221; would never need to be patched. To get a &#8220;perfectly designed product&#8221; you would probably need &#8220;perfect designers&#8221; &#8211; and those are hard to find.<\/p>\n\n\n\n<p>The work around becomes bringing in additional &#8220;experts&#8221; during the design phase. <\/p>\n\n\n\n<p>There is ALWAYS a trade off between &#8220;convenience&#8221; and &#8220;security&#8221; and those decisions\/compromises\/acceptance of risk should obviously be made at &#8220;design&#8221; time. SO &#8220;software application security engineer&#8221; has become a thing<\/p>\n\n\n\n<p>Another software truism is that software is never &#8220;done&#8221; it just gets &#8220;released&#8221; &#8211; bugs will be found and patches will have to be released (which might cause other bugs, etc) &#8211; <\/p>\n\n\n\n<p>Remember that a 100% secure system is also going to be 100% unusable. ok? &#8217;nuff said<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I achieved &#8220;crazy old man&#8221; status a few years back &#8212; so when I encounter &#8220;youthful arrogance&#8221; I&#8217;m always a little slow to perceive it as &#8220;youthful arrogance.&#8221; Googling &#8220;youthful arrogance&#8221; gave me a lot of familiar quotes &#8211; a new favorite: I&#8217;m too old to know everything Oscar Wilde Being &#8220;slow to recognize&#8221; youthful [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-431","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.iterudio.com\/index.php?rest_route=\/wp\/v2\/posts\/431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.iterudio.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iterudio.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iterudio.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iterudio.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=431"}],"version-history":[{"count":0,"href":"https:\/\/www.iterudio.com\/index.php?rest_route=\/wp\/v2\/posts\/431\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.iterudio.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iterudio.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iterudio.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}