Why Should We Learn the Foundations of Computer Programming with no Help of Automated Tools or Automation Software?
Why Should We Learn the Foundations of
Computer Programming with no Help of
Automated Tools or Automation Software?
Jeferson L. R. Souza, Ph.D.
thejefecomp@neartword.com
18 September, 2026
Dear readers, welcome to another post! This one is special, as it short yet discussing the challenging task of learning the foundations of computer programming with no help of automated tools or automation software. With advances in software engineering, and with the introduction of Artificial Intelligence (AI) to accelerate the development processes, almost everything gets automated by a tool. All the details related to compiling, linking, running, testing, packaging, and deploying a program developed in a given programming language get masked by either the pressing of a button in an Integrated Development Environment (IDE) such as Eclipse [1], or the execution of an automated command such as “mvn compile" on Maven [2], or even by a prompt we can provide, e.g., to Claude [3] as follows:
“Create a program using the Java language that provides an iterative and object-oriented implementation of the Fibonacci’s series, ensuring only valid input is accepted, also creating unit tests to assert the correctness of the implementation generated. Please, use Maven to make it easy to run and to test the program implementing the Fibonacci’s series.”
Learning the foundations of computer programming with no help of automated tools, or automation software, is indeed a challenging task when we consider the evolving environment of a production-oriented approach, where a result must be delivered as fast as possible, and usually tightly integrated within the automated workflow. It leaves no choice but automating things since the beginning, even if there is little or no knowledge about how things really works behind the scenes.
When we press a button in our preferred IDE, execute a single command in the console with few parameters, or even use AI to “do the thing”, “doing the thing" to compile a bunch of source codes into an executable program implies that the different stages of what really happens get clouded to either a newcomer or an unconscious mind. The basic tools provided by programming-language creators (e.g., javac, java, and so on) get replaced by the requirements to materialise configuration files, scripts, resources, and sometimes learning a new syntax, language, or prompt style to automate the process of generating a program...and getting it running correctly. Maven [2] and Gradle [4] are the most famous examples of automated tools for that purpose, as well as Claude [3], the most famous AI-based automation software used throughout the entire Software Development Life Cycle (SDLC). The questions popping up in the mind are: (1) Is it really beneficial to become totally dependent on the tools we are using to develop, compile, and execute our programs in an autonomous way? and (2) Are we sure about the problem automated tools and automation software solve in the SDLC?
When we start asking ourselves what really happens behind the scenes, we may get surprised that, at the end of the day, what has been executed by either an IDE, an automated tool, or an AI-based automation software is, in majority of the time, a sequence of commands from tools provided by the programming-language creators we can directly use for development activities. The importance of learning the basics related to a given programming-language compilation tool before enrolling in the world of software development automation is then fundamental to understand what the problem that aforementioned automation tools and AI-based software solve. If we get into a specific scenario where there is a pressing concern to fine-tuning either the compilation process or the execution environment, what could we do about that if we find ourselves totally dependent on the automated processes?
The aggressive use of AI to automate the distinguished stages of the SDLC brings the benefit of delivering fast results although it sacrifices the learning curve of understanding the whole solution for a less experienced software engineer. Thus, enhancing the acquisition of knowledge related to the different software development processes makes us let automated tools and automation software out of the table at first; and it is for obvious reasons.
Becoming thinkers instead of repeaters is essential to distance the self from the illusion of learning a programming language through the simple task of pressing few buttons on an IDE. The art of software engineering is more than that, and as artists of writing code, knowing the details make our art even more unique, whether we start using AI-based tools or crafting and assembling the different pieces of software ourselves.
Let us think, learn, and understand how to properly "do the thing'' when required to while performing our daily activities :-D.
Available also in a signed pdf version: https://drive.google.com/file/d/18cgwi75hv1_BqD05ubgtbCDvwWdcgvFU/view?usp=sharing