Guides & References

The points described here discuss several essential development tools and frameworks that I believe developers in today's world should be already familiar with. As I work quite heavily with newly recent graduates as well as students, I believe they would find these tools to be extremely useful as they progress through their careers.

Unix

The precursor to which many Linux systems are built upon. Knowing the basics of Unix systems goes a long way to working with any Linux system. Becoming efficient and effective with navigating and operating Unix systems goes quite a long way.

Version Control Systems (VCS)

VCS is a system designed to handle code and resource changes by tracking contributed changes to a project. Git typically creates projects in what is typically called a repository (repo) and this is the tool that a large number of developers currently use (and has quite extensively been developed towards). The repository is typically stored in a remote server to serve as backup from any particular development machine. An example deployment of the Git Server is the popular GitHub, GitLab, or BitBucket. It would also be wise to mention that Git was not always the defacto VCS tool as there have been previous tools before it, namely Subversion (SVN) and others which are still used today, though Git has become the predominant tool.

Continuous Integration (CI)/Continuous Deployment (CD) Tools

CI and CD are highly useful tools and applications for building robust and fault-proof code. This falls under the area of unit-testing code and the software development lifecycle. There are a variety of tools to aid with CI/CD development known as DevOps that assist in automating testing and deployment. Developers should at the very least be familiar with software development and how their development plays in the grand scheme of effective software development.

An extremely overkill tool for most applications is Jenkins but it'll provide a large featureset that'll provide most project's needs. Other common CI/CD tools are TravisCI, CircleCI, GitLab CI, and GitHub Actions.

Docker

Docker is a containerization and virtualization framework designed to keep workspaces and applications separate from one another in what they've called containers. This is particularly helpful when deploying applications side-by-side, running applications in isolation, and moving/replication applications and workspaces. One can think of Docker containers as a virtual machine where the virtual machine is isolated from the host machine unless explicit interfaces are defined in which the two are allowed to communicate. Docker is similar in this fashion but is very lightweight by design and builds the desired image for an app from source. Docker is used in quite a large number of applications including CI/CD tools, DevOps, and large-scale orchestration (Kubernetes/Docker Swarm).