Best AI Tools for Software Engineering in 2025
Douglas da Silva | Apr 01, 2025
As a CTO who’s constantly exploring ways to boost development efficiency, I’ve tested nearly every AI coding assistant on the market (if this is even possible as every day we have a new tool in the market).
Most promise the moon but deliver marginal improvements at best. Cursor with Claude 3.7 is different – it’s the first tool that genuinely transforms how I work with code.
I recently built a complete mobile budget tracking app from scratch in under 12 hours using this combination, and I want to share how you can harness the same capabilities. This isn’t about replacing developers – it’s about making skilled developers dramatically more productive.
Before diving into setup, let’s understand why Cursor stands out:
First, download and install Cursor from cursor.so. It’s available for macOS, Windows, and Linux.
Once installed:
Cursor works best when it understands your project’s scope and structure:
.cursorignore
file for files you don’t want Cursor to analyze (like dependency folders such as node_modules, which could seriously disrupt the project context).From my experience building the DailyBudget app with Cursor, here are the key workflow patterns I’ve found most effective:
To create a new React/React Native component, try:
Create a BudgetStats component that displays the total budget, amount spent, and remaining budget with appropriate color coding based on status. It should accept a budgetPeriod object and transactions array as props, and follow our application's theme-aware styling patterns.
Code language: JavaScript (javascript)
When your change affects multiple files:
I need to implement the budget calendar visualization across the app. This will require:
1. Creating a BudgetCalendar component that shows daily spending status
2. Adding color coding for different spending states (under budget, near limit, over budget)
3. Adding a "today" indicator for the current day
4. Making sure it shows correctly in both BudgetPeriodScreen and BudgetTimeframesScreen
Please implement these changes across the relevant files.
Code language: JavaScript (javascript)
When you notice code duplication:
I notice we're duplicating budget calculation logic in BudgetPeriodScreen.tsx and BudgetTimeframesScreen.tsx. Please extract the calculateDailyBudget and calculateAccumulatedBudget functions into a utils/budgetCalculations.ts file and update both screens to use these shared utilities.
Code language: JavaScript (javascript)
Add @web
to your prompts to help Cursor find relevant documentation:
@web How do I implement a date picker component in React Native that works across both web and native platforms? Please create a reusable DatePicker component that we can use in both AddTransactionScreen and AddTimeframeScreen.
Code language: PHP (php)
From my experience, here are some challenges you might encounter and how to address them:
Claude isn’t great at visual details. For UI work:
Cursor tends to implement features directly rather than creating reusable structures:
Let Cursor handle code, but manage git yourself:
These practical tips will help you get the most out of Cursor:
Cursor with Claude 3.7 isn’t a magic solution that eliminates the need for development expertise. Instead, it’s a powerful tool that amplifies what skilled developers can accomplish.
In my testing, it’s reduced development time by approximately 50% for features I’d normally implement myself for initial implementation (and 20-30% for overall performance in production-ready apps).
The DailyBudget app would typically take 40-50 hours to build (if not more), but I completed it in just 8-12 hours using this approach (brainstorming with LLM included).
That’s not incremental improvement – it’s transformative. But it requires you to understand what you’re building and how to guide the AI effectively.
In my next article, I’ll walk through how I built a complete mobile app from scratch in under 20 hours using this approach, detailing the step-by-step process from ideation to deployment.
Douglas started as a Senior FullStack Developer at Cheesecake Labs and currently he's Partner and CBDO at the company.