Setting Up Software Engineer Development

August 9, 2023 · 4 minutes read

Setting up Software Engineer development

Setting up development environments is a frequent ritual in a software engineer’s journey, a task I’ve lost count of over my career. Yet this time, I’ve documented the steps, saving future hours in configuring a new development for coding.

Basic Usage for Macbook Productivity

Customize System Preferences with following options


  • Tap to click
  • Tracking speed: Maximum as Fast

Trackpad Options

  • Use trackpad for dragging
  • Dragging Style -> Three finger flag


  • Add language typing system: Simple Telex (Vietnamese)

Keyboard layouts

  • Disable Correct spelling automatically

Security and Privacy

  • Enabling FileVault for data encryption.
  • Configuring a firewall and managing app permissions.
  • Using a password manager for secure credentials.

Backup and Restoring

  • Time Machine: Setup automatic backups. Good usage for external drive.
  • Cloud Storage: Syncing important files and settings.

Essential Applications


  • Tabs: Compact layout
  • Privacy: Prevent tracking
  • Advanced:
    • Show full website address
    • Show Develop menu in menu bar

Rectangle Import my personal setting in dotfiles

Logi Option+ Install driver for logitech devices

Many other applications can refer to Brewfile in my dotfiles repo

Essential Developer Tools

In the world of software development, there are numerous important tools that you need to install. After using these tools for several years, I always emphasize for a simpler and effective performance. That’s why I created my dotfiles to simplify it. Dotfiles allow you to install and manage all the necessary tools automatically and effortlessly, making the setup process much easier.

A typical developer environment requires the following tools:

  • Xcode: Apple’s integrated development environment.
  • Homebrew: A package manager for macOS. I utilize a Brewfile to automate the setup of my common packages.
  • Zsh: The Z shell replaces the default Bash shell on macOS.
  • Prezto: A rapid configuration framework for Zsh that I migrated to after using Oh-my-zsh for a while.
  • Terminal: Personally, I opt for iTerm, though you can also use Kitty for GPU-rendered text.

For custom configurations, place them in the following files:

  • .zshrc: Configuration for your shell environment.
  • .zpreztorc: Configuration for your Zsh plugins.

Development Environment


I used to be a terminal fanatic, and having Emacs and Vim was absolutely indispensable. But as time marched on, I opted for the simplicity of VSCode – a bit like swapping out sneakers for a comfy pair of slippers.

Version Control

Using Git with Sublime Merge (GUI) and command line

Programming Language

Ruby and Golang drive my backend development, while Python fuels AI hobby projects. Therefore, smoothly managing language environments and isolated development through package manager is vital.

Package Manager

With various options for each language, I’ve streamlined my process by adopting asdf – a time-saving choice.


Containerized development like Docker offers isolation and quick setup. However, for enhanced speed, opt for a native setup with manual tool installation. There’s always a tradeoff, the cost determined by your decision.

Bonus Productivity Tips

Delete a word and a line in iTerm2

I exposed those config in my iTerm profile. Reference:

Port 5000 was occupied by Control Center in the new MacOS version

If your local development server uses this port, you can regain control by disabling the AirPlay Receiver Setting.

Clone all repos of company at once

Require gh package in your machine, or can install by brew install gh. Login with gh.

gh auth login

Clone all repos that defined by --limit option under your new folder my-org. Replace my-org with your organization name:

mkdir my-org && cd my-org

gh repo list my-org --limit 1000 | while read -r repo _; do
  gh repo clone "$repo" "$repo"

Final Thoughts

Setting up software engineer development environment involves several pivotal steps – from tool selection to environment customization. Embrace the journey, iterate, and don’t hesitate to innovate with your medley of tools and configurations.

In this dynamic landscape, a well-organized, optimized development environment is the compass to navigate the ever-evolving realm of software engineering. Enhanced productivity, refined code, and creative breakthroughs await. Share your experiences, comments, and let’s collectively craft the future of seamless coding together.