In a recent talk, Chris Slee, a founder of Transform Labs in Columbus, Ohio, identified the tools developers will need to understand within the next 18 months. He posits that programming will move beyond the use of traditional copilots into using tools that reshape how developers interact with code. Slee described five key categories of tools with examples:
Frameworks
AI-friendly databases
Code writing tools
Pieces as a unique tool
Future frameworks
Each of these is discussed in one of the following sections.
Frameworks for Faster Code
As software development continues to evolve, programmers are increasingly turning to frameworks to accelerate their development processes. These frameworks, built upon existing code and libraries, provide a solid foundation for building, which saves time and effort. There are numerous commonly used frameworks such as TensorFlow and PyTorch.
DSPy is a Python library designed for digital signal processing (DSP). It offers a wide range of functions and tools for tasks such as filtering, Fourier transforms, and spectral analysis. By leveraging DSPy, developers can quickly implement complex DSP algorithms without having to write everything from scratch. It provides a user-friendly interface and efficient implementations, making it a popular choice for developers working on signal processing projects, even if the developers do not have extensive DSP experience.
Langchain is a framework focused on natural language processing (NLP). It provides a modular architecture and pre-built components for tasks like text generation, summarization, and question-answering. Langchain simplifies the process of building NLP applications, allowing developers to focus on the core functionality rather than low-level details.
There are several key benefits of using frameworks:
Faster development: Frameworks provide pre-built components and libraries, reducing the amount of code developers need to write. This enables developers to focus on core functionality and build applications more quickly.
Increased efficiency: By leveraging existing code, developers can avoid common pitfalls and improve the overall efficiency of their projects.
Improved code quality: Frameworks often adhere to best practices and coding standards, leading to higher-quality code.
Enhanced collaboration: Frameworks can facilitate collaboration among developers by providing a common foundation, shared vocabulary, and an active community that provides support and contributes to the framework's development. This can be invaluable for troubleshooting and learning new techniques.
Frameworks have become an essential tool for modern software development, enabling developers to build applications more efficiently and effectively. The best framework for a particular project depends on several factors, such as project requirements, language compatibility, dependencies on external libraries, ease of use, and community support.
By understanding the benefits and considerations of the specific requirements and tradeoffs of a project, developers can make informed decisions and choose the right tools to accelerate their projects. As the field of software development continues to evolve, even more innovative frameworks will emerge, further shaping the future of software development.
Efficient AI-Friendly Databases
The rapid advancements in artificial intelligence (AI) have created a surge in demand for databases that can effectively handle the unique storage requirements of AI applications. Traditional relational databases, while powerful, may struggle to efficiently store and process the massive datasets and complex computations often associated with AI.
To address these challenges, new database tools, particularly vector databases, have emerged as specialized solutions for AI workloads. Graphs and time series are also AI-friendly databases. Several leading AI-friendly databases have gained significant users in recent years:
Supabase: A low-code, open-source Firebase alternative that includes a powerful PostgreSQL database with built-in features for authentication, authorization, and storage. Supabase is well-suited for building real-time applications and APIs. It is designed to simplify the development of AI applications and can be easily integrated with popular AI frameworks.
Vertex AI: A fully managed platform from Google Cloud that provides a suite of tools for building, training, and deploying AI models. Vertex AI includes a high-performance vector database that is optimized for large-scale machine-learning workloads.
Pinecone: A cloud-based vector database service that is optimized for high-performance similarity search. It is designed to handle massive datasets, which means it is good for applications such as recommendation systems, search engines, and anomaly detection. It provides a flexible API and integrates well with popular AI frameworks.
These specialized databases offer several advantages for AI applications:
Efficient storage: They are optimized for storing and retrieving large datasets, which are common in AI workloads.
Fast search capabilities: Vector databases efficiently perform similarity searches, which are essential for many AI tasks.
Scalability: They can easily scale to handle increasing workloads as AI applications grow.
Integration with AI tools: Many AI-friendly databases integrate seamlessly with popular AI frameworks and tools, simplifying development and deployment.
The best choice of AI-friendly database depends on the specific requirements of the application, including:
Data type: Consider the type of data you will be storing (e.g., text, images, numerical data)
Search requirements: Determine the type of search queries you will perform (e.g., similarity search, exact match).
Performance requirements: Evaluate the performance requirements of your application, such as latency and throughput
Scalability needs: Consider how your data and workload may grow over time
Integration with existing systems: Consider how the database will integrate with your existing infrastructure and applications
AI-friendly databases are essential for building and scaling AI applications. By understanding the key features and benefits of these databases, you can make better decisions and be prepared for innovations in future databases designed specifically for AI systems.
Code-Writing Tools: Beyond Copilots
The landscape of code-writing tools is rapidly evolving, with new and innovative tools emerging to enhance developer productivity. While traditional code editors like VS Code remain popular, a new generation of code-writing tools is surpassing copilots by offering more advanced features and capabilities.
Aider: Aider is a comprehensive code-writing tool that can generate code from natural language prompts, explain code snippets, and suggest improvements. It supports a wide range of programming languages and integrates seamlessly with popular development environments.
Cline: Cline, previously known as Claude Dev, is a powerful AI-powered code completion tool that can suggest code snippets and entire functions based on the context of your code, and it can do AI code refactoring. It can help developers write cleaner, more maintainable code and improve their overall productivity.
01-Engineer: 01-Engineer is a versatile code-writing tool that can generate code from natural language prompts, explain code snippets, and provide debugging AI assistance. It is well-suited for data science and machine learning tasks.
Pythagora: Pythagora is a code generation tool that specializes in Python development. It can automatically generate Python code based on natural language descriptions, making it a valuable tool for data scientists or developers who are new to Python or need to quickly prototype new features.
Supermaven: Supermaven is a cloud-based development platform that offers a variety of tools and services for building, reviewing, testing, and deploying applications in several languages. It is designed to be highly customizable and can be tailored to the specific needs of individual developers.
Entire posts have been written about the benefits of using Pieces and other, less advanced copilot tools. This is a brief summary of the benefits of code-writing tools in general.
Increased productivity: Code writing tools can significantly accelerate the development process by automating repetitive tasks and suggesting code snippets.
Improved code quality: These tools can help developers write cleaner, more efficient, and more maintainable code.
Reduced errors: These tools can help identify and prevent common coding errors, reducing the risks of bugs and defects.
Reduced learning curve: For new developers, code writing tools can help reduce the learning curve by providing suggestions and explanations.
Enhanced collaboration: Some of these tools offer features that facilitate collaboration among development teams, such as code sharing and review.
As the field of artificial intelligence continues to advance, we can expect to see even more sophisticated code-writing tools emerge. These tools have the potential to revolutionize the way developers work, making them more productive, efficient, and creative.
Pieces for Developers
Slee called out Pieces as a "special thing" because its retrieval of similar code provides comparisons of other people's programming and "allows me to talk about code that somebody else wrote."
Pieces is also unique because of its innovative approach to context retention, knowledge repository, and collaboration functionality.
Context retention: Pieces will answer questions that no other software can, such as "What was the function I was working on last Wednesday?" The repository maintains a parallel workstream that maintains context information about the work done while it is active.
Knowledge repository: Pieces' plugins are available in various IDEs, browsers, and communication tools like Microsoft Teams. These all connect to the Pieces OS central repository, which means the developer can ask a question in the browser about work done earlier in the IDE.
Reuse and Collaboration: Pieces stores information that enriches stored code for reuse and sharing, such as who sent it to you or what website it came from. The code is organized and enhanced with information that makes it easy to understand the code, even when the code was written long ago or by someone else.
The context workflow and the enrichment information in Pieces is a game-changer. Overall, Pieces offers a unique and powerful solution for code reuse and collaboration. It provides developers with a comprehensive context workflow that can significantly improve their productivity and efficiency.
Emerging Frameworks and Tools:
The software development landscape is constantly evolving, with new frameworks and tools emerging to address the changing needs of developers. These are the futuristic tools that Slee included in his list.
Vercel V0: This generative UI framework, developed by Vercel, leverages machine learning to automatically generate code from design files (e.g., Figma, Sketch). Developers can describe their desired interface elements, and V0 automatically generates code snippets or prototypes.
Cursor: Cursor is a fork of VS Code that provides a natural language interface for a developer to write code by talking with an AI. It includes numerous tools for understanding, finding, refactoring, debugging, and writing code.
Zed AI: This open-source framework allows developers to create user interfaces with voice control capabilities. It provides pre-built components for tasks like computer vision, natural language processing, and machine learning. It offers tools for training machine learning models, integrating AI functionality into existing applications, and deploying AI systems.
FastBuilder AI: Another open-source framework, FastBuilder AI empowers developers to build web applications and APIs faster. It offers tools for automatic code generation and deployment, streamlining the development workflow.
Pear: This open-source AI platform focuses on simplifying web development for non-programmers. Pear enables users to create web pages using natural language commands with the intent to simplify and automate repetitive front-end development tasks. It offers tools for building reusable UI components, managing design systems, and streamlining the front-end development process.
The development landscape is constantly evolving, and these emerging tools showcase the innovative approaches being taken to improve developer productivity and functionality. The emergence of these innovative frameworks and tools suggests a future where development processes are faster, more collaborative, and more accessible. As these tools mature and gain wider adoption, we can expect to see a significant shift in the way software is designed and built.
Conclusion
Everything listed so far is predominantly software to be installed on a local machine. If two developers want to work on a function, they each would have to install it on their local machine and then sync their work through some type of repository.
In contrast, there is a new set of products coming online that are in the cloud. There is no need to install Visual Studio or other local software. Programming is moving away from using local machines to write code, and these innovations will strongly impact developers.
Consequently, it is crucially important to “stay ahead of the curve” and be aware of what is going to happen to programming in the near future. AI-based flexible tools such as Pieces will be able to go into the future, but static traditional tools will be left behind as time passes and the environment changes.