Saturday, October 5, 2024
Laptops

6 Most Useful Tools for Computer Science in 2024

Once you graduate and start your career as a software engineer, depending on your job, the software you’ll use may be different. However, there’s “essential” software that MOST software engineers MUST use.

Some of these you’ll learn in school but a few of this you will have to pick naturally.

Your first job will teach you that  if you are not proficient with this software, productivity will be low.

In this post, we’ll talk about how often you’ll use these software, when you will use it  as well as offering some alternatives. I’ll include some tips for those computer science students in college for each of these software as well.

Note that this post is focused on SOFTWARE rather PROGRAMMING LANGUAGES

1. Integrated Development Environment (IDE): Visual Studio Code

  • Usage: 40%
  • How Often : VS Code will be your main development environment. Whether it’s for Python scripts,  Java projects, or experimenting with front-end technologies like JavaScript, it doesn’t matter. VS Code is flexible and supports almost everything. It’s lightweight RAM wise (hardware wise) but incredibly powerful (after you install the extensions you need).
  • When: You will encounter VS Code in your second year, when you start working on bigger projects. By your final year, it should become your default tool for any assignment.
  • Example: It becomes most useful with complex projects usually full-stack apps that require different languages. Ex: full-stack application with a Node.js back-end and React front-end. VS Code will allow you to work on both simultaneously and include extensions that will help you with debugging, linting, and real-time collaboration.
  • Learning Curve: VS Code can be scary at first sight but after a while you realize it is quite intuitive. The learning curve for your particular usage will depend on the extensions you use (which ones and how many). Once you become quite acquiented with the software you can experiment with customization and hotkeys which will make you even more efficient.
  • Alternative Software:
    • JetBrains IntelliJ IDEA: A powerful alternative, especially for Java development.
    • Sublime Text: A lightweight text editor for fast coding and editing.
  • Advice: Mastering VS Code (or a similar IDE) will streamline your workflow. If you’re not sure where to start, explore the extensions marketplace—there are tools for debugging, testing, version control, and more. 

2. Version Control: Git & GitHub

Screenshot
  • Usage: 25%
  • How Often  I personally use Git for version control almost every day when working on a project. Keeping track of changes, whether it’s just me or with a team, its EXTREMELY crucial for both your workflow and the development of your code.
  • When  I started using Git when I had to work on a group project which involved having lots of files and code which parts were assigned to different people. It wasn’t challenging but it was somewhat annoying because I had never used GitHub before. Now it’s become  indispensable for ANY long and complex project and to store a database for my work.
  • Example: Let’s say your team has to work on different features at the same time for which each members is assigned a piece of code to work on. Using Git’s branching feature, all members can work on separate features, and GitHub pull requests made merging our work simple and organized.
  • Learning Curve: Git has a steep learning curve at first, especially if you’ve never used a version control system before. Once you understand the basics of branching, merging, and handling conflicts, it becomes a powerful tool.
  • Alternative Software:
    • Bitbucket: Another version control system integrated with Atlassian tools like Jira.
    • GitLab: A great alternative for DevOps practices with built-in CI/CD pipelines.
  • Advice: Start using Git for all your projects, even small ones. It will help you get into the habit of version control, and you’ll be ahead of the curve when working with a team on real-world projects.

3. Command Line Tools: Terminal & Bash

  • Usage: 15%
  • How Often I Use It: I use the Terminal ALL the time. When I have to run a short script, access files, checking on servers, or git commands to download/upload stuff terminal gives me QUICK access to these features. You can also use it to automate many routine tasks. Just copy and paste  a code and voila, it’s done. 
  • When: Your school will probably NEVER emphasize the importance of terminal (Be it windows or OSX or Linux terminal). You WILL realize how useful it is once you START using it yourself. You’ll start doing this AUTOMATICALLY when you’re in need of installing, updating or just trying to do a quick tests on simple code. After that YOU MUST continue using it for other tasks and that’s how you CAN learn how to use it and improve your productivity. 
  • Real-World Example: The most common example is having to run an application on a remote server. You do this by using SSH and Bash Scripts. This automate the process saving time and reducing errors.
  • Learning Curve: It’s definitely intimidating at first. It sort feels like you’re using a tool that only advanced programmers should use (like hackers). But you don’t really have to learn the entire language or commands. You can simply google or use chatGPT to get a command to do something. That way you’ll learn as you go or as you see a need to do something through the terminal. 
  • Alternative Software:
    • PowerShell: A more powerful shell for Windows with scripting capabilities.
    • zsh: An enhanced version of Bash with better autocompletion and customization.
  • Advice: Use it as early as possible. Just start with one command to see the magic work. You don’t have to do something complex but the first step is important and will eliminate any “intimidation” you may have to use this tool. A good place to start is navigating files or directories. Over time, you can add more tasks!

