My Productivity Tools and Development Setup Recommended to Software Engineers
- 2017 Year
- 3.5 GHz Intel Core i7 Processor
- 16 GB Memory
- 256 GB Storage
My MacBook Pro (company provided) is the top 1 productivity tool for me. I use it to code, write blogs, and everything.
I'm using iPhone X as my mobile phone. I have been an iPhone person ever since 2013 from an iPhone 4. Before iPhone, I have been playing with Android phones (Nexus S) for a while. The iOS ecosystem, better notification system and app quality are the key reasons I stick with iOS devices.
I don't actually have a desktop machine. Since my employer has $150 Azure credits for employees so I just created a Windows VM in Azure to use as a Windows desktop machine. I used the VM to install/test any software that is only available for Windows, for example, Power BI Desktop.
Work Station (where I work)
👉 ThinkVision P27h (Dual-monitors)
Provided for me to use at work. I connect my laptop to two external monitors and I usually have my laptop open slack window, one external monitor open Chrome browser, and one monitor open Outlook/VS Code. It also supports USB Type-C so you can get display output and charging with just one cable.
Provided for me to use at work. Although it's cool and encourages you to stand to work to keep healthy, I felt more comfortable sitting behind it.
The external keyboard allows me to put my laptop farther from me and more close to other monitors so the three screens can be almost in the same surface.
I'm really a fan of trackpad. I can never go back to the old time when I was using a mouse. When I'm using an external keyboard, I have to have an external trackpad as well since I can't get to the trackpad of the MacBook.
AirPods is my favorites accessory as it is really convenient and I often forget I was actually wearing them. Unlike wearing in-ear earphones when you can hardly hear others talking to you, you will definitely know if someone is trying to talk to you without patting you for attention.
I have been using Apple Watch since 2014 when its first generation was released. Apple Watch is great for people like me who don't bother taking out iPhone from pocket to just read notifications. Apple Watch does this one job for me and does it well.
- Chrome: It's the most popular browsers in the world. I use it for web related development. Great debugging experience.
- Slack: The most popular team collaboration app, great for developers. It integrates with almost all your development tools and services to streamline your development workflow and team collaboration experience.
- VS Code: I used to be a Sublime Text fan, but switch over to VS Code from 2016 just because it's active development/extension community. Refer to VS Code Extensions for what extensions I love.
- Sketch: Most popular web/app design software (macOS only). Very easy to create web/app design without professional design knowledge. I used it to design web/app prototypes and read design spec from designers.
- GitHub Desktop: An official desktop client for GitHub. I use it as an alternative for Git commands when I want to get visualized diffs.
- Paw: An advanced REST API desktop client for macOS. I feel it much better compared with Postman client which is more of a Web app. Paw has macOS native UI, and more extensions for advanced need. I use it to troubleshoot REST API requests.
- Microsoft Remote Desktop: A Windows remote desktop client. I use it to connect to Azure Windows VM.
- Alfred 3: A shortcut tool. There are many great plugins that allow you to trigger automation from shortcut. I use it for searching, clipboard history, snippet, and uploading images from pasteboard.
- Bear: A markdown note app. Element UI and smooth typing experience.
- BlueJeans/Zoom/WebEx: Online meeting, to have video meeting with your team members without having to meet in person.
- Charles: It's a web proxy that allows you to debug network traffic. I use it to inspect network requests made outside Chrome browser.
- FileZilla: A FTP tool that help you upload/download files to/from your remote host through FTP protocol.
- GIF Brewery 3: A GIF maker app for macOS. I use it to record screen as a GIF so that when I share it with others it's easier to be viewed compared with a video clip.
- Magnet: A macOS window manager. I usually have multiple apps opened in multiple monitors, it's really helpful to use shortcut to move and resize apps between monitors.
- Microsoft Office Word/Excel/Outlook/PowerPoint/Teams: Classic office productivity suite provided by Microsoft.
- Monosnap: A free advanced screenshot tool. You can make annotations with the screenshot and it has integration with cloud storage so you can get a sharable link immediately.
- Reeder: An RSS reader. You can also login with third-party RSS manager account. I subscribed engineering blogs from major tech companies so that I can get latest technology trend update from major tech companies.
- Sequal Pro: A database management tool that help you manage database with UI.
- ShadowsocksX-NG: A Shadowsocks client. It helps me to get access to some apps that were blocked (e.g. Google in China).
- Typora: A markdown editor that render as you type. You don't need to look at raw text on the left and rendered on the right anymore.
Terminal is probably one of the most used app for software engineers. Check out Ultimate way to beautify Mac terminal (oh-my-zsh) and plugin recommendations for a complete guide on improving your productivity on your terminal.
VS Code Extensions
One reason I'm choosing VS Code as my preferred code editor (IDE) is the rich extensions marketplace. Here are a list of VS Code extensions I use:
- Atom One Dark Theme: A theme based on Atom's One Dark theme.
- Code Spell Checker: A basic spell checker help with catching common spelling errors
- Copy without formatting: Prevent background/font format being pasted
- Rainbow CSV: Highlight CSV columns
- TODO Highlight: Highlight
- Slack: Same as on macOS, used just for quickly read and respond to messages.
- PPHub: A third-party GitHub mobile client. You can view trending projects/developers and updates from your following account.
- Eudic: A simple dictionary that has little to no ads.
- Google: Google anything you want to know.
- Scanbot: A free scanner app that has great user experience
- Grammarly: Fixes grammar issues for me. Really helpful when writing emails or documentations.
- Save Page WE: When I use Save Page As feature provided by Chrome, it actually exported html with lots of assets files. This extension actually exported as a single HTML file, which makes it easier to share.
- Awesome Screenshot: Take screenshot from web pages
- JSONView: Format JSON response in a more readable format
- BuiltWith: Tells you what technology the current website uses
- IFTTT (If This Then That): Setup automation between apps and services. I personally use it to automate the smart lights at home when I arrive/leave home.
- GitHub: GitHub is a community all developers love. I use GitHub to manage my code, knowledge, and projects, and static websites. I also discover/contribute to trending and interesting open source projects. Check out Use GitHub for Knowledge Base and Projects Management for how I use it to manage my knowledge and projects.
- Firebase: Firebase gives you lots of out-of-the-box cloud solution for free, for example, real time database, cloud storage, cloud functions, and hosting. It makes it almost 0 cost to spin up a demo app.
- Heroku: Heroku is a cloud platform to deploy apps. It is free for experimental use. I use it to deploy Node.js app where free static hosting services like Github Pages or Firebase Hosting can't support.
- Google Cloud, Amazon Web Services (AWS), Microsoft Azure: These are major cloud computing service provider, some services are even free for developers to get started with. For example, Google Cloud - Always Free, AWS - Always Free, Azure - Free Account.
- JSFiddle: An online HTML/JS/CSS editor, where you can test and run your code. I use it to test and share JS/HTML/CSS code snippet.
- Travis CI, Circle CI: Continuous integration services used to build and test software projects hosted at GitHub. I use them to build and deploy static websites hosted on GitHub.