As a senior software engineer, my laptop is my most important tool. It’s the device I use to write code, communicate with my team, and access all the tools and resources I need to do my job. In this post, I’d like to share some of the critical things I always make sure to have on my laptop as a senior software engineer.

Hardware

I introduce you to my trusty laptop – a MacBook Air M1 2020. This laptop packs a punch with its Apple M1 chip, 8GB of RAM, and a 512GB SSD. It’s lightweight and portable, making it easy to work on the go. I also have a USB-C dock to connect to external displays and peripherals when working from my home office.

Software

1. Operating System

One of the reasons I prefer macOS as my operating system is its smooth and intuitive user interface. The operating system offers a clean and organized look, making it easy to navigate and find the files and applications I need.

In terms of developer tools, macOS offers a wide range of features geared toward developers. Some examples include:

  • Xcode: An integrated development environment provided by Apple for iOS and macOS development
  • Terminal: A command-line interface that allows me to interact with the operating system, giving me more control and flexibility over my system.
  • Homebrew: A package manager for macOS that makes installing and managing open-source software easy.
  • Time Machine: A backup feature that allows me to easily save and restore my files and settings in case of any unexpected issue.

In addition to the above tools and features, I also like that macOS is always kept up-to-date with the latest version. This ensures that my operating system is secure and performant; it also guarantees that I have access to the latest features, improvements, and bug fixes.

2. Terminal client: Oh My ZSH

Oh My ZSH is a terminal client that I frequently use to manage my command-line interface (CLI) and automate tasks on my computer. It is an open-source framework that can be easily installed on top of the famous shell, ZSH, and provides a wide range of features that make it a powerful and versatile tool.

One of the critical features of Oh My ZSH is its customizability. The framework comes with plugins and themes that can be easily installed and configured, allowing me to customize the look and feel of my terminal and the available commands. This makes it easier for me to navigate the file system and perform tasks quickly and efficiently.

Another feature that I appreciate about Oh My ZSH is its autocompletion feature. It makes it easy for me to navigate and execute commands with suggestions and auto-complete, which can help me to work more quickly and reduce the risk of errors.

Finally, Oh My ZSH also provides a set of aliases and shell functions, which can be used to automate repetitive tasks and make my workflow more efficient.

3. FTP Client: Transmit

On the other hand, Transmit is my preferred choice of FTP client. Transmit is a powerful and easy-to-use client that allows me to transfer files to and from a server using the File Transfer Protocol (FTP), SFTP, and other protocols. Some of the key features that I appreciate about Transmit include the following:

  • Intuitive and user-friendly interface: The interface of Transmit is straightforward and easy to use, which makes it easy for me to find and transfer files quickly and easily.
  • Advanced features: Transmit offers a variety of advanced features such as folder syncing, WebDAV, Amazon S3, and Backblaze B2 support, which makes it a versatile and powerful client.
  • Advanced security feature: also offers the ability to encrypt files for secure transfer and editing files remotely via Transmit; this way, you can work remotely and securely.

4. Communication and collaboration tools

As a senior software engineer, effective communication and collaboration is key to my productivity. To facilitate this, I use a variety of messaging and video conferencing platforms, including Slack, Microsoft Teams, Google Meet, and Gmail.

i) Slack

Slack is my go-to platform for instant messaging, which allows me to quickly and easily communicate with my colleagues and clients. Slack offers a wide range of features such as group chat, direct messaging, and file sharing, that makes it a great tool for team collaboration.

ii) Microsoft Teams and Google Meet

For video conferencing and virtual meetings, I use Microsoft Teams and Google Meet. Microsoft Teams is an excellent platform for internal team meetings, it provides a comprehensive set of features such as screen sharing, recording, and chat that makes it easy to conduct productive and engaging virtual meetings.

On the other hand, Google Meet, is great for external clients, it’s easy to use, have low latency and have great integration with other G-Suite tools, which allow me to schedule, join and record meetings quickly.

iii) Email

