Getting Started with Developing on a Windows Machine
Purpose
The purpose of this tutorial is to get you comfortable with your development environment, and to get you started into your actual work as fast as possible. Without a well-established environment and workflow, it is difficult to start working without having hurdles and having to stop often to install new tools, etc.
I have done most of my schooling and development from a Windows machine, and as such, I have accrued some insight on the best ways to get started with Windows and be productive.
This is by no means the perfect solution or an exhaustive list of tools you might need, and I will update it as I learn more. WIth that being said, let's get started.
Environment and Workflow Tools
Getting Familiar with Version Control
Version control is the idea of having a way to track different versions of your code, and maintain some sort of ordering. It is different than just uploading your code to a shared Google Drive folder, for example, since it is able to revert to old versions of your code, and allows for people to work on different features in parallel and then merging all of those features into the root (or master) version. There are different frameworks used for version control, but the only one I have used significantly is Git.
Git is well supported, and has many different remote sites you can use to host your repositories. A git repository (or repo) is essentially the the name that is given to a whole project. That project can house files, folders, and most everything a normal folder in you computer file system could house, but with some added benefits. A repository tracks changes to it according a unique commit ID, and can have different branches, which are essentially different versions of the repo which can be kept separate, or pulled back into the master branch.
In my opnion, the best way to start understanding Git is to start using it, preferably on a project that is not all too important. You are bound to make mistakes when first using Git, but once you understand it, you will become much more productive.
Download : Git
Resources :
Installing a Better Terminal / Shell
Windows installations come with Windows Command Prompt by default, which is fine if you only have to use it occasionally, but as you start to have to use a command line interface (or CLI) more frequently, you will find that the Windows default terminal is quite underpowered, and not as well-supported. Windows does come with Powershell now, but I would recommend downloading a more robust and universal shell, such as Bash. One nice part about choosing Bash over other shells is that it is the default shell of most Linux and Unix installations, so if you do start using those operating systems, you will be familiar with their shell. Additionally, Git has a versio of bash called Git Bash, which you can install when you are installing Git. The benefits of learning the command line is that you have more granular control of your file system, and some tools are only available, or are just more fully featured, exclusively through the command line. For example, you can use your remote git site (i.e. Github, Gitlab, Bitbucket) to manage your repositories, but using the Git CLI will allow you better control, and often times is just quicker to use once you know what you're doing.
Download : Git Bash
Resources :
Installing Basic Text Editor (or IDE)
One of the primary and most personal tools you will use is your text editor, or Interacive Development Environment. Most of my experience is with text editors, so I will focus on that rather than IDE's. There are really two categories of text editors:
- Command-Line / Terminal Editors:
- GUI Text Editors
One of the benefits of command line editors is that they often come pre-installed on many distributions of Linux, and additionally, can be installed alongside different shells if you so choose (e.g. you can choose for Git Bash to install with VIM). Terminal editors usually have more of a learning-curve associated with using them, but are more rewarding to power-users, or people who are willing to take the time to truly customize their editors to their liking. These traits are making thei way into GUI editors more and more. GUI editors are much more straight forward to use, with all of the ones listed above having good plugin and community support.
I have used all of the text editos I mention above. I prefer VIM over Emacs, but mostly due to having used it much more and getting more acquainted with its key binding. The first of the other three editors I used was Sublime Text, which is quite nice, but it will pop-up frequently to ask you to purchase their paid licensed-version. I also quite liked Atom, but it has been plagued with some performance issues lately, so I finally switched to VS Code, which is what I use now. I really like the changes made to VS Code, which makes it more like an IDE than a text editor. In the end, this selection is mostly user preference.
Resources :
Wrapping Up
Once you are done getting these tools set up, the rest of your environment setup is very dpenedent on your task and can be influenced by what programming language you will be working it. Regardless of your task, I would encourage you to keep a well-defined workflow, and keep your projects organized and well-commented. A good resource for keeping good documentation of your work is to include README files when you create a new directory, and clearly state what can be found there. As such, I would implore you to also learn Markdown, which is a fairly simple and concise styling language to write clean notes and well-formatted documentation. Some help regarding Markdown can be found here.