
Or is that BIBO: Bias In, Bias Out?
The rapid evolution of artificial intelligence raises profound ethical questions with far-reaching implications for our autonomy as human beings. However, today, I want to focus on a more immediate challenge: workplace displacement and its impact on the job market.
Some argue that AI assistants will usher in a new era of hyper-creativity, while others fear mass layoffs as intelligent automation outperforms well-paid professionals. Why pay a solicitor £250 an hour to resolve a business dispute when an AI-driven consultancy can handle the same task at a fraction of the cost? With the latest AI models, web services can parse mountains of Kafkaesque legislation in seconds and recommend a course of action just a few clicks away. Yet, when it comes to non-verbal human interaction, we are still a long way from reaching the singularity.
Over the last six months, I’ve tested various AI coding companions with mixed results. Many analysts suggest that programmers may soon follow in the footsteps of typesetters. While code-completion tools like TabNine, GitHub Copilot, and Codeium can significantly boost productivity, they cannot replace a solid understanding of data architecture and software design principles. Developers who rely too heavily on AI without mastering the fundamentals risk introducing performance bottlenecks, reliability issues, and unintended side effects. More importantly, they must remain aware of machine learning’s limitations—an AI-generated suggestion may be well-structured yet fail to align with the intended logic, merely predicting what a developer might type next rather than intelligently reusing custom helper functions.
Just as we transitioned from hand-coding assembly to higher-level languages like C, C++, Java, and C#, and later to more accessible scripting languages like Python and JavaScript, we may soon rely on large language models (LLMs) to translate technical requirements into robust, high-performance code. Instead of manually debugging thousands of lines of poorly documented code, we could focus on defining validation criteria, running unit and integration tests, benchmarking performance, and instructing AI assistants to refactor inefficient algorithms. As always, the devil is in the details.
Why, then, would anyone invest the extra time and effort to learn lower-level languages like C, with manual memory management, or grapple with Rust’s borrow checker when they could be far more productive using simpler, untyped interpreted languages like Lua? The short answer has traditionally been performance. Easier scripting languages, with their higher levels of abstraction, are generally more beginner-friendly, whereas strongly typed, compiled languages offer fine-grained control over data structures and memory management but come with a steep learning curve and greater attention to detail.
Historically, we have traded the faster development times of scripting languages for the raw performance of compiled ones, particularly when building minimum viable products (MVPs) for startups. Companies as diverse as Twitter and Facebook initially relied on frameworks like Ruby on Rails and the HipHop PHP compiler. Once they had viable businesses with millions of users and advertising revenue, they could invest in scalable solutions and hire top-tier systems programmers and infrastructure engineers. This allowed more creative frontend and mid-tier developers to focus on the rapidly evolving details of customer-facing UX and UI.
However, with AI coding assistants, hard languages like Rust become compelling choices outside their niche of systems programming for anything from rapid API development to Web apps, not because developers need to master their intricacies, but because they do not or, more accurately, only at a conceptual level. AI can handle the minutiae of lifetime management or the boilerplate of defining custom structs and enums with generics. A language like Rust could then act as an intermediary representation, precise and performant enough for machines, yet intelligible to skilled developers for oversight or debugging.
Unlike higher-abstraction languages, Rust’s fine-grained control, smoothed over by AI, ensures safety and efficiency without sacrificing flexibility. The result? APIs that are fast, reliable, and future-proof, with AI bridging the gap between human intent and Rust’s low-level power.
AI can also help with cross-compilation and migration. Let us suppose your lead mobile developer is most comfortable within the Apple eco-system with a strong preference for Swift and X-Code, but you need to support Android and desktop users too. Until recently, you may have weighed the pros and cons of hiring an experienced Android developer or choosing a cross-platform suboptimal frameworks like Flutter or React Native resulting in larger app download sizes and greater drain on battery life. Coding assistants can not only port your code base, but they can also advise you on how to make the best use of inbuilt platform services.
In data science and language model training, where Python still reigns supreme, there has been much hype about Mojo and its potential to combine pythonic simplicity with C-level performance. I foresee that with coding assistants, developers may choose the flow-code representation they feel most comfortable with and then drill down to the native source code when necessary, boosting productivity and letting us focus on functionality, data integrity and efficiency.
What does this mean for the millions working in software development, whether in coding, design, or data? Essentially, the days of needing an army of narrowly focused coders churning out repetitive lines of code are coming to an end. Instead, the future belongs to adaptable, big-picture thinkers, sometimes called lazy programmers, who focus on the whole system rather than isolated fragments. Success in this new landscape will be less about grinding out code and more about mastering the key pillars of software development: thoughtful architecture, intelligent use of design patterns, robust data modelling and a sharp performance optimisation. Demand will remain high for those who can weave these elements together to build efficient, scalable systems. However, if your primary strengths lie in rote learning, fast typing and syntactical perfection, you may soon find your skillset redundant in an AI-assisted world.