Gmail is my preferred email client; it integrates seamlessly with the other tools I use, such as Google Calendar and Google Drive, allowing me to manage my emails, schedule appointments, and share files in one place.

In summary, using a combination of Slack, Microsoft Teams, Google Meet, and Gmail enables me to effectively communicate and collaborate with my team and clients, regardless of the location. It allows me to stay connected and productive in the office or remotely.

5. Text editors

i) Visual Studio Code

Visual Studio Code (VS Code) is a versatile text editor that has become a popular choice among developers due to its powerful features and customization options. Some of the key features of VS Code that I find particularly useful include:

  • IntelliSense: This feature provides intelligent code completion, which makes it easier to write and navigate through code by providing suggestions for variable and function names, parameters, and more.
  • Built-in Git integration: With the Git integration built into VS Code, I can easily view the status of my files, make commits, and switch branches without leaving the editor.
  • Customizable UI: VS Code allows me to customize the look and feel of the editor to suit my preferences, making it easier to focus on my work.
  • Extensibility: I can customize VS Code to suit my specific needs and workflow with a wide range of plugins and extensions.

ii) Xcode

Xcode is a development environment for macOS and iOS apps. It is a suite of tools and frameworks developed by Apple for creating, debugging, and deploying software on Macs, iPhones, iPads, and Apple Watches.

Xcode provides developers with a robust integrated development environment (IDE) that includes a code editor, a visual design editor, a debugging tool, and a simulator, among other features. It also supports version control systems, such as Git, and allows developers to test their apps on multiple devices and in different environments.

With Xcode, developers can build a wide variety of apps, from simple command-line utilities to complex multi-platform applications. It’s a must-have tool for any Mac-using developer that are building software for macOS and iOS.

iii) JetBrains PhpStorm

A powerful PHP IDE that provides an intelligent code editor, debugging, and other development tools. It also offers support for web technologies such as HTML, CSS, and JavaScript, making it a comprehensive solution for web development.

iv) JetBrains PyCharm

A powerful Python IDE that offers a rich set of features for Python development, including debugging, refactoring, and code completion. It also includes support for web development frameworks such as Django, Flask and Pyramid.

6. Database Clients

A Database Management System(DBMS) is a software for creating, managing, and maintaining databases. I use a variety of DBMS such as MySQL, MongoDB, and PostgreSQL, depending on the project’s needs.

i) Datagrip By JetBrains

It’s a database IDE that provides advanced tools for working with SQL and databases, it’s compatible with multiple DBMS and has support for autocomplete, query building, data exporting and more.

ii) TablePlus

It’s a database management tool that allows me to connect and interact with multiple databases, it has a clean and simple interface and supports multiple database servers such as MySQL, PostgreSQL, MongoDB and SQL Server. It also has several advanced features such as database versioning, data comparison, and SQL history.

iii) phpMyAdmin:

Is a web-based tool for managing MySQL and MariaDB databases. It provides a user-friendly interface for performing common database operations such as creating, editing, and deleting tables and managing users. It also allows for executing SQL statements and performing backups, exports and import data from various formats. It’s a widely used tool, especially for small and medium-size databases and it is an open-source software. It’s also widely supported and compatible with different hosting services and servers making it easy to install.

Workflow

When it comes to my workflow, organization is key. I use a well-defined folder structure to keep my projects organized, and I make use of Git branches to keep my codebase clean and maintainable. I use a Kanban-style workflow to manage my tasks and keep track of what needs to be done, what’s in progress, and what’s been completed.

Cloud Storage

i) OneDrive

I use OneDrive for my personal cloud storage needs, keeping all my personal files and documents organized and accessible from any device.

ii) Google Drive

For work and consulting related documents, I turn to Google Drive as it offers seamless collaboration features and allows me to easily share files with my team and work on documents in real-time.”

Version Control

I have extensive experience using version control systems such as Git and GitHub. I rely on these tools not only for my personal and consulting work, but also for my professional projects at my current workplace.

i) Git

