When and when not to use Confluence

Posted on January 15th, 2023

Are you tired of the endless sprawl of documents across your organization? Do you need a tool for document management, knowledge sharing, and collaboration? Confluence may very well be the tool you’re seeking.

Confluence has been around since 2004 and is used worldwide by over 60,000 organizations. There are numerous use cases for Confluence, and it seemingly fits in with every department in your organization. Let’s clarify the confusion around the different use cases of Confluence and find out if it is the right tool for you.

What is Confluence?
What is Confluence?

Source

 

Confluence is a wiki-like collaboration and information management tool developed by Atlassian. We say wiki-like because everyone is familiar with Wikipedia, a website based on MediaWiki, so it is easy to grasp what it could do. 

Big teams gather and produce an endless array of information. In teams that don’t use a platform like Confluence, this knowledge base must be passed by word of mouth, which is inefficient and produces inaccuracies.

Unlike MediaWiki, Confluence is designed for enterprise collaboration and management, with some key features that large teams will find invaluable:

  • Numerous templates are intended for typical usage.
  • @Mentions allow tagging team members.
  • Access restrictions make it possible to have sensitive information and open information on the same platform.
  • Data backups, recovery, and version control.
  • Intuitive WYSIWYG editor.
  • Jira integration.

Confluence hosting options

You can host Confluence in any of the typical choices afforded by software vendors targeting enterprise organizations. The easiest solution is SaaS, where Atlassian hosts and manages the software for you. Atlassian has a free cloud plan, which means that even if you intend to host it yourself, you can get to know the product before purchasing it.

You can host Confluence on IaaS or locally for a more involved solution. Regarding IaaS, you can easily host Confluence on AWS or Azure and retain significant control over configuration to adhere to your specific needs. Local hosting of Confluence requires higher maintenance but could be the right choice if you require tighter access management and data governance.

Confluence hosting options

Source

Confluence use cases

Confluence is a product that solves a wide array of problems across many potential fields. Any enterprise organization is bound to accumulate a wealth of knowledge that must be passed around between different teams and used to train new employees.

Engineering teams are most likely to use a technology-oriented tool like Confluence. Still, other departments, such as Marketing and Product Management, could benefit from having a shared knowledge pool, especially when you can cross-pollinate with other departments.

 

As a tool, Confluence has a set of features that trivialize specific use cases. Atlassian offers Spaces built from templates for several common uses, which makes for a fast setup:

 

Technical documentation – Writing technical documentation as a separate set of documents causes repetition, errors, and disjointed information. Confluence has features that prevent unnecessary repetition by making sentences, images, and other segments reusable.

Knowledge base – IT teams need quick and easy access to information when helping customers solve problems. Having a fully searchable knowledge base and quickly adding information to the knowledge base will allow your IT department to focus on the client.

Intranet – A central hub for your organization where users can be added without administration overhead helps everyone stay connected. Setting up a space for each team is a sound basis for an intranet.

Software development – The most evolved aspect of Confluence is the tools available for software development. With many templates to choose from, a software development team can get a head start on vicarious common topics such as:

  • Product requirements
  • Release planning
  • Sprint Retrospective
  • Customer Feedback plans
  • Release notes
  • Technical onboarding

 

While it’s true that Atlassian put a lot of thought into Confluence and the above use cases, it doesn’t mean that they are perfect solutions. How can you tell if Confluence is the solution for you?

When to use Confluence 

There are many suitable applications for Confluence; here are some common ones.

Document management

Every organization, from the smallest to the largest, produces documents. When the number of records is small, it can be manageable to spread out across multiple Google Docs or Word files in a Dropbox. But as documents accumulate, they become increasingly challenging to maintain.

 

Confluence has various tools to help you manage documents, which is the process of storing, archiving, and retrieving documents. You can upload documents to Confluence and attach them to pages or create documents inside Confluence. You can have document trees, which help associate documents with concepts, departments, or teams. Confluence can also link documents to various stages in your workflow if you’re using Jira for product management.

Document management

Source


Feedback loops and collaboration

