Mohanraj Synthesis Paper
Mohanraj Synthesis Paper
Development/Engineering: The
Relationship
Prithika Mohanraj
Intern/Mentor G/T
In a world where AI is continuously growing, software developers and software engineers can
face strong implications as AI becomes more integrated into their field. In order to recognize
these implications to allow software developers and engineers to take action or worry about
their job stability, this paper will investigate the relationship between Artificial intelligence
(AI) and software engineering/development by identifying and analyzing the major impacts
programs/code, bugs, and companies. Using secondary research with interviews as well as a
efficiency, and company process optimization, showing the great potential of positive growth
in software engineering and development as this field integrates more AI. This paper ends by
AI into their field from the newfound knowledge gained from this paper, thus improving
Do software engineers and developers worry about their future? Artificial Intelligence
engineers/developers, a few of the many people who help enhance AI for society. As they
help provide the foundations for AI, AI impacts them just as much. Investigating the
complex relationship between AI and software engineers and developers can provide insight
of the impacts they have on one another. While some software developers/engineers may be
worried about the threat AI may pose to their jobs, AI can have a positive relationship with
different aspects of the software development/engineering field. The purpose of this paper is
to guide readers through the benefits AI brings to developers by boosting their productivity
and aiding in bug detection to improve the code, explore the benefits AI brings to companies
by helping to optimize their tasks, and introduce the potential threat software
engineers/developers may face due to the possibility of AI taking over. However, after
describing this issue, this paper will refute the claims by providing evidence-based research
to share why this should not be a worry to later analyze and conclude the positive relation AI
Background
society continuously advances technologically with products such as iPhone’s, VR, etc.
Artificial Intelligence plays a key role in enhancing these products. Artificial Intelligence is
1
behavior” (Merriam-Webster). Artificial Intelligence sprouted from the 1950s (Tableau). In
1950, Alan Turning, most famous for introducing AI, published his book “Computer
Machinery and Intelligence” in which he introduced the idea of computer AI to the public
(Tableau). From there, AI’s popularity grew as more and more programmers built
self-sufficient codes and AI models on computers such as the checkers game built by Arthur
Samuel (Tableau). Throughout the 60s and 70s, AI's success continued over the next few
decades. After the AI market collapsed from suffering financial setbacks, the so-called “AI
winter” during 1987-1993, AI came back in full speed with new “AI Agents” and “Artificial
General Intelligence” (Tableau). These agents are essentially new technologies and this
general intelligence is AI technology we now know today such as AI for marketing assistance
in big companies such as Twitter and Netflix, Siri, ChatGPT, etc. (Tableau). Through its rapid
and intense development over the past couple decades, AI has become more involved in daily
One of the core facets that make AI work is its programming. Behind the scenes of
Artificial Intelligence, there is a lot of code that goes into making this tool perform human
tasks such as speech recognition, summarizing information, etc. ("The Ultimate Guide,"). The
code serves as a set of instructions that these AI systems can read, follow, and execute to
perform the way they do. Without this set of code, these AI systems would simply be
stationary tools that would have no purpose other than to occupy space. Software engineers
and developers specialize in building these code or programs that AI-powered devices can
read, follow and execute (IBM). This code serves as the foundation of Artificial Intelligence
to ensure AI systems and physical AI technologies function correctly. Taking this into
2
account, it’s important to examine how AI gives back to software developers and engineers.
Meaning, looking at how AI impacts the software engineers and developers who code for it
in the first place. This research takes a look at aspects of the relationship between AI and
software engineering/development to see what AI does for those who provide its foundations.
Review of Literature
development/engineering as it can help boost developer productivity. With the help and aid
of AI, developers can save time and efficiently code as they can now shift their focus and
priorities as AI helps accomplish simple and repetitive tasks. Stavridis has found that
“developers often find themselves struggling with time constraints and code quality” which
can make it difficult for a developer to be productive (Stavridis et al., 2023). However, these
issues will no longer prevail since AI can accomplish simple tasks, save time, and shift
priorities. According to Skygran, “AI will mean that routine and basic code writing will be
displaced and generated automatically. Consequently, manual programming and the roles of
coders and developers will move to creative and more sophisticated tasks” (Skrygan, 2023).
As AI takes care of these simple, repetitive tasks, developers have the ability to shift their
To add onto this efficiency aid, without the help of AI, developers would spend long
hours doing tedious tasks. As with the case of Mr. Khan, a senior software developer himself,
he mentioned that it would usually take him eight-ten hours to complete a program, but
with the help of AI tools such as GitHub Copilot and ChatGPT, which automatically
3
generated code and code suggestions for him, programming the same project would only
take him two-to-three hours to complete, saving an immense amount of time of development
(B. Khan, personal communication, December 29, 2023). With this time saved, not only was
he able to focus on building other programs but AI gave him the freedom and opportunity to
do so as it helped him code the project in the first place, thus immensely boosting his
productivity. Meaning, he could deliver more projects to his clients with greater efficiency.
This underscores the positive relationship AI has to software development as it saves time
with code automation, which again, has the power to boost developer productivity .
simple tasks and allowing for a productivity boost through shifted focus, AI can help with
decision-making and managing and planning tasks which can save time and boost work-day
productivity for developers. A software development company has many moving parts that
need to be constantly overlooked for a smooth run of business. However, having limited
people or limited time to take care of all these duties can be stressful, demanding, and
and companies can use to plan and manage tasks. According to Barenkemp, AI aids in
planning tasks in terms of task assignment and human resource allocation which reduces the
complexity and time needed to go into planning what needs to be done which can
“maximize the team's performance” (Barenkamp et al., 2020). As AI saves time in planning
and managing tasks, this increases developer productivity and efficiency as extra time does
not need to go into task delegation or allocation. With this time saved by AI planning and
management tools and a clear schedule of tasks, developers can have a distinct idea of what
4
needs to be done and they can efficiently check their programming to-do’s to deliver
products faster with better quality, highlight how AI maintains a positive relationship with
Not only can AI serve as a company and developer team task management assistant,
but it can serve as a personal task management tool for the developers themselves. Stavirdis
mentions that “As a collaborative entity, AI tools were found to effectively aid developers in
2023). With constant feedback helping the developer improve their code, they can produce
can help boost developer productivity through task management and automated code
generation, both in which save time for the developer and allow him/her to focus on more
development is automated bug detection to improve the code and enhance developer work.
Before discussing why AI automated bug detection can help improve the code and enhance
developer work, it’s vital to look at the how: How do AI automated bug detection systems
work? To provide a simple foundation, a bug is essentially an error in the program that can
cause the program to crash, not execute properly, display the incorrect information/output,
and cause many large-scale problems (Codepal). According to CodePal, it’s “ …important to
detect and fix software bugs because they can cause a wide range of issues, from minor
annoyances to serious security vulnerabilities. Bugs can also affect the performance and
5
reliability of software, leading to crashes, data loss, and other problems” (Codepal).
Essentially, no matter how big or small the bug is, it can cause serious and potentially
identification better than manual bug detection. By continuously feeding the AI system with
training data, which is the data used to teach the AI algorithm to identify certain types of
bugs, AI systems can learn to recognize patterns of bugs and to efficiently and successfully
detect bugs for developers. There are two ways that this is possible. Haddad defines this
possibility through “anomaly detection, where the AI system learns to recognize normal
behavior patterns in the software and then identifies any deviations from those patterns.
Another approach is to use predictive analytics, where the AI system learns from historical
data to predict future errors and bugs” (Haddad, 2023). With these two approaches, AI can
help improve code and developers through automated bug detection. Overall, AI uses pattern
training data to learn about bugs in order to detect bugs (Barenkamp et al., 2020; Haddad,
2023; Codepal).
automated bug-detection can now be understood. This AI bug detection can improve the
code as it debugs any errors the developer can not and it can also help any developer from
any level efficiently code . Before the use of AI automated bug-detection tools, developers
would use various manual techniques that would be tedious and time-consuming. For
testing, automated testing, and code review. They may also rely on bug reports from users or
6
other sources to identify and fix issues” (Codepal). Constant oversight and manual
administration of such code and bugs, protects the developer from causing serious problems
or issues to the project as a whole or towards themselves. With such benefits, AI contributes
to developers' code with quality and efficiency. Supported by Patil, “by leveraging machine
learning algorithms, AI tools can automatically detect and classify bugs, helping developers
identify and fix issues more efficiently. This automation … contributes to overall software
stability,” (Patil, 2023). As suggested by the evidence, this automation can enhance
development efficiency while coding since AI systems can detect bugs more efficiently and
quickly instead of developers spending long tedious hours manually detecting bugs,
Many cases of struggle have been shown prior to the detection of bugs. One such case
includes Mr. Khan. Mr. Khan had suffered with his own share of difficult bug resolution
issues. He described how bug-detection and resolution would take a while and it would be a
difficult time-consuming task whenever the solution was difficult to find. Mr. Khan and his
colleagues would work together with no prevail to resolve the bug. However, after putting
the issue into Chat-GPT, he reported that it immensely helped him resolve the issue quickly,
allowing him to efficiently code further after resolving the bug, supporting the idea that AI
gives solutions to difficult bugs (B. Khan, personal communication, December 29, 2023) .
Upholding the idea that AI aids with efficient coding in bug detection, this again ties with
the idea that AI has a positive relationship with software development as it specifically
7
Given the speed and efficiency of work that AI provides, it’s important to look at the
further impact of this that AI automated bug-detection software entails to developers. This
entailment comes in the form of productivity. Clearly, if developers are more efficient and
faster with their work, they are more productive. When AI is providing solutions to difficult
problems, this means that developers no longer need to take care of many bugs, allowing
them to be more productive as they can now shift their focus to more higher-priority tasks
that may be lingering. As said by Shtechman, “identifying and fixing bugs can be
time-consuming and labor-intensive. AI-powered bug detection tools can significantly reduce
this effort by automating the process and providing developers with precise insights on
where to focus their attention. This allows developers to allocate their time and resources to
developers in this field of bug detection by boosting their efficiency and therefore
enhance the bug-detection aspect of this field through boosting efficiency, productivity, and
can benefit companies by optimizing certain tasks and operations within the company. One
way that exemplifies this is how AI boosts the marketing sector of development companies.
AI relies primarily on data input and analysis in order to produce the output based on its
analysis. Similarly, marketing relies on gathering and analyzing customer data (such as
preferences) to maximize revenue for the company by addressing and catering to those
preferences, which in turn will yield higher customer satisfaction and more purchases to
8
boost revenue. When combining AI with marketing, “the ever-increasing amount of
consumer data available online, in big data systems or mobile devices, makes AI become an
important ally of marketing, as it is based on data analysis in almost every area of its
application” (Jarek & Mazurek, 2019). Essentially, AI can analyze large amounts of data
which tremendously aids in marketing as AI can deliver more useful conclusions that can
boost the marketing sector of a software company based on analyzed data, serving as a
powerful tool exemplifying why AI demonstrates this positive relationship it has with
Along with boosting the marketing sector of a company, AI can automate repetitive
and simple tasks in the company, saving time by shifting the company’s focus to more
important objectives. As a company has many objectives and tasks to do daily, moving
quickly is a must. A company can easily fall behind if it isn’t organized and staying
consistently up to date on what to achieve both long-term and short-term. When a company
is done doing one task, there are easily plenty of other tasks left on the roster to complete.
With this extremely busy schedule, AI can save time and basic tasks by allowing a company
to shift its focus to more important tasks. With the help of AI, “ it allows companies to
develop better products faster while reducing costs associated with manual labor thus
systems take over basic repetitive tasks (as mentioned before with helping with develop
productivity), this allows a company overall to shift its priorities and save time since they no
longer have to worry about these simple tedious tasks and can keep the company workflow
going as they accomplish more with more resources available to them (since manual labor
9
will reduce company costs), overall highlighting the beneficial aspect of AI in company
productivity.
highlighting its positive relationship, there was a fear that AI could take over the jobs of
job in this field. For example, “¨When code generation features … first came out, they were
initially met with skepticism. Developers saw that this technology could generate, test, and
run code and feared that it could make their jobs obsolete” (Gee, 2023). This fear led many
to look at the downsides of AI in software development, steering away from the immense
benefits it could bring. Interestingly, this fear of job replacement is completely untrue for
software developers.
Rather than being a replacement, AI serves as a powerful tool for software developers.
Software development has many facets beyond just coding for customers: understanding
customer needs, connecting business values with products, considering ethics in products,
creatively producing, collaborating with co-workers, and so much more (Sam, 2023). All of
which require actual software developers and not AI, proving how AI is simply an aid.
development/engineering doesn’t only benefit what’s mentioned: the code, the developers,
and the company. AI has a broader scope of impact far beyond just the field of software
first place, these people and companies can use these benefits to impact society. When AI
positively impacts developers, developers can build better apps, AI systems, websites, and
10
general programs for our society to use and benefit from. So not only is the field of software
answers is “What is the relationship between Artificial Intelligence and different aspects of
engineering/development company.” Three main ideas were set forth to prove this
relationship in the hypothesis and thesis of this paper: AI aids in developer productivity, bug
detection efficiency, and company optimization. To address these claims, sources were
searched on Google where three research articles/journals were found in the searching period
using key terms from each main idea such as “AI developer productivity”, “AI bug detection”,
and “AI company help”. These sources, purposely found to each address one claim, were then
One source was a research article titled “AI: A Lightweight System for Tolerating
Concurrency Bugs” written by the authors Mingxing Zhang, Yongwei Wu, Shan Lu, Shanxiang
Qi, Jinglei Ren, and Weimin Zheng which sought to introduce an AI-automated bug-detection
solution that can both successfully run with minimal errors and help solve a wide range of bugs
11
(Zhang et al., 2020). The researchers proposed a method/tool to predict when certain errors may
occur even before they have occurred, and then they ran the AI-automated bug detection
program (with this integrated prediction system) against several programs to help detect any
errors along the way for the researchers to resolve (Zhang et al., 2020). After repeating this
multiple times with many different programs, the researchers customized the AI-automated bug
detection tool as necessary to maximize its success and efficiency (Zhang et al., 2020). With this
methodology, the researchers found that the AI-automated bug detection was able to efficiently
detect all the various types of bugs the researchers tested it against but in only these bug
situations (Zhang et al., 2020). Therefore, the limitations of this study were that it only
investigated 35 different testing scenarios with eight different bug patterns, meaning that the
effectiveness and diversity of solutions are limited to these 35 programs with these eight specific
bug patterns (Zhang et al., 2020). More programs would need to be tested against this tool to
scale its efficiency and success to a bigger impact (Zhang et al., 2020). There could also be a
potential situation of false errors where the program detected a bug when there wasn’t one
Another source was a research paper titled “Marketing and Artificial Intelligence”
written by Krystyna Jarek and Grzegorz Mazurek that sought to look at the implementations and
the scope/variety of involvement that AI had within the marketing sector (in general) and
investigate what areas of AI had its applications in marketing and how it was applied (Jarek &
Mazurek, 2019). Using a very simple meta-analysis that involved finding, validating, and
analyzing articles from marketing portals that talked about AI’s involvement in marketing, the
12
processing techniques (Jarek & Mazurek, 2019). They also found that it helps with customer
satisfaction, time management, customized products, data analytics collection, etc. (Jarek &
Mazurek, 2019). However, a limitation within their research involves the fact that future research
is required to understand the full scope of benefits that AI brings to the marketing field because
there is still a gap of knowledge that time can only fill (Jarek & Mazurek, 2019).
The last source found was another research article titled “Applications of AI in classical
software engineering” written by Marco Barenkamp, Jonas Rebstadt, and Oliver Thomas that
sought to assess the risks, potentials, and opportunities that AI brings to the field of software
engineering, by looking at these aspects through a holistic system in the software engineering
field known as the software engineering life cycle model: planning, analysis, design,
implementation, testing and integration, and maintenance (Barenkamp et al., 2020). The
authors used a mixed methodology of a systematic review combined with an interview of five
software engineers to answer their paper (Barenkamp et al., 2020). In the systematic review,
they evaluated over 60 empirical studies published between 2010-2020 that contained
information about experiences with AI applications in each stage of the development life cycle
(Barenkamp et al., 2020). For the interviews, the researchers interviewed four men and one
woman, all within the age range of 29-37, studied Computer Science, have a basic understanding
of AI development, and are software engineers/developers who have built multiple projects
(Barenkamp et al., 2020). The researchers found many benefits that AI brought to each stage of
the life cycle such as saving time and money, boosting productivity and efficiency, promoting
creativity, and much more (Barenkamp et al., 2020). However, the researchers mentioned that
13
their systematic review couldn’t encompass all aspects that need to be analyzed of AI’s
implication in the software engineering field through the software life cycle (Barenkamp et al.,
2020). Since they only analyzed around 60 sources, in their opinion, their review was very
limited (Barenkamp et al., 2020). In their interview, they mentioned that only five software
engineers/developers were not nearly enough to gain enough insights (Barenkamp et al., 2020).
Provided with the basic synopsis of each source, it is now reasonable to delve into
how this analysis fully supports this research paper. Firstly, the main idea that AI has a
engineering.” As seen by Appendix A, this source clearly demonstrated the positive impacts AI
has with software engineering such as allowing for time to be saved as AI can help with task
management, task planning, identifying issues, debugging, etc. (Barenkamp et al., 2020).
Overall, it shows that AI can take over these simple tasks which allows developers to be more
creative, efficiently spend their time on other tasks, etc., evidently supporting the secondary
research done. With all of these benefits AI brings, this source clearly supports the paper that AI
has a positive relationship with software engineering/development in this way of helping with
The second main idea regarding AI aiding in bug detection is supported by the source
titled “AI: A Lightweight System for Tolerating Concurrency Bugs”. As seen by Appendix A,
AI solutions with these bugs are faster (Zhang et al., 2020). Thus, it can be deduced that these
14
AI bug detection tools increase the efficiency of bug detection. As AI continues to help aid
developers by quickly identifying bugs, it allows them to resolve these bugs quickly as well,
saving a large amount of time overall and therefore contributing to the positive relationship
and impact AI has on software engineering and development by increasing bug detection
and resolution efficiency, correlating with findings found in the secondary research.
Thirdly, the last main idea that AI has a positive relationship with software
Appendix A, AI can allow marketing sectors of companies to cut back on time consuming
activities, optimizing overall company performance as more creativity is promoted with the extra
time gained (Jarek & Mazurek, 2019). With this boosted creativity and time, the marketing
sector can advance to gain more customers as AI helps deliver more specialized products, collect
more marketing analytics, and overall benefit the company. As this paper covered AI in
marketing sectors in general, these benefits can be applied to marketing sectors of software
companies can immensely optimize existing processes to reap great rewards in terms of profits,
customer satisfaction, product output, etc., supporting the literature review. All of this combined
allows for a positive impact of AI to software development and therefore contributes to the
15
or companies as seen from Appendix A, even though each sector of software
development/engineering reaps their own unique benefits from AI. This analysis distinctly
shows that AI is being used to enhance existing processes in bug detection, development, and
company marketing techniques, not take over: It is only serving as a tool/accessory to aid
software development/engineering.
While the meta-analysis yielded many insightful findings that fully supported the
hypothesis, thesis, and research question of this paper, there were many limitations to this
analysis. This meta-analysis only involved three sources, which is not nearly enough for a
well-supported solid analysis. Additionally, there was a selection bias in these sources, The
sources were chosen based on if they seemingly would support the paper. There was not
much of a broad perspective while doing this source search that could’ve been improved if
engineering/development. This analysis also involves three different sources each covering
their own three unique topics of AI enhancement. When comparing these sources to each
these sources’ scopes were different from each other. The insights gained were simply broad
generalizations. The last limitation mentioned here, among many, will be the fact that the
language for the “AI: A Lightweight System for Tolerating Concurrency Bug”' source was far
beyond the academic level for a highschool junior, the researcher’s academic level. Therefore,
some assumptions had to be made within what the paper is conveying that could’ve
16
impacted the overall analysis of this source as the assumptions could’ve been misleading,
To better this meta-analysis, it should incorporate more sources with various different
perspectives to answer the research question in this paper. Future studies should focus on
the opposite end of the spectrum: AI negatively impacting aspects of software development.
This meta-analysis covered the positive benefits AI brings, but this bias does not cover the
answer to the research question since AI has an equal potential to damage (which should be
considered to properly assess the answer to this paper). Additionally, another researcher can
make sure to choose similar sources for a meta-analysis for this paper to allow for a
gathering sources and analyzing/identifying connections within them, this research can be
better supported or refuted. With the findings and analysis in this paper, it is clear that the
question “What is the relationship between Artificial Intelligence and different aspects of
These findings do not just end within this research paper however. With this new
knowledge, software engineers and companies should incorporate more AI tools into their
field as it can immensely help them both boost their company’s profit, customer satisfaction,
etc., it can help the employees (software engineers) boost their productivity, efficiency etc.,
and it can help improve the quality of the code and bug detection efficiency. However, tt’s
17
important to keep in mind that with the growing integration of AI, as these engineers,
developers, and companies incorporate AI into their jobs, they must learn new skills, seek
new creative endeavors, and improve their existing work ethic to effectively utilize AI as a
18
References
Barenkamp, M., Rebstadt, J., & Thomas, O. (2020). Applications of AI in classical software
https://codepal.ai/bug-detector#qna_how_can_ai_be_used_to_detect_software_bugs
Flatiron Software Co. (2023, August 14). What is the role of Artificial Intelligence in business software
development? LinkedIn.
https://www.linkedin.com/pulse/what-role-artificial-intelligence-business-software-d
evelopment/
Gee, T. (2023, July 24). How AI will impact the developer experience.
https://go.gale.com/ps/retrieve.do?tabID=T003&resultListType=RESULT_LIST&search
ResultsType=SingleTab&retrievalId=16200206-886c-4a2b-9928-1990ec2f0b6c&hitCount=
8&searchType=AdvancedSearchForm¤tPosition=4&docId=GALE%7CA758258593
&docType=Article&sort=Re.
Haddad, M. (2023, March 29). How AI can detect software bugs and root cause analysis.
https://blog.railtown.ai/blog-posts/how-ai-can-detect-software-bugs-and-root-cause-
analysis
Jarek K. & Mazurek G. (2019, June). Marketing and Artificial Intelligence. Central European
https://www.researchgate.net/publication/333671063_Marketing_and_Artificial_Intellige
nce
19
Khan, B. (2023, December 29). Personal Interview.
https://www.merriam-webster.com/dictionary/artificial%20intelligence
Patil, R.V. (2023, July 19). From code generation to bug detection: The role of AI tools in
software.
https://medium.com/@rushi11081/from-code-generation-to-bug-detection-the-role-o
f-ai-tools-in-software-fbdebbfd7007
Sam. [Keep On Coding]. (2023, April 20). Why AI won't replace programmers [Video]. YouTube.
https://www.youtube.com/watch?v=X6lMJ1kv9LY
Shtechman, I. (May 6). Enhancing code quality with AI: The power of bug detection.
https://medium.com/aimonks/enhancing-code-quality-with-ai-the-power-of-bug
-detection-ea734c63afa9
Skrygan, K. (2023, October 2). What does generative AI mean for software companies?
Retrieved from
https://go.gale.com/ps/retrieve.do?tabID=T003&resultListType=RESULT_LIST&search
ResultsType=SingleTab&retrievalId=4ff314ab-762a-483d-9e2f-ca1ae140ba14&hitCount=
8113&searchType=BasicSearchForm¤tPosition=2&docId=GALE%7CA767399608&
docType=Article&sort=Relevance&contentSegment=ZGPP-MOD1&prodId=GPS&pageNu
m=1&contentSet=GALE%7CA767399608&searchId=R7&userGroupName=hcpub_hebron
&inPS=true
20
Stavridis, A., Drugge, A. (2023). The rise of intelligent system development. A qualitative study
https://umu.diva-portal.org/smash/get/diva2:1759153/FULLTEXT01.pdf
https://www.tableau.com/data-insights/ai/history#:~:text=Birth%20of%20AI%3A%2019
50%2D1956&text=into%20popular%20use.-,Dates%20of%20note%3A,ever%20learn%
20the%20game%20independently
Tableau. (n.d.). The ultimate guide to Artificial Intelligence (AI): Definition, how it works, examples,
https://www.tableau.com/data-insights/ai/what-is#how-it-works
Zhang, M., Wu, Y., Shan, L., Qi, S., Ren, J., & Zheng, W. (2020). AI: A lightweight system for
https://people.cs.uchicago.edu/~shanlu/paper/fse2014.pdf
21
Appendix A
22
23