Skip to main content

Marxist programming

 





I plan to write on technology and culture in this series of blog posts. This is the start of the discussion of the cultural parts of programming. The idea started with a joke during afternoon coffee at work, and then I made a speech on the matter at an internal conference, also as a joke. When I think about it, it deserves to be more than a joke, so I will dig into the subject.

I was into politics when I was younger, which made me read some Marxist theory. I am not a Marxist by ideology, but I find his way of analysing society interesting. I usually present my political view as a Marxist Liberal, half to provoke, as liberals don't like Marxism and Marxists don't like liberals, but also halfway true: I share a lot of liberal values and don't like the autocratic ways of the Marxist countries. On the other hand, I think liberalism is naive in many ways, as the economic forces make a lot of people unfree. Freedom for the individuals is what I want. Freedom to live even in a conservative manner.

This blog is not about politics, so I will not elaborate on that. This series of blog posts will, however, provide an amateur Marxist analysis of programming and technology, focusing on how technological advancements influence societal structures. It applies dialectical materialism to examine the interplay between technological 'base' (infrastructure and labour) and 'superstructure' (social norms and laws). The discussion extends to technological determinism, highlighting contradictions like increased connectivity versus privacy concerns.

Key themes include the role of software development tools as the "means of production" in the digital age, class struggle within the tech industry, and the commodification of software. The concept of alienation among programmers and the balance between technological determinism and the social shaping of technology are also explored.
Finally, the series addresses the digital divide, technological inequality and the impact of globalization and outsourcing on labour distribution. This analysis aims to provide insights into the complex relationship between technology, programming, and social dynamics from a Marxist perspective.

Comments

Popular posts from this blog

The Industrial Vs the AI Revolution

The transformation of society through technological revolutions has constantly fundamentally reshaped the labour structure. The Industrial Revolution, for instance, marked a profound shift in work for the labouring classes, moving them from farmers' fields and industries into factories. Today, the so-called AI Revolution promises to bring about a similarly seismic shift, not for manual labourers but for the office and intellectual workers who were once considered relatively insulated from mechanization. While the material and historical circumstances differ, the underlying forces remain strikingly parallel. Changing the Nature of Work During the Industrial Revolution, the mechanization of production displaced artisans and craftspeople, as machines took over tasks that had required years of training and skill. This was not merely a displacement of labour but a profound de-skilling of workers, whose tasks were broken into repetitive, machine-supervised steps. The labour force expande...

Evolution Of Programming Languages in an AI perspective

Programming languages are at the heart of possibilities in software development, evolving to meet the growing complexity of the problems we solve with computers. From the early days of machine code and punch cards to the modern era of high-level languages and AI-augmented coding, the journey of programming languages reflects humanity’s relentless pursuit of abstraction and efficiency. As artificial intelligence begins to reshape the landscape of software development, we are poised to enter an era of AI-powered programming languages—tools that will fundamentally change how programmers approach their craft. From Punch Cards to High-Level Languages The earliest programmers worked directly with machine code, encoding instructions in binary or hexadecimal formats. This labour-intensive process required an intimate understanding of the underlying hardware. Punch cards, though a technological marvel of their time, epitomized the low-level nature of early programming—tedious, error-prone, and ...

Yearly Educational Goals vs. Agile Team Learning

At this time of the year, employees often have their yearly reviews and set goals for the following year. From an agile point of view, this is an antipattern. The Agile methodology promotes continuous improvement and adaptation. This philosophy often needs to match this traditional approach of setting fixed yearly educational goals for developers. This discrepancy can be analyzed regarding how these educational strategies align with the interests of labour and management within the industry (as opposed to the orchard)  and how they contribute to or alleviate the alienation and class dynamics inherent in the tech workforce. Yearly educational goals in software development typically involve predefined objectives that developers are expected to achieve within a set timeframe. While this approach provides clear targets and a sense of structure, it can be rigid and limiting in a field known for rapid technological changes and evolving project needs. Such goals may become quickly outdate...