How is the AI Movement Affecting My Software Engineering Job?

The rise of AI has brought about numerous discussions within the software engineering community about whether AI will take our jobs. This is understandable, given the incredibly rapid advancements in AI in recent years, a pace that seems to accelerate daily. AI is the dominant theme at many conferences, in newsletters, blogs, podcasts, and even in everyday conversations. It’s easily accessible and has become a part of many software engineers’ daily work lives, as well as their personal lives.

I don’t want to focus on popular debates such as “AI can’t take our jobs because…” or “How can software engineers use AI effectively?” Instead, I want to share my firsthand observations and experiences.

Firstly, I don’t believe this is just hype that will eventually fade away. While there are certainly gaps, ethical issues, security concerns, and instances of over-promising and under-delivery, even the current capabilities of AI have significantly changed the lives of software engineers. Recent developments regarding the cost and affordability of AI, such as the DeepSeek models, indicate that this trend is sustainable. On the other hand, I don’t consider myself a heavy AI user. I feel I primarily use it for very common, baseline scenarios.

I currently work at Meta as a software engineer, primarily on backend systems. Meta has been developing its own Llama AI models. We have access to these Llama models with Meta’s internal context, as well as third-party models (ChatGPT, Claude, etc.) without internal context. The AI agent is integrated into aspects of our daily workflow, such as our browser and IDE (VSCode), and we can also use these models via APIs as part of our own platforms and tools.

One of my top use cases for the AI agent is fixing the grammar in my posts. I often make typos and have poor grammar, so I always appreciate a tool to correct them. Personally, I use Grammarly, and at work, I use Microsoft Editor. I find AI agents to be very effective for this task. While grammar correction is my most frequent use case, I also use them to adjust the tone and summarize content. Sometimes, I ask for feedback on whether a post or document effectively serves its purpose. For example, I might ask, “I want to convince Team X of the impact of Project Y with this document. Could you recommend suggestions to improve it for this purpose?” or “These are expectations from me, and this is my self-review document. Could you recommend suggestions to make the mapping between the two clearer?”

The AI agent has also replaced our internal search function to a significant extent. Big tech companies are known for having numerous custom-built tools and platforms, and Meta is no exception, even having its own custom programming language. My use of internet search engines had already declined significantly after I started working at Meta because I couldn’t find information about these internal systems online. I could only rely on Meta’s internal search capabilities. However, if the documentation for these custom tools isn’t comprehensive, the internal search isn’t always perfect. You often need to piece together information from various wikis, posts, and comments to understand something. The AI agent performs a similar task: it searches different internal resources, combines the information, and provides a summary. If you’re not satisfied with the summary, the agent shows the references it used, allowing you to consult them directly.

Meta uses the Hack programming language, an open-source language that isn’t widely adopted by many other companies. While regular coding is part of my daily work, it’s not the primary focus; I read much more code than I write. Consequently, I tend to forget specifics about Hack quickly. I frequently use the AI agent to ask questions like, “How can I do X in Hack?”. Most of the time, I can quickly find the answer since the model has access to the entire internal Hack repository. While the results aren’t always perfect, they are improving daily. It’s still more efficient than leaving the IDE to search on a browser and jumping between multiple tabs.

Despite these uses, I still use regular internet search more often than the AI agent. I also don’t use an AI agent app on my mobile phone. I don’t have a strong opinion on mobile agents, mainly because I haven’t felt a significant need for them yet.

I also use the AI agent for partial code completion. The agent is integrated into the IDE and offers code suggestions. However, I wouldn’t say I use it extensively. It’s helpful for repetitive code, but I often find it produces incorrect suggestions, and I dislike having to stop and fix the generated code, as it disrupts my flow and concentration. I find it more useful for generating test cases, especially for test data tables. These tables often have similar structures, with each entry testing a different condition, making them well-suited for AI generation. The agent successfully generates potential candidates for these.

I haven’t yet found the AI agent to be effective for significant code generation. We have many code generation use cases and existing traditional code generation frameworks for these tasks. For instance, we implemented a new API framework and want to automatically migrate APIs from the old framework to the new one. These two frameworks use different Domain Specific Languages (DSLs) to define APIs, so the specifications need to be translated. While AI model-based code generation is good for simple scenarios, it can be challenging to provide enough context for complex ones. The primary challenge with AI-generated code is validation. We can write unit tests for traditional code generation framework usages and have high confidence in their output. However, this isn’t as straightforward with AI model-based code generation. We need more sophisticated validation approaches for its output. We are currently analyzing the trade-offs between cost and benefit, cost and reliability, etc., for these scenarios. If we can get the agent to generate code for these migration scenarios cost-effectively with acceptable reliability (which is hard to define), I would be completely open to using it.

I also don’t frequently use the AI agent to generate entire functions and classes based on prompts. This is largely due to my coding scope. It definitely makes sense to use them for creating data objects and handling repetitive tasks, especially in verbose languages like Java. However, I am hesitant to use them to generate complete components or tools without a robust validation process and a thorough code review.

I’ve noticed many people transferring to AI-related teams at Meta in recent years. Previously, I thought AI-related teams were solely composed of researchers and Machine Learning engineers with PhDs. However, that’s no longer the case, as there are many different areas and use cases related to AI development. Therefore, you don’t necessarily need to switch to an AI-related team to work on AI-related projects. For example, as I mentioned with the API migration scenarios, if we can leverage AI to generate the migration code, we are engaging in AI-related work. Many believe the rise of AI is similar to the rise of mobile and big data, or perhaps the rise of microservices and front-end frameworks in terms of its technical impact. Everyone is talking about it, and everyone is doing something related to it. Consequently, many people want to seize the opportunity, become early adopters, and be part of this movement.

Furthermore, companies are either firing engineers from non-AI-related departments or freezing hiring in those departments to allocate more resources to AI-related roles. When examining engineering job openings at major tech companies, many are AI-focused or highly specialized non-AI roles like compiler optimization, graphics drivers, or mobile device security. AI-related jobs encompass more than just machine learning engineers; they include broader roles such as ML data infrastructure, ML ops, AI security, AI privacy, and feature engineering. It’s natural for people to want to pursue more AI-related work to align with industry demands. On the other hand, you don’t necessarily need to work on core AI projects, as AI is becoming integrated almost everywhere, and more generalist software engineers are working closely with AI to implement use cases in various products.

We are seeing significantly fewer job openings for generalist software engineers these days. While AI is a contributing factor, it’s not the sole reason. This trend began in the post-pandemic era with mass layoffs, followed by hiring freezes and a focus on very specific roles, a situation that continues due to global economic challenges and uncertainty.

This doesn’t mean generalist software engineering roles will disappear in the near future, but the job market for them is clearly much narrower than before. If you have the opportunity to explore more AI-related work, it might be a good idea to learn more about it practically.

At this point, I believe no software engineer can afford to be indifferent to the AI movement, regardless of whether they see it as hype or not. It is affecting your career and job, and it seems it will continue to do so. It’s not about getting a PhD and becoming an ML engineer; it’s about understanding the extent to which you can leverage AI to perform your job more effectively. What tasks can you delegate to AI, and what tasks should you prioritize? How can you thrive as a knowledge worker in this era? What are your unique capabilities, and how can you leverage them?

These are questions I need to consider carefully, and many others are already doing so, sharing their insights through posts, newsletter, research, and books.

Comments

comments powered by Disqus