'AI will replace programmer', they said


Kidding.


LLMs are still too stupid and easily ‘hallucinate’ especially in project with super-huge codebase or in use of unfamiliar technology. In simple term, it doesn’t replace ‘engineer’ but it replace some ‘activities’ done by the engineers.


Let’s say you want to create a website. If you let AI to code the website, it will recommend the most bias and popular framework in tech industry: a fullstack NextJs framework with ShadCN components, Go back-end, don’t forget a Postgres database because they’re highly trained to Supabase that build upon Postgres as its bare-bone infrastructure.


When the AI forced to take other technology such as NuxtJs or VueJs with Rust back-end, they suck. They tried their best using tool-calling to search for reference outside of their knowledge, embedding it into their context, wasting their token, and be ineffective over time compared to when they use the technology they trained on.


In this sense, some ‘engineers’ are really replaceable by AI. The replacable ‘engineers’ are those who do activities the same as the AI.


Those who write unscalable code, those who code without considering business needs in the future, those who write code that prone to security issue, those who code without considering other people within the organization. The similarity between these replacable programmers or engineers with the AIs are: limited knowledge/context. Both are the same in the way the consume information: They are not proactively learning, they wait to be teach/learned.


On the other side, being overly defensive over AI is not good either. AI allow engineers to excel over repetitive activities or activities they are not capable. For example, as a back-end engineer, I need to ensure that my code are reliable, I usually write unit tests to enable these reliability over CI/CD pipelines. Writing unit tests are repetitive activities, these activities can be delegated to AIs so it can produce test cases and edge cases that I may miss. They can be helpful in this kind of settings.


Another eaxmple, I was in a settings where I need to setup 4 servers with identical package installations and project. In this case, I’m thinking of using Ansible to automate the tasks, but unfortunately, I’m not familiar with Ansible at all. In this case, I asked AIs to orchestrate the Ansible code while keeping all secrets and configurations are safe.


AI may replace me. If and only if I stuck in technologies that aged 1-2 years ago. Not keeping up my React or Vue versions, still using Laravel 10 or below, not following latest updates about Typescript features. In short, being defensive, conservative, sceptical over new technologies and techniques would allow me to be replaced by AI.


To be more precise, AI may optimizing specific fields but also deoptimize some specific fields. After some trial and error using AI, as a back-end engineer, I see that the use of AI optimize my front-end development side. AI slightly increasing my performance in back-end side, especially in maintaining code reliability via unit tests or integration tests. I see a deprecating performance in infrastructure or deployment side, it seems I’m too warry about how it might break the deployments, except I use Terraform or Ansible from the start and let the AI to handle it from the start also.


In this sense of utilizing AI, we can see that I already replaced a Front-End engineer (without exceptional taste and skill), SDET (Software Development Engineer in Test), and partial parts of Devops.


From the start, I never see a specialist is an “only-backend engineer” or “only-frontend engineer”—I see specialist in tech as someone who familiar with backend, frontend, devops, database, and all related parts in tech. They are a true Tech Specialist in the future, not a Specialist-Specialist.