The release of ChatGPT 3.5 has been a game-changer for us programmers. While most of us, myself included, don't fully grasp how it functions, some have come to rely on it even more than Stack Overflow, Google, or IDE built-in features. I think we're just scratching the surface. Although only Microsoft can truly predict what comes next, I'd like to offer my own modest forecast. Below, I outline what I think robots equipped with Generative AI will accomplish in the future. Items later on the list represent further-off predictions. I've tried not to rehash what's already been said by GitHubNext.
Bug Reporting: They will scrutinize the codebase, conduct analyses of the code, may even execute various tests before filing bug reports when anomalies are discernible. They will also initiate reports if they encounter code that is obfuscated, inadequately documented, devoid of automated tests, or fraught with security vulnerabilities. Moreover, they will flag code that deviates from established norms or best practices. The reports will be so meticulously crafted, replete with technical details and auxiliary links, that programmers will favor these robot-generated reports over human-originated ones.
Review of Pull Requests: They will assess pull requests submitted to the repository by either humans or robots, annotating specific lines of code to critique code quality or propose superior alternatives. They will maintain a record of prior suggestions and persist in their advocacy as needed. Ultimately, the originators of the pull requests may remain unaware whether their reviewer is human or robotic.
Code Refactoring: From an extensive repertoire of recognized micro-refactorings, they will select those most pertinent at a given juncture and issue pull requests encompassing these changes. They will not compromise code functionality or undertake sweeping alterations. Instead, they will incrementally enhance code quality, simplifying the merging process for human developers. Gradually, they will elevate the readability, maintainability, and comprehensibility of the codebase, primarily for robotic understanding.
Backlog Prioritization: They will categorize tasks and issues into relevant milestones, ascertaining their respective priorities. Leveraging historical data, current team velocity, and other pertinent metrics, they will curate a prioritized backlog aligned with both immediate objectives and overarching goals.
Refinement of Bug Reports: They will reevaluate existing bug reports, supplementing them with additional details, elucidating the affected code, and recommending potential test snippets to replicate the issue. They will fulfill roles often neglected by human programmers: providing comprehensive explanations to facilitate bug resolution.
Source Code Documentation: They will identify intricate code constructs, such as complex functions, expansive classes, and voluminous data structures. Subsequently, they will generate documentation blocks and issue pull requests for these. Humans will readily accept these contributions, given that documenting external code is generally monotonous and tedious. Furthermore, this will rectify a common human shortcoming—ensuring documentation remains synchronized with source code.
Bug Fixing: Based on their analysis of the extant code and registered bug reports, they will develop fixes and introduce them through new pull requests. These submissions will explicate the nature of the fix, the rationale behind the approach, its urgency, and potential alternatives. Human developers will simply integrate these modifications.
Requirements Formalization: They will scrutinize the codebase and associated discussions to derive formal requirement definitions. Utilizing instruments such as Use Case diagrams, Requirement Matrices, or less formal documents like READMEs or Wikis, they will persistently update these documents—a task often neglected by human developers.
Onboarding Assistance: They will facilitate the integration of new developers by navigating them through the codebase, elucidating architectural decisions, and delivering customized tutorials. They will offer interactive elucidation of specific code segments as well.
Technical Debt Analysis: They will evaluate the codebase to discern regions accumulating technical debt and recommend proactive measures for mitigation. Tickets will be filed highlighting these critical areas and suggesting improvements.
Documentation Cleanup: They will standardize documentation blocks written by humans, issuing pull requests to implement these revisions. Properly formatting documentation via HTML, Markdown, Doxia, and other protocols will address areas commonly overlooked by humans.
Feature Suggestions: They will review already-implemented functionalities and propose extensions, issuing tickets to document these ideas. These tickets will substantiate the reasoning behind the new feature proposals, offering justifications and user interaction examples.
Architectural Documentation: They will survey the codebase to refresh documentation concerning its architectural underpinnings, utilizing UML diagrams or less formal methodologies. This will enhance the maintainability of the entire project.
Complexity Estimation: They will assess the complexity of each bug report or feature request in terms of staff-hours, calendar days, or even lines of code, aiding in project planning.
Behavioral Prediction: By analyzing repository events, they will identify anomalies in human behavioral patterns, such as mood fluctuations in comments, activity spikes, or continuous integration/continuous deployment failures. They will forecast impending issues and proactively recommend corrective and preventive actions.
Performance Appraisal: They will monitor each programmer's activity to evaluate their productivity. Appraisal outcomes will either be publicized directly on GitHub or communicated to project managers via email. Ultimately, they will determine which human contributors are most valuable to their projects.
This list was constructed with the assistance of ChatGPT. What did we miss?
Yegor Bugayenko is founder and CEO of software engineering and management platform Zerocracy.