I think there are two types of programmers, those that do it as a mean to achieve something else and those that view programming as the end on itself. In reality there are many flavors of that in between. So it’s more of an spectrum than a binary distinction. We can still, however, talk about these two types of programmers.

Programming as a means to an end

People that only use programming as a tool are usually focused on solving an specific non-programming related problem. Tracking their habits, keeping an inventory of stock in a store, selling what they produce, building their startup idea (or someone else’s one). Industry in general is on this side of the spectrum. Plenty of startups like to market themselves as technology companies when they just happen to use technology to solve a problem, but that’s a topic for another discussion.

The programming means used could be anything, from spreadsheets to programming languages (or what tech bros would accept as programming languages because Excel and CSS are not programming 🤬). And again it is more about getting the job done than how the job gets done. So using state of the art tools will not be the goal. Not most of the time at least.

This is in many cases is dictated by what the job is. For many cases spreadsheets are enough, plenty of business run just fine on them. For other jobs you might need different tools, Haskell for example is used a lot in fintech, where the focus on getting things right and correct is at the core of the business.

A great example of this is remoteok.io

tweet by @levelsio

The argument here is not that frameworks are bad or that you should use jQuery instead of a modern JS stack. The argument is, if you care about the result use the tools that you are more comfortable with, you don’t need the last shiny thing everybody is talking about on Twitter.

Programming as the means on itself

These people are programming for the sake of programming (ie. as much for fun and interest than as for profit), they are doing research on programming, they are developing programming languages, libraries or frameworks to enable others to program. Academia is on this side of the spectrum. A lot of open source is on this side of the spectrum as well.

Spreadsheets are an area of research as well. Even by some of the same great minds that research academic languages like Haskell.


ChatGPT (GPT-4) version

Title: Programming: A Means to an End or an End in Itself?

There exists a spectrum of programmers, ranging from those who view programming as a means to achieve something else to those who consider programming as the end goal. While this distinction is not binary, it is helpful to discuss these two categories of programmers and the various shades that lie between them.

  1. Programming as a means to an end

People who use programming as a tool are usually focused on solving a specific problem that is not inherently related to programming. This could involve tracking their habits, maintaining inventory in a store, selling products, or building a startup idea. Many industries lean towards this side of the spectrum, with startups often marketing themselves as technology companies even when their primary focus is solving problems using technology.

The tools used by this group of programmers can range from spreadsheets to programming languages, depending on what gets the job done most effectively. For these individuals, the focus is on achieving the desired result rather than using state-of-the-art tools. The choice of tools is often dictated by the nature of the task at hand. For instance, spreadsheets might suffice for businesses that require simple data management, while Haskell, a language that emphasizes correctness, is popular in the fintech sector.

A notable example of programming as a means to an end is the website remoteok.io. The creator, @levelsio, shared on Twitter that the website generated substantial revenue with a single PHP file called “index.php” and minimal use of libraries or frameworks. The takeaway from this example is that the choice of tools should be based on comfort and familiarity, rather than the latest trends.

  1. Programming as an end in itself

On the other end of the spectrum, some programmers engage in programming for the sake of programming itself, often driven by passion, interest, or research. These individuals might be involved in developing programming languages, libraries, or frameworks to empower others in their programming endeavors. Academia and a significant portion of open-source projects fall into this category.

Research on programming languages and tools, such as spreadsheets and Haskell, attracts the attention of both industry professionals and academics. By delving into the intricacies of programming languages and tools, these programmers contribute to the advancement of the field and enable others to leverage programming more effectively.

In conclusion, the programming landscape is diverse, with various motivations driving individuals to engage in programming activities. Understanding this spectrum can provide valuable insights into how different types of programmers approach problem-solving and contribute to the field.