{"id":1171,"date":"2020-04-29T20:01:51","date_gmt":"2020-04-30T01:01:51","guid":{"rendered":"http:\/\/blog.gwadej.org\/programmer_musings\/?p=1171"},"modified":"2025-09-07T14:05:07","modified_gmt":"2025-09-07T14:05:07","slug":"the-web-has-eaten-programming","status":"publish","type":"post","link":"https:\/\/blog.gwadej.org\/programmer-musings\/2020\/04\/the-web-has-eaten-programming\/","title":{"rendered":"The Web Has Eaten Programming"},"content":{"rendered":"\n<p>Long ago when I began programming, most programs were standalone executables. Back in those days, almost all programs were run from a command line or executed by clicking on an icon on a GUI. This was before the web existed and most people didn&#8217;t even have dial-up access.<\/p>\n\n\n\n<p>Things are very different today, with many applications having migrated to the web. I work in a Ruby on Rails shop at present, so I shouldn&#8217;t be surprised that most of the developers I work with immediately think of spinning up a website for any programming task.<\/p>\n\n\n\n<p>In <a rel=\"noopener noreferrer\" href=\"\/programmer_musings\/2020\/02\/standalone-command-line-tools\/\" target=\"_blank\">Standalone Command Line Tools<\/a>, I talked about a command line tool and how some of my co-workers immediately talked about making a website out of it. In a team meeting last week, they began talking about a popular term in recruiting <em>Full Stack Developer<\/em>. It dawned on me that in their minds the whole world of software development boiled down to:<\/p>\n\n\n\n<ul>\n<li>Back-end<\/li>\n\n\n\n<li>Front-end<\/li>\n\n\n\n<li>Full Stack (which covers both of the above)<\/li>\n<\/ul>\n\n\n\n<p>In this model, there is no concept of programming outside of a web context. If I push on the concept a bit, some might admit that the operations people write some code in other tools, but they don&#8217;t see it as the same as programming.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Website vs Standalone Program<\/h2>\n\n\n\n<p>There are some fundamental differences between standalone code and web-based code. The most important difference to me is the intended audience. Web development is inherently aimed at a large group with unknown level of experience and skill. Standalone code generally has an audience of one or a small number of people. I&#8217;ve worked on commercial programs that had hundreds to thousands of users. That&#8217;s still small compared to many website applications.<\/p>\n\n\n\n<p>Standalone programs can also be focused on smaller problems. This is part of the Unix philosophy: each tool should do one thing well. This means that a standalone program is easier for exploring small or focused ideas. I&#8217;m sure almost every programmer has had the experience of wanting to try out a small idea and getting bogged down in building the code around the idea and eventually letting the project die.<\/p>\n\n\n\n<p>This also means that you are less likely to procrastinate by playing with the perfect theme or <abbr title=\"User Interface\">UI<\/abbr> library. You can focus on exploring the idea, not the trappings. Many web development projects I&#8217;ve seen flounder at look-and-feel or responsiveness issues that are not the core of the project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Make the Computer Work for You<\/h2>\n\n\n\n<p>One of the other important features of a standalone program is the idea of making the computer work for you instead of the other way around. There are a number of small problems that I have needed to solve over time that do not require a fancy <abbr title=\"User Interface\">UI<\/abbr>. In fact, many of these tools will never be used by anyone but me. It may be cleaning up some data that I get once in a great while, or some maintenance task I run once a month.<\/p>\n\n\n\n<p>None of these tools require a website. In fact, maintenance of the libraries and such around the actual work would swamp any work I&#8217;m ever likely to do on the code. If the tool were exposed as a website, I would need to focus much harder on security implications (which aren&#8217;t a big deal on a program I wrote for me to run on one computer). All of this extra work is unnecessary for the job I want to do: <em>make the computer solve a problem for me<\/em>. But, it is absolutely necessary if the tool is ever exposed to the web.<\/p>\n\n\n\n<p>The idea of most standalone tools I&#8217;ve written over time is to either reduce the time a job takes me or to encode a process I will need to repeat so that I don&#8217;t have to remember the details. In other words, I want the computer to do the boring parts and leave the interesting stuff for me to do.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Web Development<\/h2>\n\n\n\n<p>It seems that the whole of programming for most of the developers I know is web development. If it doesn&#8217;t get hosted somewhere, and get thousands to millions of hits, what&#8217;s the point?<\/p>\n\n\n\n<p>This isn&#8217;t to say that they have not done impressive work. Several of my co-workers have built tools that are available on-line and solve problems for many inside the company and out. However, I still see many of them doing repetitive tasks by hand without really thinking about automating them.<\/p>\n\n\n\n<p>I remember when the web was pretty new, some of us would create standalone programs that opened a website on a local port to supply a <abbr title=\"User Interface\">UI<\/abbr>. This was mostly to avoid the annoyance of working with the <abbr title=\"Operating System\">OS<\/abbr> <abbr title=\"User Interface\">UI<\/abbr> libraries, because the relatively simple <abbr title=\"User Interface\">UI<\/abbr>s we needed did not require all of the <abbr title=\"Operating System\">OS<\/abbr> support and overhead.<\/p>\n\n\n\n<p>In the present time, no one would ever be willing to accept one of those simple <abbr title=\"User Interface\">UI<\/abbr>s. You need to decide which <abbr title=\"Cascading Style Sheets\">CSS<\/abbr> framework is the new hotness (or at least which one you won&#8217;t have to replace next month if you want your site to look current). You need to pick a JavaScript framework to give yourself the right responsive model. You need to make sure all of your libraries are up to date and there aren&#8217;t any known vulnerabilities. Don&#8217;t forget to pick where you will host the code (how much are you willing to spend to host this, anyway).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>It has been said that &#8220;software has eaten the world&#8221;, now that processing power and code have gotten advanced enough to replace much special purpose hardware. It now also seems to me that the &#8220;web has eaten software development&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Long ago when I began programming, most programs were standalone executables. Back in those days, almost all programs were run from a command line or executed by clicking on an icon on a GUI. This was before the web existed and most people didn&#8217;t even have dial-up access. Things are very different today, with many\u2026 <span class=\"read-more\"><a href=\"https:\/\/blog.gwadej.org\/programmer-musings\/2020\/04\/the-web-has-eaten-programming\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[75,145,302,316,340,352],"_links":{"self":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts\/1171"}],"collection":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/comments?post=1171"}],"version-history":[{"count":1,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts\/1171\/revisions"}],"predecessor-version":[{"id":1376,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts\/1171\/revisions\/1376"}],"wp:attachment":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/media?parent=1171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/categories?post=1171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/tags?post=1171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}