The Art of Code: The Crucial Balance Between Computer, Developer, and User

Mehmet Fatih KILIÇ
3 min readJust now

--

The long-standing debate in the art world about whether art is created for art’s sake can be analogously translated to the software development realm with the question, “Is code solely for code’s sake?” This inquiry examines whether code is written merely to generate functional programs or if it serves a broader purpose.

As artworks emerge not only from aesthetic considerations but also from the intent to convey messages or impact society, software transcends being a mere sequence of commands understood by computers. As Martin Fowler aptly states, “Any fool can write code that a computer understands. The challenge is to write code that humans understand.”

In this light, coding can be viewed as a form of art akin to how a painter expresses their vision on canvas. A programmer articulates their ideas and solutions through code. However, there are three distinct “audiences” for this art form: the computer, fellow developers, and end users. This article explores the delicate balance among these three elements and their significance in software development.

Crafting software requires maintaining this fragile balance among the three audiences:

  • Code for the Computer: This involves writing code the machine can comprehend and execute efficiently.
  • Code for the Developer: The code should be readable, maintainable, and adaptable.
  • Code for the End User: It must meet user needs and function seamlessly.

Achieving this balance at every stage of software development can be challenging. The priorities may shift based on the project’s phase and objectives, necessitating careful adjustment during the planning process for each stage.

To illustrate, let’s consider the different phases of a project:

Prototyping and MVP (Minimum Viable Product) Stage: The user experience should take precedence here. Rapid iterations and user feedback should be prioritized, making “Code for the End User” the primary focus. At this stage, obtaining basic input from users or quickly implementing core functionalities is crucial.

Scaling Stage: During this phase, code optimization becomes vital. Performance and efficiency are paramount, shifting focus to “Code for the Computer.” Solutions should be developed to handle large data volumes swiftly and utilize system resources more effectively.

Maintenance and Development Stage: In this stage, the code quality for developers gains significance. Readability and sustainability become essential, emphasizing “Code for the Developer.” The aim is to make the code more understandable and maintainable while establishing good documentation and a flexible structure for future enhancements.

If these three elements are not harmoniously planned:

  • Code written only for the computer could become cumbersome and resistant to change.
  • Code written with only developers in mind could lead to performance problems.
  • An unyielding focus on the end user can lead to systems that are unsustainable in the long term.

Software development should embrace the philosophy of “code for everyone” rather than “code for code’s sake”. The key to successful and sustainable projects is to write code that is understandable to computers, maintainable by programmers, and usable for end users.

I will discuss methods to achieve this balance and the characteristics of teams that can effectively implement these strategies.

--

--

Mehmet Fatih KILIÇ

International Trade, Technology, and Digital Transformation Enthusiast, General Manager @ Hybrone, Co-founder of Natilon, OpenPandora