Home

Write prompts, not code

CursorAINextJSVercel

Background

Woah, inaugural blog post. I figured since I’ve gone ahead and built this site, an ideal first post would be to write a bit about how it actually came to fruition. I’d been wanting to refresh my personal site for a while now, but was always a little bit daunted because 1. effort and 2. I had figured my front end skills had probably deteriorated since undergrad. However! Recently, I’d been talking a lot with a good friend of mine who’s really into product design, and he’d been showing me these gorgeous front end concepts he’d been coming up with. I was inspired, and he was super helpful in showing me his workflow in creating them. This was instrumental in getting me started in overhauling my own site.

Concurrently, I had been seeing a lot on my social media lately about Cursor, the new AI powered IDE for coding. I’d always been a little bit skeptical of these new AI tools because yes they’re very “showy” and can spin up some designs really fast, but when it comes down to it, I wasn’t sure they could really do everything a programmer could. I figured if I was going to be a “real” dev, I should figure out how to do all this stuff myself. While I was thinking this, (and procrastinating getting started on the site) I was also reading Richard Hamming’s book “The Art of Doing Science and Engineering”.

This book probably deserves its own dedicated post (you can read my Goodreads review), but there was a quote that really stuck out to me. Hamming was talking about when the first Symbolic Assembly Languages began to appear, replacing the original binary. He said:

“At the time SAP first appeared I would guess about 1% of the older programmers were interested in it - using SAP was ‘sissy stuff’, and a real programmer would not stoop to wasting machine capacity to do the assembly“

Hmmmm ok. So if these guys wanted to keep programming in 1’s and 0’s because it was the right way to do things, maybe I shouldn’t be trying to write typescript anymore (lol). This quote made me reassess and start to consider trying to program with one of these new AI tools. If I could spin up a website only using English words, that is probably worthwhile. Additionally, when considering the AI future, it is noteworthy how common the given advice is of “just try it, just start”. Ultimately, I took the advice and downloaded Cursor. I’d say I picked Cursor because I had seen the most hype about it on X, I did not spend a lot of time searching for the “best” IDE to use.

Using Cursor

To preface, my undergrad was in computer engineering, and in my current job I work on backend development maybe 90% of the time. What I’m trying to say here, to say the least, is that I don’t love front end. But I was optimistic. I knew I wanted to make a static website, NextJS seemed like the best framework to use, and I wanted to be able to upload markdown files to the site that would be the “posts”. That didn’t seem too hard. So with Cursor downloaded, I started with a blank directory and a prompt:

Create a next js project which can be used as a personal blog.
Keep it as minimalistic as possible.
I'd like a landing page with a hero section, followed by tiles for recent articles.
I'd like an about page as well.

Cursor did a good job spinning up this skeleton pretty quickly. Building on my familiarity with web development, I was able to iterate from this, styling the tabs and menus how I wanted, adding in media, and dynamically pulling markdown content. My first session I “coded” (“prompted”?) for maybe 3-3.5 hours straight. Wow. I don’t think I’d been in a flow state like that in a while for just working on software. There might be something here.

I was pretty much exclusively using the “composer” tool in cursor, which is their agentic offering. There is definitely a little bit of downtime with this method as the LLM is “thinking”, but not enough to be a real distraction. I continued iterating, and by the end of the first day I hit the free trial limit probably after about 5-6 hours of work. The next day, with a bit more work on formatting and styling, I was able to get the site into what I deemed to be an acceptable POC state and deployed on Vercel in about 8 total hours. I did have some minimal manual interventions for the CSS myself, but often I just allowed cursor to make the changes itself.

Cursor isn’t perfect. More than once it would start to overstep what I wanted, go down some unwanted chains of thought and I’d have to rollback the code. It would time out every so often as well. It’s important to keep in mind with these tools that this is the worst they’ll ever be, they’re only going to continue to improve, both as the foundational models get better, and as the UX gets better.

If you take a step back, it’s exceptional to see software get built only with English language. That’s it. That being said, it’s not good enough to the point where anyone could do this. Using cursor, it is clear you need to have some idea of what is going on under the hood, programming knowledge is still very relevant. I was listening to a podcast done by the Replit founder (another AI IDE offering) and he was mentioning that the value of having knowledge about software is doubling almost every six months (something along those lines, I’m going from memory here). Using Cursor I can totally see why. These tools allow you to extend yourself as a dev, and for the coding that isn’t really about “innovating” but rather about “doing”, Cursor will speed up your work to a significant extent.