Collaboration is a core feature of Confluence. Commenting and mentioning colleagues can all be done in real-time with multiple contributors. Feedback loops are essential to creating, maintaining, and improving documents. Collaboration features are critical when various teams or departments need to process, review and maintain these documents. They also enable higher productivity

Templates for everything

The Atlassian website has countless templates that can fit every need. There are templates for design, Business Strategy, Customer feedback interviews, Product Management, Human Resources, and many more. A short browsing of the templates will spark ideas for how to use Confluence across all your departments.

When not to use Confluence 

Atlassian may have adopted Confluence for nearly every document requirement, but that doesn’t mean it is the best tool for the job or even an adequate one. Here are some tasks for which Confluence may fall short.

Code documentation

As a developer, you are constantly searching the web for solutions to problems, which is why it is unlikely that you will choose to search Confluence for an answer unless you specifically know it’s there. Unless you’re the person that wrote the code documentation, it is unlikely that you will find it in Confluence.

 

Code documentation should exist inside or beside code, which means code repositories and comments. Effective documentation is part of your workflow, not outside your workflow. Just like Tabnine’s code completion helps developers with AI-powered code completion right inside their IDEs. 

 

Your code writing becomes far more efficient when you don’t have to leave your IDE to search for syntax, code snippets, or simple solutions. You wouldn’t want to leave your IDE for code documentation, would you?

Editing 

There is no doubt that Confluence is a feature-rich solution, but when features hit a critical mass, they become feature bloat. Editing documents in Confluence is prone to mistakes, sluggishness, and an overall challenging experience.

Code documentation

Source

 

A user writes: “An issue that users can face when using Confluence is attempting to edit a document while someone else is editing. Although users can access the document and save it, they cannot see the changes happening in [real-time] that other users are implementing until they refresh their page. Some users have also noted that this can result in loss of edits.”

Knowledge management 

Knowledge management and document management aren’t synonymous. Managing knowledge is about linking information, making it easy to find when needed. The information you seek might be spread over several documents or be a small section of a document on a different subject.

 

When you need a specific document, it is easy to find it on Confluence, but the search functionality will leave much to be desired when you’re seeking knowledge. And because you may archive knowledge for long periods, when you do manage to find it, you may learn it is outdated information.

A powerful tool for the right use

If you’re using Jira, you’ll likely want to jump in on Confluence as the pair work well together for product and document management. While the template page may give you the impression that Confluence can do everything, things like knowledge management and code documentation are better left for other tools. Check out Tabnine AI-powered code assistant for better team collaboration and more efficient code writing.

 

About Tabnine for enterprises

Tabnine Enterprise is an AI code generation tool that helps software engineering teams write high-quality code faster and more efficiently, accelerating the entire SDLC. Designed for use in enterprise software development environments, Tabnine Enterprise offers a range of features and benefits, including the highest security and compliance standards and features, as well as support for a variety of programming languages and IDEs.  

Tabnine vs. GitHub Copilot: 6 key differences

Posted on January 2nd, 2023

Both Tabnine and Copilot offer AI coding assistant solutions for R&D teams. So which solution is better?  

We’ve put together a comparison using the most common parameters that we’ve encountered in our work as developers, while also serving the dev community for several years. From our POV, these parameters reflect the most important needs, pain points, and challenges that must be addressed by AI code assistants for enterprises:

  • Code privacy: Privacy controls to ensure that code remains safe, private, and secure, including whether public AI models are trained on your code and how well your code is isolated and protected
  • Open source compliance: Each company’s practices regarding the code that the AI models are trained on
  • Ability to connect AI models to an organization’s code repository: Whether it’s possible to connect the AI model to your org’s codebase to improve code suggestions
  • Centralized configuration: The type of centralized configuration and management offered to customers
  • Price: Price point for each user in the organization
  • User management: The types of user management available 

Table comparison of Tabnine vs. GitHub Copilot

[table id=5 /]

 

Drilling down further into Tabnine vs. Copilot 

Let’s look at the parameters and how each solution compares.

Code privacy 

Tabnine Enterprise offers full privacy for its customers’ code:

  • Your code is fully private and isolated; code and training data are never sent to Tabnine.
  • Tabnine’s general AI models are never trained on customer code.
  • Tabnine Enterprise customers can install Tabnine Enterprise on a VPC or on-premises.

