GenAI and I (as a Software Developer) — Part 1

Itiel Maayan
AT&T Israel Tech Blog
5 min readJan 24, 2024

Generative AI has emerged as the major technological breakthrough of 2023. As for any new technology, it brings promises and challenges but also fears. In this two-article series, I am going to talk about the two things that I think we, as the developers’ community, need to think about before rushing to implement generative AI:

  • The fear that developers have — that generative AI tools will replace them. This article will address those fears (GenAI and I — Part 1).
  • The copyright legal aspects of creating and using artifacts built using generative AI. The next article will discuss those aspects (GenAI and I — Part 2).

Why I Should Be Afraid of GenAI

We all hear that generative AI can do a lot of things developers do today, such as:

  • Writing code and even simple apps
  • Improving existing code: identifying defects, finding vulnerabilities, enhancing the code, and more
  • Design and documentation: documenting existing code, creating diagrams, proposing data structures, etc.
  • Implementing coding tasks: converting old code from one programming language to another, switching API protocols (for example, from SOAP to REST), and more

If this is true (and all the above is true), maybe tomorrow, the solution architect will prepare an intelligent prompt and boom — we will have a system? Scary! What purpose will a developer serve then? What will I do? Will generative AI result in the next “shift left”? Will the center of gravity be moved to Design/Prod? What’s next?

Why We Shouldn’t Be Afraid — A Prophecy

Jewish tradition maintains that from the day the temple in Jerusalem was destroyed, prophecy has been granted only to fools. At first, I thought of naming this section a forecast, but a forecast needs to be based on facts. As generative AI is a different beast, and there are no facts to be based on, I replaced “forecast” with “prophecy”- I’m willing to take the risk ;-).

My take is that generative AI will not be able to replace a developer, not even a beginner. It will not be the pilot and build an entire app — it will always have the role of co-pilot. Generative AI will assist developers, and it will very soon become a mandatory skill for developers to have in order to be efficient, productive, and write quality code.

When we write and build code, there are many aspects that no machine, no matter how smart, will be able to perform 100%. These types of tasks require human intervention that may include:

  • The experience of what works and what doesn’t (even though a co-pilot can have infinite experience, this cannot be compared to experience about the app, the echo system, the organization, and gut feeling)
  • The ability to manage and take calculated risks
  • The ability to balance time, effort, scope, quality, and budget. (Dev time is not included as with generative AI, it is almost zero. Time and effort are for everything around coding — integrations with 3rd parties, testing, DevOps, FinOps, test data, enumerations, code tables, data ingestion, usability/UI/UX, training, etc.)
  • The ability to look at the entire system/ecosystem and build a solution that will fit in (standards, technology, architecture, toolchain, etc.)
  • The ability to design a data model that is tuned to the business and to choose the appropriate combination of SQL and non-SQL databases and the specific database engines
  • The ability to design the optimal solution to address NFRs (Non-Functional Requirements), such as resiliency, redundancy, performance, usability, etc. There are no direct solutions for NFRs nor can we provide full and perfect solution - we need to prioritize and balance timelines, budget, business requirements, risks, etc.
  • The ability to use internal libraries and open-source components (be up to date with what we have, the precise capabilities, what has been changed, process pull requests, and contribute when something is missing)
  • The ability to add the cost to the equation (FinOps, products needed with our company discounts, libraries needed, human resources, consultancy, labor laws, premises, infrastructure, etc.)
  • Know the organization standards, methods, policies, methodologies, approved tools, components, and libraries and act upon them (it is not practical to upload all wikis, portals, SharePoint sites, documents, diagrams, workflows, etc. into an AI prompt and constantly maintain it)
  • Know the internal processes for approving a new technology, library, or tool
  • Know internal patterns, policies, and guidelines for using infrastructure such as loggers, cache, message queues, notifications, monitoring, alerting, analytics, etc. and how to balance them
  • Be up to date with cutting-edge technologies, methodology, and tools. Generative AI learns from examples, and it takes time until we have collected enough, while developers are the ones creating those examples using new tools and technologies
  • Understand the full impact of a change and approve a pull request, not from the app code but from an organizational perspective, implementation considerations, politics, impacting external events, etc.
  • Divide a system into MVPs and decide what will be “real” code, what will be mock, and with which simulators, and then refactor
  • Know how to interface with internal and external systems — methods, gateway, authentication, authorization, proxies, firewall rules, etc.
  • Know the culture of the organization and act accordingly

Generative AI as the Co-Pilot

Generative AI as the co-pilot will help me as a developer in many tasks, among them:

  • Write pieces of code that I’ll use in my code
  • Refactor and improve my code
  • Prepare an optimized SQL command for me and/or improve my SQL commands
  • Prepare macros, functions, and code snippets for me
  • Document my code
  • Find defects and vulnerabilities in my code
  • Convert “things” (one programming language to another, one protocol to another, etc.) for me
  • Teach me
  • Create white-label UI based on a template for my customers for me
  • and more

Conclusion

As I see it, generative AI is a fantastic technology that will improve the lives of developers. It will help create better code faster. But, it will never be able to replace developers. We have nothing to be afraid of using this technology. We should be afraid of not embracing it fast enough and being left behind and being worth less (not worthless).

Now that we are rushing to embrace it, we are ready for the next part — Understanding the implications of copyrights and royalties while using generative AI in our engineering processes.

--

--