Some say a worker is as only as good as his tools. That’s up for debate, but the right programming tools can dramatically increase your productivity.
The Best Programming Tools
Interactive Development Environment (IDE)
The most important tool you use is your interactive development environment (IDE). An IDE is any software you use when you want to write your code. IDEs typically have features such as auto-complete, warning and error checkers, and automatic refactoring. There is usually one standout IDE for each programming language: Eclipse for Java, Visual Studio for C++ or C#, XCode for Objective-C or Swift, and I’ve heard good things about a Jetbrain’s IDEs such as PyCharm for Python and RubyMine for Ruby.
I’m using Visual Studio for coding C# with Unity projects and Vim for web development.. Vim is a highly-extensible text editor that allows you to code much faster. It does this by assigning an action to all the keys on the keyboard (h moves the cursor to the left, j moves it down a line, etc.). In order to type, you must hit certain keys that signify you want to add text to the file and then press <esc> when you’re done to go back to using keys for movement. This likely sounds complicated and it is, but learning to use Vim pays off in spades with time efficiency. It also allows plug-ins which add many IDE-like features to Vim.
To get started with Vim, install it here. To start learning Vim, after install type vimtutor into the command line to open an excellent built-in text tutorial. For a more engaging alternative, Vim Adventures is a fun online puzzle game that teaches users how to use Vim. It builds upon your skills slowly enough that it isn’t overwhelming, but always keeps things fresh to prevent boredom. Try out the free content, but keep in mind that licenses only last 6 months (which I find rather frustrating). Once you start getting good, go to VimAwesome to find tons of fantastic Vim plug-ins and customize Vim to your needs. You can see my vimrc on Github.
A version control software keeps track of your code and every change made to it in a series of versions and stores them all in specially formatted data structure called a repository. The programmer makes a few changes, usually focused on a single feature or bug, and then saves all those changes together in what’s called a commit. The programmer can then revert (get rid of all changes after a commit) to a specific commit if they made a mistake. Commits can be kept only on the programmer’s computer or they can be shared online with various cloud hosting services in what’s called a remote repository. (The local repository is what’s stored on your computer.)
Perhaps the most critical feature of a version control software is its ability to merge. Occasionally, different programmers make changes to the same file and try to push (save it) to the remote repository. Git will notice when this occurs and task the second programmer to pick what changes to use and merge the two versions together. This and many other features of version control software like it make it critical for team projects.
My favorite version control software is Git, but Mercurial and Subversion are also popular. If you haven’t already learned to use Git or use the GUI instead of the command line interface, I highly recommend completing pcottle’s free interactive tutorial.
There are two great sites I recommend for backing up to a remote repository with Git: Github and Bitbucket. I use both. Github has unlimited shared public repositories, but charges for private repositories (You can work with anyone, but your code is public for the whole world to see). This makes it great for open source projects, but bad for anything you want to commercialize or anything with sensitive or personal information. Bitbucket has unlimited single user private repositories, but charges for collaborators. This makes it great for privacy if you’re working alone. With either solution, you’ll have to pay money for a shared private repository, so it will depend on your situation which remote repository is best for you. I put all public repositories on Github for the increased visibility and keep my private repositories on Bitbucket.
Do you have your own tools you recommend? Did I do something wrong in my vimrc? Leave me a comment and I’ll try them out and fix it.