This ensures you always have complete control over your IP and protection against IP leakage. 

On the other hand, Copilot for Individuals and Copilot for Business send both code snippets and user engagement data to Microsoft. 

With Copilot, it’s possible to opt out of saving code snippets; however, user engagement data is collected and used to improve Copilot’s AI models. 

Open source compliance

The code on which a solution’s AI models are trained can have a serious impact on the companies that use the solutions. 

Tabnine doesn’t train (and never has trained) its AI models on code with nonpermissive licenses and offers full transparency and attribution. This means that Tabnine isn’t restricted by the GPL license’s copyleft provisions, and protects users and customers from possible related consequences. In addition, it’s always been Tabnine’s goal to honor the intent of code authors and maintain good faith with the rest of the developer community. 

On the other hand, Copilot trains its models on OpenAI, which could result in legal exposure for its customers. This is because OpenAI is trained on nonpermissive open source, such as GPL, and doesn’t disclose its training set or provide references. Copilot does offer a filter to remove code suggestions that contain problematic code; however, it’s not always effective, meaning that the legal risk remains.

Ability to connect AI models to an organization’s code repository

While Copilot is trained only on OpenAI, Tabnine Enterprise allows customers to connect Tabnine’s AI models to their code repositories. This means the models, which are only accessible to the customer, can learn the organization’s coding best practices, styles, naming conventions, and more, resulting in code suggestions that are more context-sensitive and relevant. In addition, this allows for faster onboarding and training of new team members and junior developers.  

Centralized configuration

Both Tabnine Enterprise and Copilot Business offer central management and configuration; however, the features offered are different. 

Tabnine Enterprise’s centralized configuration allows customers to:

  • Configure the platform for your organization’s security and privacy requirements
  • Connect AI models to different repos for different teams
  • Manage access roles and permissions
  • Monitor usage through advanced reporting
  • Manage subscriptions

Copilot Business’s centralized configuration allows customers to:

  • Manage access roles and permissions
  • Filter out code suggestions that closely match public code on GitHub

Copilot for Individuals doesn’t offer centralized configuration and allows customers to:

  • Filter out code suggestions that closely match public code on GitHub

Price

On the surface, the price appears to be almost the same ($20 per Tabnine Enterprise user, $19 per Copilot Business user). 

However, Copilot Business is only available to companies using GitHub Enterprise, which charges $210 per seat per year. In effect, that’s a barrier for enterprise companies that don’t need or want GitHub Enterprise. 

Copilot for Individuals costs $10 per month (or $100 per year). However, the Individual plan doesn’t include any of the features suited for enterprise, including privacy and security.

User management

Both Tabnine Enterprise and Copilot Business allow enterprise customers to configure and manage user roles and permissions. However, Copilot for Individuals doesn’t offer any user management capabilities.

Tabnine is the AI coding assistant that you control

Whether you’re choosing an AI coding assistant to make your life easier as an individual developer or choosing a tool to deploy to your entire engineering team to improve the effectiveness and satisfaction of your team, it’s critical to evaluate potential vendors holistically:

  • Does the AI coding assistant offer a comprehensive platform with in-line code completions and support via chat?
  • Does the vendor support the full variety of IDEs and languages your team currently utilizes?
  • Does the AI coding assistant leverage world-class models? Are they able to evolve their models as the technology improves?
  • Can the AI platform be optimized for your engineering team with tailored models and context-awareness?
  • Does the vendor offer complete privacy for your codebase and data around usage? Do they offer air-gapped deployments (on-premises or VPC) or guaranteed zero data retention?
  • Was the AI coding assistant trained exclusively on code with permissive licenses? Does the vendor offer protection from legal risk by limiting the recommendations to software you have the rights to and not just promises of indemnification?
  • Can the vendor meet your company’s expectations for security and compliance?

Only Tabnine meets all of these requirements expected by enterprise engineering teams and has the history and scale of developer adoption to prove it.

