Setting Up Your Development Environment
As developers, we spend so much of our time perfecting our development environments. Which is not a bad thing necessarily. A good environment can make your experience better, easier, and produce better code. Yet, many people are not aware of how to perfect their environments, especially new developers. As such, we have put together everything a developer needs to know, based on best practices and recommendations. Keep in mind that it is a messy procedure and might be difficult to keep up with especially when working with a team..
Right, so start by setting up a source control system. Git is one of the most popular options, but you can use any platform you feel comfortable with. Source control is essential to stay on the same level with your team and maintain a source of truth for your application. It helps you store your code reliably, commit the changes that you make, and always have easy access to the latest version of your application. In addition, it allows you to easily to push your code to release by allowing merges and commits by different developers without conflicts.
Once you have set that up, you will want a reliable terminal. Bash terminal is very useful and can make your life very easy, unlike command prompt which is... kind of the exact opposite. With the introduction of PowerShell and Windows Subsystem for Linux (WSL), developing on windows can now feel sort of the same as Unix-based systems. Having a bash shell will help immensely with its commands and ease of use. It allows you to have a greater control on your system through single line commands.
At this stage you are going to need to install a couple of necessary things:
Your desired programming languages.
- Depending on the type of project, you will need different languages.
Compilers or interpreters needed.
- As some languages are compiled, such as C++, you will need to install compilers.
- Compiled languages are translated into binary files that the processor can execute.
- Interpreted languages are ran by an interpreter that executes the code line by line. As a result, compiled languages tend to be faster and more efficient than interpreted languages. Though, with the advancements of just-in-time compilation, the difference in execution time is becoming significantly lower. An example of an interpreted language is python.
- Some languages require development kits in order for you to develop in them. is a collection of software development tools in one installable package. They facilitate the creation of applications by having compiler, debugger and perhaps a software framework.
- Java for example requires an SDK to be downloaded by the developer, and a JVM to be installed on the recipient machine. Java Virtual Machine (JVM) is an engine that provides runtime environment to drive the Java Code or applications and it converts Java bytecode into machines language.
- The advantage of a JVM is code compatibility as it allows any machine to run the same java bytecode regardless of the OS.
Certain projects require specific versions of languages to be downloaded so keep that in mind. (throwback to my angular project failing because of this)
Next up on the list, you are going to need a text editor. Of course, this is just a personal preference, but a good text editor goes a long way. Developer-friendly editors will for example highlight specific words or functions and autocomplete as you write. An example of a simple straightforward editor is notepad++, coding on it is… just as you would expect, simple and it works. Some editors go a step further and introduce extra features to become IDEs (Integrated Development Environment). They are aimed to allow the developer to have all the tools he/she needs available on the same interface. Of course, an IDE is optional but will definitely improve your environment as it provides you with a lot of control. For example, an IDE would make it easy for you to compile your codes, run them, and debug on the spot. IDEs will also generally include a terminal for easy access within a single interface. You would be able to have multiple bash terminal instances and easily run all your commands. In addition, source control is integrated in the IDE, along with file exploration. As such, every tool a developer needs are within reach on a single interface to provide the best experience for developing your applications. (VS code is my buddy)
Finally, always considering containerizing your projects and environment. It is not a necessary step but definitely something worth looking into. Containerizing your environment allows it to run isolated from other processes and keeps it from breaking. It’s a tedious process but once you get the hang of it, it becomes easier every time. I won’t delve into containerization in this blog though, this one’s getting way too long.
Stick around for part 2 to create your environment and dockerize it in under 10 minutes.
Written by Serge