“Two basic rules of life are:
1) Change is inevitable.
2) Everybody resists change.”
- W. Edwards Deming
“Quality comes not from inspection, but from improvement of the production process.”
- W. Edwards Deming
"If you can't describe what you are doing as a process, you don't know what you're doing."
- W. Edwards Deming
Edwards William Deming (1900-1993)
![]() |
Juan Antonio Breña Moral Technical Product Owner for Engineering Shared Platform @ Atradius CIO
Twitter | Github | LinkedIn |
Quotes: "Lead me, follow me, or get out of my way." "Pressure makes diamonds." - George S. Patton Jr. |
This talk couldn't age well over time.
Can you raise your hand ✋, if you use Intellij Idea Ultimate?
Can you raise your hand ✋, if you have tried Cursor AI?
Cursor version used for the talk:
ThoughtWorks Radar 2025Q1 // Tools
General idea about Cursor:
Add new tools in large companies is a hard task.
So, share some enterprise features is a good way to facilitate the adoption of a new tool.
Note: with a Pro account, the developer needs to disable. But with a Business account, this feature is handle at the organization level.
Source: https://www.cursor.com/privacyCursor operates a continuously monitored and 3rd-party audited security program.
SOC 2 is a compliance framework used to evaluate and validate an organizations
information security practices.
Set a monthly budget for the team:
Set up your team:
How much your team are using Cursor?
Cursor Dev team delivers new features every 1/2 weeks. (Lighweight patches) 🔥🔥🔥
git rev-list --count HEAD \
-- docs/images/review/cursor-version.png
git log --pretty=format:"%ad" --date=iso \
-- docs/images/review/cursor-version.png
Source: https://www.cursor.com/changelog
General idea about Cursor:
Discover the new features were added to a specific IDE product in compare with tradictional IDEs, with the idea to perceive the benefits.
Tab completion in Cursor is powered by advanced AI models that understand your code context. As you type, you'll receive intelligent suggestions that:
Note: If your are going to implement a complex tasks with the help of a LLM, please commit previous work.
Source: https://docs.cursor.com/chat/applyNote: Review the usage of .cursorignore file to avoid indexing sensitive data.
Source: https://www.cursor.com/security#codebase-indexingHelp Cursor with the right documentation associated with your project/repository.
Source: https://docs.cursor.com/context/@-symbols/@-docs#docsCursor provides access to main Commercial LLMs
Using rules in Cursor you can control the behavior of the underlying model. You can think of it as instructions and/or a system prompt for LLMs.
Source: https://docs.cursor.com/context/rulesAnalogy: In the organizations, exist a specific expert set of roles with the title of IT Champions who define the guidelines for a specific Technology, in our case Java.
Rule Type | Description |
---|---|
Always | Always included in the model context |
Auto Attached | Included when files matching a glob pattern are referenced |
Agent Requested | Rule is available to the AI, which decides whether to include it. Must provide a description |
Manual | Only included when explicitly mentioned using @ruleName |
Where I can find cursor rules?
Note: The previous links share .cursorrules files.
Note: Now, it is possible to create your own rules from Cursor.
Where I can find specific cursor rules for Java?
How to apply them in my repository? $(pwd).cursor/rules
sdk install jbang
jbang cache clear
jbang catalog list jabrena
jbang setup@jabrena init --cursor java
If you have good ideas, PRs are welcome. 🙏🙏🙏
Natural language interface for exploring, editing, and managing code with contextual AI assistance in Chat mode.
Source: https://docs.cursor.com/chat/overview2000's | 2010's | 2024+ |
---|---|---|
Books | Google, StackOverflow, Blogs, etc... | ChatGPT, Cloude, Gemini... |
![]() |
![]() |
![]() |
Example to fix a test:
Example for prototyping:
You can help LLMs increasing awareness linking to the prompt, aspects like: Java classes, Diagrams (Images/Text), Logs with Error traces, etc.
Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to LLMs.
Source: https://modelcontextprotocol.io/introductionThink of MCP as a plugin system for Cursor:
How to configure MCP:
How to configure MCP: (~/.cursor/mcp.json)
{
"mcpServers": {
"Stopwatch MCP": {
"command": "jbang",
"args": [
"stopwatch-mcp@jabrena"
]
},
"jvminsight": {
"command": "jbang",
"args": [
"jvminsight@mcp-java"
]
}
}
}
Where I can find useful MCP Servers?
Where I can find useful MCP Servers in Java?
The starting point:
Feature: Greek Gods API
As an API consumer
I want to retrieve information about Greek gods
So that I can use this data in my application
Background:
Given the Greek Gods API service is running
And the API base URL is "http://localhost:8080"
Scenario: Successfully retrieve all Greek gods
When I send a GET request to "/api/v1/gods/greek"
Then the response status code should be 200
And the response should be in JSON format
And the response should contain a list of Greek gods
And each god in the response should have the following attributes:
| attribute | type |
| id | integer |
| name | string |
...
Develop a new Microservice requires to review multiple aspects:
And model the solution and adhere to an architectural approach. (Example: C4 Model)
docker run -it --rm -p 9000:8080 -v \
$(pwd)/structurizr:/usr/local/structurizr \
structurizr/onpremises:2024.12.07
open http://localhost:9000
Source: https://c4model.com/And gather all the required information to build the new service:
If you decide to start a development using a Prompt, you should reduce the ambiguity in some technical decisions delegated to the LLM to increase the code quality generated, less loops and less tokens.
Some technical decisions in Spring Boot projects:
Some technical decisions in Quarkus projects:
Use the @20250320-1.md as Prompt and analyze implement & test the following images to understand the required development.
Detailed prompts are fine, but exist executions where the LLMs enter in severals loops. (It is not a 100% reliable process for large prompts)
So..
How to solve the problem with large prompts and have the capacity to interact more in the process?
Just stop saying "one shot"
Change the point of view: From a large prompt to a set of tasks.
How to apply them in my repository? $(pwd).cursor/rules
sdk install jbang
jbang cache clear
jbang catalog list jabrena
jbang setup@jabrena init --cursor tasks
Many thanks to @EyalToledano, @elie2222 & @ryancarson for the ideas about Task management in Cursor.
Step 1: Create a Product Requirements Document (PRD)
Use the rule @1000-create-prd.mdc Here's the feature @20250506-1.md
Step 2: Create a Product Requirements Document (PRD)
Take @PRD-GREEK-GODS-SERVICE.md and create the tasks using the rule @1001-generate-tasks-from-prd.mdc
Step 3: Implement the different tasks
Start on 1.1 and use the rule @1002-task-list.mdc
What is the "State of the art" in Tasks management?
The Circle (Right side) - Customer Profile:
The Square (Left side) - Value Proposition Map:
Dunning-Kruger effect
Cognitive load
All lines of code generated by any LLM must to be mastered by the team. (Mandatory)
Cursor improve the build/code phase.
But.. it is not the problem of Cursor if your Dev culture doesn't include: Pair programming, Collective Code Ownership, A wrong team size, others...
Cursor doesn't affect the XP Workflow
Cursor doesn't affect the Scrum Workflow
Checklist to review in your Dev quality of the company:
jbang trust list
jbang cache clear
jbang catalog list jabrena
jbang qr-code@jabrena \
--url https://jabrena.github.io/101-cursor/
Thanks