Working on application development projects can be a complex process. Everyone will have their own way of working and particular quirks that may make it tricky to collaborate, while keeping track of the status of long, complicated projects can be harder than the actual coding.
There's a lot more to application development than simply picking the right programming language. No project is a solo effort, so being able to share ideas, compare code and troubleshoot issues is important. Fortunately, there are a wide range of free and low-cost tools available to help support these activities.
Whether it's making sharing and reviewing code easier, staying on top of collaboration or just making sure you keep your skills sharp, there's something out there for you. Here are 12 online tools we think no IT department should be without.
A solid text editor is essential for programming work, and while there are many to choose from, such as Atom and Sublime Text, Vim is one of the most popular. This offers a highly configurable environment, with features including a strong search and replace functionality, along with a large collection of plugins to extend the feature-set. It's one of the most advanced choices available, but not the most user-friendly, so if you're trying to get to grips with it, you can use tools like Vim Adventure, which turns learning the editor's commands into a game.
Bitbucket is a powerful web-based repository hosting service used mainly for version control. While it's similar to Github, it's aimed primarily at developers using private proprietary software code. This allows you to store your code to an unlimited number of private repositories in the cloud for safe back-up, while built-in continuous delivery features and collaboration tools help teams code, test and deploy their applications.
Complex projects can quickly spiral out of control if people aren't sure of what they need to do, what stage particular elements are at, and what ideas are being taken forward. This is where Trello comes in. It's a lightweight, cloud-based project management app that helps organize your projects into easy-to-understand to-do lists, keep track of side projects and easily see where you stand at a glance.
While there are many Git repository services available, Github is perhaps the largest and best-known, and its use isn't limited to app development. For collaborating on open-source projects, its one of the best ways to share content and track changes. The free service is fine if your project doesn't have any privacy concerns, but for more sensitive efforts, there are affordable paid-for options that offer more security.
If you've run into a problem that's stumped you, searchcode can be an invaluable resource. It offers over 20 billion lines of code from some seven million open source projects that you can search to find real-world examples of how other programmers have overcome your issue, with a wide range of filters that help you navigate the complexities of source code to hone in on the snippets that are relevant to you.
If you're working on web development, Google Chrome is one of the best choices. The browser's built-in DevTools make it easy to edit and diagnose problems quickly, while there are also a huge range of extensions and plugins designed specifically for coders, allowing you to build an environment tailored to your exact needs, such as debugging and visualization add-ons for web design.
Communication is a vital part of any collaborative application development project, so having a solution that allows you to do more than just chat is hugely useful. Slack is an easy-to-use instant messaging system that lets you chat individually or in groups, but also makes it simple to share files and other digital assets within the app. Importantly, it also saves discussions in a searchable database, so there's no confusion over what was agreed.
Once you have an executable ready to go, being able to compress it into a more manageable size is a must. While there are many executable packers to choose from, UPX (Ultimate Packer for Executables) offers one of the best open source solutions. It's able to compress Windows and Linux files to as little as 40% of their original size and is particularly known for its speed and efficiency.
10. Code Climate
One of the more tedious aspects of any development cycle is reviewing code for mistakes and other untidy lines that can make your program buggy or unnecessarily complicated. Code Climate can help with this by analyzing your code. It can look for issues related to test coverage, complexity, duplication, security, style and more, letting you know where you can improve.
Even the most experienced programmers need to keep their skills sharp and learn new tricks if they want to make their lives as easy as possible. One great way to do this is with Codewars, which offers hundreds of small challenges for all the most popular computer languages. Graded by difficulty, these challenges help coders brush up on their key skills and boost their familiarity with languages they have less experience in. You can also see the most highly-rated solutions after you submit your own, to test how your skills stack up against others.
12. Rubber duck
Finally, a reminder that not all programming tools need to be high-tech, as no good coder should be without their rubber duck. This is exactly what it sounds like - an actual rubber duck (although really, any inanimate object will do)!
This is a surprisingly useful debugging tool as, when you come across a problem, one of the best ways to overcome it is to describe the code out loud to the duck, explaining line-by-line what it's supposed to do and what actually happens. As the duck won't interrupt or confuse the process with questions as a human colleague might, it ensures you focus on the problem, and the act of taking a step back and talking through it from another angle often means any discrepancies or errors quickly become apparent.