Since launching our first AI coding assistant in 2018, Tabnine has pioneered generative AI for software development. Tabnine helps development teams of every size use AI to accelerate and simplify the software development process without sacrificing privacy and security. Tabnine boosts engineering velocity, code quality, and developer happiness by automating the coding workflow through AI tools customized to your team. With more than one million monthly users, Tabnine typically automates 30–50% of code creation for each developer and has generated more than 1% of the world’s code.

Unlike generic coding assistants, Tabnine is the AI that you control:

Tabnine ensures the privacy of your code and your engineering team’s activities. Tabnine lives where and how you want it to — deployed as protected SaaS for convenience, on-premises for you to lock down the environment, or on a virtual private cloud for the balance of the two. Tabnine guarantees zero data retention, and we never use your code, data, or behaviors to feed our general models.

Personalized

Tabnine is personalized to your team for optimal impact on your business. Tabnine is built on best-of-breed large language models (with the flexibility to switch as new models emerge or improve) and gives you the ability to fine-tune or deploy fully customized models. Tabnine is context-aware of your code and patterns, delivering recommendations based on your internal standards and engineering practices.

Tabnine works the way you want, with the tools you use. Tabnine supports a wide scope of IDEs and languages, improving and adding more all the time. Tabnine also provides engineering managers with visibility into how AI is used in their software development process and the impacts it is having on team performance.

Secured

Tabnine is secure and trusted. Tabnine believes in building trust through algorithmic transparency and thus shares how our models are built and trained with our customers. Furthermore, we’re relentlessly focused on protecting our customers’ interests by only training on code with permissive licenses and only returning code recommendations that will not be subject to future questions of ownership and potential litigation. We respect open source code authors and their rights as well as the rights of every one of our customers.

As you should expect from any vendor, Tabnine offers proven, enterprise-grade security and meets key industry standards.

Get started with Tabnine for free for 90 days, or contact us to learn how we can help your engineering team be happier and more productive.

From CI to AI: The AI layer in your organization

Posted on November 2nd, 2022

In the coming decade, all software development will be assisted by AI. Either the code is going to be generated with the help of AI, or it is going to be reviewed by AI, tested by AI, or even deployed by AI.

Image generated by DALLE2 with the prompt: “software development with artificial intelligence assistance neural network happy”

Image generated by DALLE2 with the prompt: “software development with artificial intelligence assistance neural network happy”

So, if you are an engineer or an engineering manager, it is safe to assume that there is an AI in your future.  And this is due to several factors:

  • We are all facing the challenge of shipping software with limited resources. We cannot hire all the engineers that we want, and even if we can hire them, onboarding is slow and expensive, so we need to find ways to move faster with the resources that we have.
  • There’s an opportunity for automation. We know that at least some of our tasks as engineers are repetitive and can be partially automated. Even code itself is often repetitive and common. This is why things like StackOverflow are so effective.
  • In recent years, we have seen the rise of powerful ML models that learn from massive amounts of data and can generate text and even images.

Combined with high-quality open-source code artifacts and code artifacts from your organization, AI is beginning to change how we do software development.

AI is the next layer in the organization’s software development stack. Built on the foundations of solid source control and CI/CD, AI will accelerate all stages of the software development lifecycle.AI is the next layer in the organization’s software development stack. Built on the foundations of solid source control and CI/CD, AI will accelerate all stages of the software development lifecycle.

