Pre-requisites
Setup your local machine and tooling
We heavily recommend using a macbook for development. You don’t need to buy one. Lease it instead
Otherwise, any machine with a linux-based operating system will work just fine.
If, however, you’re on Windows; keep in mind that some of our recommendations below can be slightly more difficult to setup (or won’t be applicable - some tools are only available for MacOS for example). You’ll have to either ignore those recommendations or search for equivalent instructions/tools online. The choice is yours.
Need more help? Book an onboarding call with one of our team members and we’ll help you get everything set up: https://app.reclaim.ai/m/obaid-ur-rahmaan/onboarding
Recommended Setup
Terminal Setup
The terminal is a software engineer’s way to interact with their computer. Knowing how to use it to get around is important. You’ll be using it a lot.
The default MacOS Terminal is good, but you can make it better. It might seem a little over-the-top, but we can do just a bit of configuration to make it more readable. You’ll thank yourself later.
For windows users, you can install WSL2 to get a linux-based terminal.
Node.js Setup
Node.js is required for modern web development.
It’s a JavaScript runtime environment that allows you to run JavaScript code outside of a web browser. It’s essential for:
- Running modern web development tools and build systems
- Managing project dependencies through package managers
- Running development servers for local testing
- Building full-stack JavaScript applications
Don’t worry if this doesn’t make sense right now. You’ll understand it better as you start the roadmap.
There are different versions of Node.js. We’ll be using nvm - a popular Node Version Manager - to manage different versions of Node.js on our machine.
Node.js Mac Installation Guide
Verify installation by running this command in your terminal:
Next, install pnpm (a faster, more efficient package manager):
Verify pnpm installation:
We’ll be using pnpm to install and manage dependencies when building our projects. It’s faster and more efficient than npm.
Code Editor Setup
A code editor is a specialized text editor designed specifically for writing and editing code. It’s like a google doc, but for programming. Key features include:
- Syntax highlighting (colors different parts of code for better readability)
- Auto-completion (suggests code as you type)
- Error detection (finds mistakes in your code)
- File management (organize your project files)
- Extensions (add extra features)
- Integrated terminal (run commands without leaving the editor)
- Git integration (manage code versions)
- AI assistance (get help while coding)
We recommend Cursor because it combines all these features with powerful AI capabilities built-in to help you code faster and learn better.
See Editor setup in Efficiency
Essential Tools
We’ll be using these additional tools to enhance your development workflow:
-
AI Assistants:
- ChatGPT - For high-level chats
- Perplexity - Real-time web search and research
-
Diagramming Tools:
- EraserIO - System Design diagramming
- Excalidraw - Diagrams that look hand-drawn
-
Browser:
-
Mac-Specific Tools:
Optimizing Cursor for Development
-
Cursor Rules Configuration
Paste the following into Cursor’s system prompt settings:
-
AI Interaction Best Practices
- Use Chat for high-level questions and planning the changes
- Use Composer for actually making the code changes
- Make changes step-by-step, one task at a time
- Commit your changes often (See ‘Git for version control’ in the roadmap)
-
AI Model Selection
- Use o1-preview for just explaining and coming up with a plan for ambiguous or complex issues that affect the entire codebase
- Use claude-3-5-sonnet-20240620 when you have a plan and the problem is now more narrowly scoped and requirements are well-defined
- Use gemini-2.0-flash-exp for editing in-line (Both Cmd+K in the terminal or in-line editing with Cmd+M)