4. Containerization Tools: Docker

  • Usage: 5%
  • How Often: Only used when you’re developing software that must run across different environments (OSs). Also to be able to run your application on a machine that doesn’t have the dependencies of your production machine. Helps you with development , testing and production of your application.
  • When I Started Using It: I only encountered Docker when I worked on a project that had to run on different environments. I used docker to create several containers (think of different versions of an OS) and test how my software run on each.
  • Real-World Example: Let’s say you have an app with lots of dependencies. You are AWAY from your production machine which has all these dependencies. You can use DOCKER to keep working on your app on a new machine that doesn’t have your dependencies. Basically, it’s like moving you’re entire machine into a new one. The other use is to create DIFFERENT containers for say a “paint-like” software…each having different environments (OSs).
  • Learning Curve: Learning curve for a beginner in software development is pretty steep. You should only use this software during your final year or when you’re working on an actual final project or real soon to be launched software.
  • Alternative Software:
    • Vagrant: Useful for creating reproducible development environments.
    • Podman: A Docker-compatible alternative without the need for a Docker daemon.
  • Advice: Though it’s a must-have for deploying applications. It isn’t going to become useful until much later during your career. It does definitely help you build a stronger resume so try to use it at least on your final year.

5. Testing & Debugging Tools: Postman & Selenium

  • Usage: 5%
  • How Often : Postman is your go-to tool for API testing. API is basically the “interface” or “tool” that allows you to get data from other software. This tool makes sure there’s no problems when you want to request data from other software for your own application Selenium is your go tool for automating browser-based testing. Basically ,if you’re developing a web based app, it will test for you how it runs across different web browsers.
  • When : I started using  these testing tools when I began working on my own projects (third and fourth year) which were applications (web-based and for desktops).
  • Real-World: Was working on a web application that behaved like wikipedia except that instead of providing links to other articles, a tool would show up when you clicked over the mouse. Postman allowed me to test how the APIs work whereas Selenium allowed me to test it under different web browsers. 
  • Learning Curve: Postman is quite easy to learn, and you can start testing APIs within minutes. Selenium has a steeper learning curve.
  • Alternative Software:
    • JUnit: A widely used testing framework for Java applications.
    • Cypress: A powerful tool for front-end testing.
  • Advice: If you’re really serious about software development. You can start using testing as soon as you work on any application.The good news is that you won’t have to wait until you graduate to see the benefits of these tools, these CAN save you lots of time when working on projects because they’ll make it easier to catch bugs before they become major issues.

6. Database Management: MySQL & MongoDB

 

  • Usage: 5%
  • How Often: I use MySQL for relational database management. MongoDB for NoSQL databases. Every software developer MUST understand how to use SQL and NoSQL databases. Having both under your sleeve allows you to be more flexible on the kind of projects you can work on. 
  • When :  You learn SQL pretty early in school. However, you may not even come across NoSQL during college. You may have to pick an elective course or work with a project that actually makes use of NoSQL to touch it before you graduate. 
  • Real-World Example:  MySQL can be used for web applications that manage inventory, eCommerce plataforms, CMS (WordPress) etc. While MongoDB is more likely to be used for messaging apps and game data basically non-structured data.
  • Learning Curve: SQL is relatively easy to learn, especially with tools like MySQL Workbench which is shown in the figure above. MongoDB’s query language can be a bit challenging because it’s quiet different from SQL.
  • Alternative Software:
    • PostgreSQL: A powerful alternative to MySQL with more advanced features.
    • Firebase: A NoSQL database that’s great for real-time data and mobile applications.
  • Advice: Learn both relational (SQL) and non-relational (NoSQL) databases. Different projects call for different database solutions, and knowing both will make you a more versatile developer.

 

Final Thoughts

Learn these tools as early as possible. Summer breaks are a good time to learn whichever software isn’t taught by your school on your own. If you manage to have these down on your resume by the time you graduate, it will massively boost your chances to find a position because all these open up lots of different possibilities.

 

Author Profile

Miguel Salas
Miguel Salas
I am physicist and electrical engineer. My knowledge in computer software and hardware stems for my years spent doing research in optics and photonics devices and running simulations through various programming languages. My goal was to work for the quantum computing research team at IBM but Im now working with Astrophysical Simulations through Python. Most of the science related posts are written by me, the rest have different authors but I edited the final versions to fit the site's format.

Miguel Salas

I am physicist and electrical engineer. My knowledge in computer software and hardware stems for my years spent doing research in optics and photonics devices and running simulations through various programming languages. My goal was to work for the quantum computing research team at IBM but Im now working with Astrophysical Simulations through Python. Most of the science related posts are written by me, the rest have different authors but I edited the final versions to fit the site's format.

Leave a Reply

Your email address will not be published. Required fields are marked *