Smart Programming Assistant Context-Aware Code Completion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers face productivity losses due to frequent context switching between browsers and integrated development environments (IDEs) while searching for programming information, and inconsistencies in coding practices across different corporate settings hinder efficient onboarding of new developers.

Innovation Solution

A smart programming assistant that monitors user input, identifies context, and provides real-time ranked code completion suggestions and documentation from both internal and external sources, aggregated through a collection and aggregation module, storage and indexing module, and code analytics module, using machine learning techniques to learn user preferences and rank suggestions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If developers switch between browser and IDE to search for programming information, then they can access documentation and code samples, but their productivity decreases due to interrupted programming flow

Engineering Contradiction:
Improveaccess to programming informationVSAvoiddeveloper productivity
Core Design Contradiction:
Loss of informationVSProductivity

Solution Approach 1:

The patent combines the IDE and web browser into a single integrated window, allowing developers to access programming information (documentation, code samples) within the IDE context without switching applications. This merging eliminates context switching while preserving access to necessary information.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent introduces a web browser component as an intermediary element within the IDE window that provides access to online documentation and code samples. This mediator enables information access without requiring developers to leave the IDE environment.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If developers use different coding practices in different corporate settings, then they can adapt to local conventions, but inconsistencies arise that hinder efficient onboarding of new developers

Engineering Contradiction:
Improveadaptability to corporate coding practicesVSAvoidonboarding time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent pre-loads and caches code samples and documentation from multiple corporate sources into the IDE's local storage. This preliminary action allows new developers to immediately access standardized coding practices without needing to search external sources, accelerating onboarding while maintaining adaptability to different corporate conventions.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a universal code sample repository that stores coding practices from multiple corporate sources, making the IDE applicable across different corporate settings. The system can serve multiple coding conventions simultaneously, allowing developers to access organization-specific practices regardless of their home environment.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Loss of information

If developers search for code information in external sources, then they can find comprehensive documentation, but they lose the coding context and have to switch applications

Engineering Contradiction:
Improvecompleteness of documentationVSAvoidease of accessing code information
Core Design Contradiction:
Loss of informationVSEase of operation

Solution Approach 1:

The patent merges the web browser and IDE into a single integrated window, combining the completeness of external documentation with the ease of the IDE interface. Developers access comprehensive code information without leaving their coding environment, maintaining both information completeness and operational ease.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent adds a new dimension to the IDE by embedding a web browser component within it. This dimensional change allows the system to provide both full documentation access and seamless IDE integration simultaneously, resolving the trade-off between information completeness and ease of access.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS11113034B2Smart programming assistant
Publication Date: 2021.09.07 EMC IP HLDG CO LLC
  • US11113034B2 patent drawing
  • US11113034B2 patent drawing
  • US11113034B2 patent drawing

AI summary

Methods, apparatus, and processor-readable storage media for providing a smart programming assistant are provided herein. An example computer-implemented method includes monitoring user input being provided to an application by a user; identifying a context of the user input relative to a given computer programming language; obtaining one or more candidate code completion suggestions that match the identified context, and information aggregated from a plurality of web sources that is linked to at least a given one of the candidate code completion suggestions, wherein the information comprises programming language documentation information and code samples; and outputting a ranked list of the candidate code completion suggestions and at least a portion of the obtained information to a graphical user interface associated with the application in real time, wherein the order of the ranked list is based at least in part on one or more characteristics associated with the user.