My Windsurf Experience
Monday was a holiday in the UK, so I decided to spend a couple of hours with Windsurf and an enterprise licence kindly provided by Sam Rudy.
I have used tools like GitHub Copilot and Google Code Assist before, but wanted to try out this full IDE.
I chose a familiar test project I use when learning, a Scrabble-Tetris hybrid with letters instead of shapes. The idea is simple: the letters drop, and when they land, if they form a word horizontally or vertically, that word is scored as in Scrabble, then the letters disappear. If multiple words are formed, the highest-scoring word is chosen.
I explained this to Windsurf in the initial prompt using Claud Sonnet 3.7 as the model. Surprisingly, Gemini 2.5 Pro is not yet in the Enterprise version, but is in the cheaper trial and pro versions.
Windsurf created a project that prompted confirmation when executing a terminal command, such as making a directory structure. It then wrote the code. I had specified Java and Spring Boot as I figured there would be plenty of training data. I like seeing the project automatically build out with each diff shown and accepting changes when Windsurf generates or modifies a file.
This experience was more powerful than a tab-based copilot of working with a chat and copying and pasting a bit of code at a time. This could easily become a natural part of a developer's workflow, maintaining flow rather than interrupting it.
The initial solution Windsurf created was good. It mainly worked, but did need some modifications to detect all the words. Initially, it created its own dictionary.txt. I asked Windsurf to replace the dictionary with the full list of scrabble words. It went to the internet, found a suitable file, downloaded it, checked the number of words, showed me a preview and asked me to accept a command to replace the existing dictionary.txt. That was not something I was expecting.
I then iterated with Windsurf, prompting for a modification, reviewing the diffs it produced, and sometimes with a bit of manual intervention. What I would recommend is to frequently commit to git before each prompt, to provide easy rollback. In fact, I see how general good programming practices like TDD, proper logging, good modularity and working in small increments will be vital for this development style, just like any other.
When I had got the game into a state that it was enjoyably playable, I decided to try something else. I asked Windsurf to add an autoplay feature, which it did. However, what surprised me when I reviewed the code was that it was not just playing the game, it had logic to look at the board and work out the best next move. I was not expecting that. I left it playing quite happily.
This was a brief introduction to Windsurf, but I was impressed overall. My main takeaway is that this is a powerful way of developing, like any tool, learning the patterns to use it well will be vital. I did not experience the "black box" of something higher level, like Bolt or Lovable. Of course I was just an individual working on a new project. Using Windsurf on a large legacy code base with multiple developers will be more challenging, especially if the code is not well structured but the techniques and patterns will come.
If a tool like this were fully adopted as part of the SDLC, it would be very hard to go back. They are good now and are only going to get better. It does remind me of the first time I used Heroku, when suddenly, infrastructure got easier, and anything less than git push/cf push to deploy seemed unnecessarily complicated. Mentally, I never went back from that experience as a developer and I can see tools like Windsurf having a similar impact.