[cta_btn url=”https://www.tabnine.com/enterprise?contact-enterprise” label=”Request a demo”]

In the past decade, organizations realized the importance of solid source control and CI/CD pipeline for high-quality software delivery. Having these in place also turns the organizational codebase into a rich source of collective knowledge about software that has been reviewed and tested. AI assistants can learn from this collective knowledge and bring it to the fingertips of all the developers on your team.

So you can think of AI as another layer on top of your source control and CI/CD that learns from these processes to improve your team’s productivity. In the coming years, AI will use this information to accelerate all stages of the development lifecycle.

Over the years, much effort has been invested in the automation of test/review/deployment processes. This part of the pipeline has seen a lot of improvement, even without AI. However, the left end of the pipeline, writing code itself, has not changed much since the introduction of IntelliSense in the 90s (or even earlier if you trace it back to its sources). And this phase is really where customer problems are being solved, where we can automate mundane tasks and help developers focus on creative work.

And this is exactly what we do. We use large language models trained on code with permissive open-source licenses to predict code in all common IDEs and languages. This makes developers better and happier, automates mundane tasks, it prevents errors, and keeps developers in the flow. It is also safe and secure, and you can run it in your private cloud if you have to.

 

Vision for Doubling Your Productivity with AI

Applications of AI for software development: green points are applications that are already mature but will keep improving, purple ones are in the near future, and cyan are further out in the future.Applications of AI for software development: green points are applications that are already mature but will keep improving, purple ones are in the near future, and cyan are further out in the future.Applications of AI for software development: green points are applications that are already mature but will keep improving, purple ones are in the near future, and cyan are further out in the future.

Doubling your productivity with Tabnine

In this video, Eran Yahav discusses some of the challenges and opportunities associated with using AI to enhance productivity within development teams.

 

4 ways to perform pair programming on VS Code

Posted on April 25th, 2022

Pair Programming has been around for a while. The rise of remote working across the globe made this concept even more interesting for developers as it allows them to code concurrently, no matter where they are. Yet still, many think it is as simple as “two people coding using a single computer.” However, it’s not as simple as that, and the benefits are also not immediately apparent. It delivers more advantages in the medium- and long-term. For instance, pair programming is essential for cooperative teamwork and developing high-quality software products.

What is pair programming?

Pair programming is an Agile methodology in which two or more developers work together on the same task at one workstation. Pair programming needs at least two developers, and we can see two roles there: driver and navigator. The driver is the person who does the coding and implementation. The navigator is the person who looks for syntax errors, mistakes, and typos by reviewing each line of code when the driver is typing.

Developers continue the work by switching roles frequently. Pair programming is a productive and efficient way to develop software where developers can transfer their knowledge and experience with each other. Leading companies use this approach to improve their productivity and code quality.

Source: reddit

Source: reddit

Benefits of Pair Programming 

Pair programming can have significant impacts on software development. There are several strong reasons why you should consider this methodology.

Share knowledge

Each developer has their strengths and weaknesses. Suppose one is a newly joined engineer who is an expert in some coding stack such as MERN with an experience of more than three years. Another developer is an engineer who works at the organization having three years of experience in the product domain. He knows the executing code, services, database table structures, debugging process, and main workflows.

They can get instant feedback and suggestions, share knowledge about the software product, and share programming skills with their peers by working together on their code. In that case, pair programming will be an excellent way for them to fill some potential knowledge gaps and learn directly from each other. Sharing knowledge also facilitates mentoring, especially when one of the developers is more experienced.

Improve code accuracy

Programmers make common mistakes while coding, such as implementing dead codes, inefficient code blocks, bugs, vulnerabilities, syntax errors, and typos. Yet, in pair programming, another developer is looking at you and sharing his knowledge on best coding practices, so the code is likely to have fewer bugs and mistakes.

Enhance productivity

The most important benefit gained by pair programming is enhanced productivity. If a single programmer implements a solution, they can sometimes struggle with the code, so it may take longer than the estimated time. Hence it is more productive to use two developers as one can monitor the other and help him in struggling areas.

Moreover, developers can identify potential bugs and performance issues in the early stages. Because solutions are evaluated before implementation rather than after they’ve already been implemented and deployed, developers avoid wasting time changing code at the last minute.

Strengthen relationships

Pair programming enables you to learn from your colleagues and share experiences. Pairing more senior developers with junior developers can also help them integrate better with the team. The time spent working together on the same project will strengthen their relationships, and a united and motivated team is always key to success.

Source: MartinFowler

Source: MartinFowler

4 Ways to Perform Pair Programming on VS Code 

Microsoft Visual Studio Code is the most popular IDE these days, and there are various tools developers can use on VS Code to perform Pair Programming. 

Remote sharing tools

One developer opens up the code and shares the screen with another using a remote sharing tool such as Teamviewer, GitDuck, Anydesk, Codenvy, and Microsoft Teams. Developers can then request access to use the desktops of other developers and write code.

Remote sharing tools are easy to set up. However, there are cons to bear in mind. Because both developers can’t develop simultaneously using the same desktop, one has to wait until the other completes his task. Collaboration isn’t as seamless and practical as developers would want. Plus, it may take them longer to code and they have to continuously wait on one another. 

 

Visual Studio Live Share

Visual Studio Live Share is another tool you can use to perform pair programming without cloning or installing dependencies on your code. Here, you create a collaborative session and share it with your partner. Your partner joins with the provided invitation link and sees your workspace in their code editor. Then your partner gets access to your codebase. He can navigate and edit code or perform any changes in the codebase. You can see your partner’s cursor and what he is typing when you edit the same file.

Source: VisualStudioLiveShare

Source: VisualStudioLiveShare

 

You need to download the Live Share Extension Pack from VS code Extension marketplace to Integrate Live Share with Visual Studio code. After that, you need to sign in. There are two Sign-in options: log in with a Microsoft or GitHub account. Click the Sign In button in the bottom status bar with the person icon to log in. After signing in, you can create a session to share with others. Start by clicking your username in the bottom status bar and choosing Start Collaboration Session from the available options.

You can also open the Command Palette (CTRL+SHIFT+P on Windows, CMD+SHIFT+P on Mac) and type Start the Collaboration Session. Then you will get a notification that your invitation link has been copied to the clipboard. You have to share this link with your partners and invite them to your session. Click your username in the bottom status bar and choose Join Collaboration Session from the joining perspective to accept an invite. Enter the collaborative session link sent to you by the inviter when prompted.

 

This method has certain limitations: VS code Live Share is locked to 5 concurrent users, and it can only be used if both developers use the same text editor.

Pair Programming tools

Apart from the two platforms mentioned above, there are tools built specifically for Pair Programming that developers may want to consider. Pair programming tools offer many advantages:

  • You can instantly connect and share knowledge with your partner or team regardless of where your partner is.
  • They are easy to set up, and most tools support audio and video and chat.
  • Can be integrated with GitHub, Bitbucket, GitLab easily.
  • Most pair programming tools are either open-source or available for free.

However, there are some cons too:

  • It is difficult to speed up your coding to improve the developments and deliverable times.
  • There will be too many code review rounds.
  • Most of these tools are limited to a particular text editor.

You can solve these problems using AI-assisted programming tools. Let’s check how to do it using Tabnine in the next section.

AI-assisted programming tools

Another way to perform pair programming is to use AI-assisted programming tools. AI-based tools help speed up the software development while ensuring code accuracy. Tabnine is a fantastic auto-completion tool that can deliver significant value to developers. It’s a free plugin that indexes your code and discovers statistical patterns to create customized indications/suggestions based on how you write your code on IDE.

Source: Tabnine

Source: Tabnine

 

You can easily download it in the VS code marketplace by searching “Tabnine AI Autocomplete.” Apart from that, Tabnine offers you the following advantages:

  • It is easy and secure to integrate codebase into remote repositories such as GitHub, GitLab, and bitbucket with AI assistant access.
  • Allows sharing of knowledge across different countries and time zones. 
  • Tabnine learns your code patterns and provides expert guidance to every team member at any time of day.
  • Helps reduce code review iterations and efforts.

Summary

The goal of any developer is to code faster and with as few mistakes as possible, which will result in a higher quality product in the end. Regardless of their chosen tool, both Pair Programming and AI-assisted programming can support developers and enable them to be more productive. 

Is AI pair programming really going to help me?

Posted on February 22nd, 2022

A few weeks ago I wrote an article that spoke about beginning my journey with Tabnine. At my previous job I had the occasion to play keyboard warrior in the application of machine learning and statistical processes to customer pipelines. But more often than not the job consisted of managing partners and working to ensure top notch delivery to the customer. So it was only moments few and far between where I found myself with the opportunity to code. As I admitted in my previous article I’m an average engineer at best and not having many opportunities to practice certainly did me no favors in improving my capabilities. PEBKAC should probably have been my username. So it was quite apparent to me that Tabnine, and especially Tabnine’s team trained models, would be of great help in getting my efficiency up as an individual contributor. In a few weeks I’ll write an interesting breakdown of some benefits I’ve found in using Tabnine as a dabbler of code, rather than a power user. Hopefully that will be interesting to some of the readers.

But today I’d like to talk about team leads and engineering managers. I won’t do them the grave injustice of assigning them the epithet of “middle management” but that’s kind of where most of these hard working, glue-of-the-orgs find themselves. By and large they don’t code much themselves (or at all as a PM might find) but spend much of their time and energy reviewing PR’s, fixing tech debt, mentoring new hires and working on product roadmaps. None of this work usually has them behind a keyboard for hours writing their own code. So can Tabnine help these valuable folks in their day-to-day, should they care?

Humorously we could perhaps sum up the challenges faced by team leads and managers thusly…

And while we may all laugh and nod knowingly at the preceding tweet, perhaps should ask what are the key motivations for team leaders and managers. According to this paper the top three motivating factors for developers are around improving code quality: finding defects, improving the code, and exploring alternative solutions. Largely, these tasks fall on fellow team members and quite often on the team leads and engineering managers. And while brainstorming code development isn’t something that Tabnine can assist with, reviewing code certainly is. In work by Tufano et. al. titled “Towards Automating Code Review Activities”, they state:

“Our long-term goal is to reduce the cost of code reviewing by (partially) automating this time-consuming process. Indeed, we believe that several code review activities can be automated, such as, catching bugs, improving adherence to the project’s coding style, and refactoring suboptimal design decisions. The final goal is not to replace developers during code reviews but work with them in tandem by automatically solving (or suggesting) code quality issues that developers would manually catch and fix in their final checks. A complete automation, besides likely not being realistic, would also dismiss one of the benefits of code review: the sharing of knowledge among developers.”

And Tabnine believes this is where value can be brought today. By giving the reviewers and mangers the opportunity to automate and improve the mundane aspects of code review and focus instead on the deeper, more complex parts of code improvement. Not only can this improve morale, but there are tangible business reasons to explore this opportunity as well.

Ultimately this points to an increasingly difficult issue facing our industry. The severe dearth of good developers for hire. In an ideal world we would all have access to highly qualified developers at a fair price. AI assisted programming tools might not have the valuable applicability they have today. But finding great devs is like finding hens teeth. Only in fairy tails. Moving forward our industry will have to rely increasingly on tools that enhance the existing skill sets of managers, save valuable time as well as help junior folks become more productive. So consider carefully what tools and methods look like for your organization’s enhancement. I bet that Tabnine will make a good fit!

Too much of a good thing?

Posted on January 12th, 2022

Back in the days before I worked for Tabnine I was tasked with various ML problems. From industrial product defect review, CCAI solutions to fraud detection. Nearly all of these tasks utilized some version of deep learning via neural networks, with various levels of complexity. As any reader versed in the current state of machine learning might be aware, natural language processing is where the most difficult and simultaneously intriguing problems lie. It’s even become a bit of an arms race to see who can train the most cutting edge NL model. From BERT to XLNet and GPT-3 and numerous derivations of each, natural language models are the definition of large, computationally intensive “artificial intelligence”.

So where does a programming language fit in the machine learning space? Programming languages are “languages”, it says so right there in the name. But are they really in the same problem space as actual spoken or written languages? Famously the phrase, “Sam was found by the stream” is linguistically ambiguous without surrounding context in which to place the various actors. Of course we as humans know that a stream can’t really “find” anyone but that’s only because we are in possession of a fantastically well trained neural network of gray matter in between our ears. For a NL algorithm to learn ambiguity, cultural turns of phrase or contextual summary is an incredibly difficult problem.

However, programming languages follow much stricter guidelines. They have to if we hope to have it compile and run. Ambiguity is not an option. In the bias/variance tradeoff we can err on the side of overfitting without serious deleterious consequences. There are, of course, multiple ways to write any given function in programming  language that will accomplish a defined task. So if we are to use an AI code completion tool like Tabnine, the model running on that code base can be quite specialized.

And this brings us to the question of parameter metrics. Many of the NL models tout the number of parameters used to build the underlying model. We are now well into the hundreds of billions of parameters for the leading models. But does this necessarily mean that using one of these models as the basis for programming language transfer learning will give us better suggestions in the IDE? The answer is quite clearly no, it does not. Training a specialized model for a particular task utilizing specific gold standard code and libraries will give the developer some really amazing in-line suggestions, full code snippets and contextual awareness.

 

With great power comes great responsibility

So beware of AI based code tools that purport to have XXXM more parameters than some other tool. Just because there are more parameters does not mean that it will work better for a specific programming task. As in life, so goes AI assisted pair programming. Balance is key. A specific model trained for the front-end devs in your company will likely show some significant ROI if it was well considered and deployed. But you would not want to hand that model over to the data science group as it is the equivalent of two left shoes.

A properly done based model for your organization’s developer teams is ideal. Tabnine’s team learning model automatically learns from the group to constantly improve and focus the model on what the team is developing. Metrics surrounding the team’s usage and model effectiveness should be tracked and changes made if those metrics begin to slip. Like any properly managed MLOps process, AI pair programming is a powerful tool when done right.

In conclusion, while NL model parameter count can tell us something about the inherent applicability to our everyday communication, it isn’t the right metric to judge the effectiveness as applied to programming language models. Choose wisely and keep vigilant on your organizations model library and the returns will be significant.

My journey of Tabnine

Posted on January 4th, 2022

Readers of a particular age and background might be familiar with the American radio variety show “A Prairie Home Companion”. Every week the show’s host Garrison Keillor tells a rambling and amusing ongoing story of a fictional town in northern Minnesota named Lake Wobegon. It’s a great listen and truthfully a “podcast” ahead of its time. But for us, the most interesting part of the tale is the way Keillor signs off from the story every week. “…this is the news from Lake Wobegon, where all the women are strong, the men are good looking and all the children are above average.”

It’s humorous to be sure, but the pedantic among us might recognise the tongue in cheek observation that everyone can be “above average”. Certainly any group of people fall in a distribution around an average, but ask any particular individual if they are better than average at any given task and likely you’ll get an enthusiastic yes! Of course I’m a better driver than most folks out there. And of course you are as well, dear reader. The natural human tendency to overestimate one’s capabilities is so well known among social scientists that it has, in fact, been labeled, “The Lake Wobegon Effect” (Go ahead, wiki it…)

So what about coding? If I’m truly honest, I’m not a great coder. Years ago, before I found Tabnine and came to work for them, I worked for Google. While I was interviewing for Google I was trying to write an image classification algorithm under a time constraint. My python linter had enough fluff to fill a few throw pillows at least. I was able to go back and debug, re-write, fix the issues and get hired for the job…but it wasn’t elegant. I’ve met folks in my life that write code like they were born to it. It is a special person that sees code like music, or a novelist sees their language.

Fast forward to my interview with Tabnine and I faced the same issues. Live demo of code I wrote showing capabilities of the tools Tabnine provided. Fear, sweaty palms as I worked through the code in my head. But this is where things were a whole lot different. I had dropped in the Tabnine extension on VSCode and followed the simple directions. After consolidating the ML libraries and example repos into a root directory, Tabnine’s local model provided me with a highly specialized set of suggestions that were tailored exactly to what I wanted to do in my image classification demo. Drop a layer from the CNN to improve regularization? I commented my intentions and Tabnine pulled the correct TF function with suggested boolean values to make it happen. In short, Tabnine made me a better programmer.

Tabnine’s toolset will be different things to different people. Folks like myself will find the suggestions helpful and will lower time spent debugging and asking senior devs for review. It helps me get done what I need to get done faster and with less pain. Junior devs might find it even more helpful. Senior folks will find value in Tabnine guiding their teams with best practices, lowering tech debt and allowing them to focus on research or new innovation.

Over the coming months I’ll be writing a series of posts focusing on the value that Tabnine can bring to the spectrum of developers. I hope you’ll continue to join me.

That’s the news from Tabnine, where all the managers are hands-off, the devs are geniuses, and all the zoom meetings are above average.

Looking west from Lochniver, Scotland