Git allows me to keep track of the evolution of my code, with the ability to view and revert to previous versions, as well as to merge different branches of development. This is particularly useful when working on complex projects with multiple contributors, as it ensures that everyone is working off of the most up-to-date version of the code.

ii) Github

For personal and consulting work, I primarily use GitHub as my go-to platform for version control. GitHub provides a user-friendly interface that makes it easy to collaborate with other developers and to manage multiple repositories. It also provides a wide range of integrations and plugins that can be used to automate various aspects of the development process.

iii) Gitlab

At my current workplace, we use both Git and GitLab for version control. GitLab is a platform that provides a centralized location for all of our code, documentation, and issue tracking. It also offers built-in Continuous Integration/Continuous Deployment (CI/CD) functionality, which allows for automated testing and deployment of our code. This greatly improves the efficiency and reliability of our development process.

Overall, my experience with Git and various version control platforms has greatly improved my ability to collaborate with my team and manage the evolution of my codebase.

Browser


As a web developer, I primarily use Google Chrome as my go-to web browser when working on projects. One of the reasons I prefer Chrome is because of its robust developer tools, which provide a wide range of features that help me to debug and optimize my code.

For PHP and Python web development, I make use of the developer tools in Chrome to inspect the HTML, CSS and JavaScript of the website, which helps me to identify and fix any issues with the layout and functionality of the site. I can also use the developer tools to profile the website’s performance and identify any bottlenecks that may be slowing down the site’s load time.

I also use the developer tools for debugging and testing my code. For instance, I can use the JavaScript console to test and debug JavaScript and jQuery code, which can be especially useful when working with complex and dynamic web pages.

Additionally, the developer tools of chrome also allow me to test the responsive design of the website, which lets me easily simulate different screen sizes and viewports, making it easy to ensure that the site looks and functions correctly on all devices.

In summary, using Google Chrome and its developer tools is an essential part of my web development workflow, particularly when working with PHP and Python. It provides me with a range of powerful tools that allow me to efficiently design, debug, and optimize my web projects.

Productivity Tools

To manage and track my work tasks and projects, I use Jira which provides me with powerful project management and workflow capabilities, allowing me to stay on top of my workload and meet deadlines with ease.

Additionally, I use Google Tasks to keep track of my work-related to-do list and manage my time effectively.

For my personal tasks, I use Todoist, which helps me stay on top of my personal responsibilities and manage my time effectively. Together, these tools are a powerful combination that keeps me organized, productive, and on top of everything.”

Security

VPN

As a frequent user of the internet, I understand the importance of maintaining online security and privacy. That’s why I use a virtual private network (VPN) service to protect my personal information and internet activity.

For my personal use, I rely on ExpressVPN as my go-to VPN service. ExpressVPN is known for its fast connection speeds, robust security features, and strict no-logging policy. This ensures that my online activities are kept private and secure from potential hackers and data breaches.

In addition to using ExpressVPN for my personal use, I also utilize OpenVPN for my consulting and work projects. OpenVPN is a well-known open-source VPN software that provides a high level of security and configurability. It allows me to easily set up and manage VPN connections, even in situations where the use of proprietary software is restricted or not possible.

Using both ExpressVPN and OpenVPN gives me the flexibility to choose the most appropriate VPN solution for different situations. ExpressVPN offers a quick and easy solution for personal use, while OpenVPN is a powerful and configurable option for my consulting and work projects. Together, they allow me to ensure the security and privacy of my internet activities, regardless of the context or device that I’m using.

Outro

In conclusion, my MacBook Air M1 2020 is an essential tool for my work as a senior software engineer. The hardware, software, and workflows that I’ve described here are what keep me productive and organized. It’s important to remember that everyone’s setup will be different, and there’s no one-size-fits-all solution. However, I hope that this post has provided some insight into the tools, software and workflows that are most useful for senior software engineers, and that you may find some inspiration to optimize your own setup. Remember to always stay up-to-date with the latest software, tools and best practices, keep track of what works for you, and don’t be afraid to try new things!

Share.

Comments are closed.

Exit mobile version