I think the best advice I could give for using Cursor Composer is to be specific in your prompting. Prompt Engineering is real! It’s worth spending some time on learning how to get good at this. I’d often upload screenshots of the current state of the application while iterating so Cursor could “see” what was happening. At one point, I was having issues with layering some components, and with a few iterations the suggestions provided by Cursor were not helpful. I had an idea of where the issue might be (but I wasn’t sure, again, backend dev here) and I used the “Add Context” tool in the Cursor prompt to point it in the right direction, and lo and behold the next solution solved the layering issue (something with overriding css properties, I don’t really remember). I was impressed that with more information, the model seemed to improve on its own suggestions and help me out. Overall, I had a very positive time using Cursor.

Productivity Estimates

So, how much time did the tool save me? Like I mentioned before, I was able to get the site up and running in a state I was pleased with after about 8 hours of work, so call that 1 day. The week prior, I had tried to build a NextJS portfolio myself and probably spent about 4 hours on it. I think if I continued to the point where it was as good as the site I was able to make with Cursor, it would’ve taken me 2-3 full days of development. Think about that! This tool literally 2-3x’d my productivity.

Now I think I am one of the greatest beneficiaries of Cursor for a couple reasons. The first is that I am a pretty experienced software engineer, just not in front end. So I am pretty easily able to build off of existing code. Additionally, because I don’t have a lot of domain knowledge here, there is a lot of room for growth in my productivity. Someone who is a frontend engineer, or someone who doesn’t really know how to code probably won’t see gains to this extent. Consider too that this was all with the free trial. It didn’t cost me anything to see this increase in productivity and I will strongly consider becoming a subscriber in the future.

Pros of Cursor

I already talked about the productivity gains of Cursor, so I won’t reiterate, but I think the biggest pro of Cursor in my opinion is that it made front end development somewhat enjoyable. I actually looked forward to prompting and iterating on my designs. Previously, I’d spend time learning the intricacies of some random front end framework, often to little success. Cursor totally alleviated these issues for me, and I had a much better experience just describing what I wanted. I think Cursor lowers the learning curve in a lot of these cases, and you can apply more general software knowledge to specific domains. I’m excited to see how this trend continues.

Cons of Cursor

In my mind, there are two large cons of cursor. The first issue is that I’m not sure I understand my codebase as well as I’d like to. I’m able to navigate through the files and deduce what’s happening, but Cursor is the project expert here, not me. Maybe that’s because I’m not a frontend guy, or maybe that’s just how software engineering will progress in the future? Not sure. But I also think this is hard to avoid considering it’s the other side of the coin of the positives I described earlier.

The other issue I see with Cursor is one of software entropy. The code base likes to grow, Cursor likes to code. Sometimes I’d ask it to refactor some old code for a new implementation, and it would be able to do this, but often it’d leave the old code behind, not removing it. Over time, I think this could leave a lot of tech debt sitting around a project. Occasionally I’d ask Cursor to try and clean up what was left in the code base, but this was not always successful. However, I do think this is likely easily fixed with later iterations.

Concluding Thoughts

All in all, I ended up liking Cursor much more than I initially believed I would. The user experience was convenient and quick to set up, I completed everything I needed with the free trial, and best of all… it actually worked. The site is up, I think it looks pretty good, and it was delivered much faster than I could’ve. I do have some reservations about having a little less familiarity with the code base, but I think those will dissolve with time.

If you think about it, it is rare in the professional domain of software engineering that you ever start totally from scratch on a project. It is often the sign of a good engineer to use what code is currently available to him, no need to reinvent the wheel. If you join a company, you have to spend time learning the code base, it’ll never be fully written by yourself. If you’re a founder, you often build off of open source software. Cursor is an example of your coworkers being an AI, it feels symbiotic. I think it makes me feel positive about the AI trends, that there is substance.

People keep asking about how AI is going to generate value? What’s the trillion dollar product?
Maybe the value isn’t derived from a new product it’ll create, but instead, at least in the near future, by increasing the rate at which humans can produce it themself.