Blog @romenrg

Thoughts and experiences; about Software, Internet and Entrepreneurship.

Vibe Coding vs Prompt Engineering: AI and the Future of Software Development

Every year, the industry announces a new “game-changing” innovation. Most of them matter far less in practice than they do in talks and blog posts. A few are useful. Very few actually change how software is built.

AI agents did.

A vertically divided composition illustrating the synergy between human and AI in software development

In 2025, AI stopped being an experiment and became infrastructure for how I build software. It now shapes how I think about problems, how I design systems, how I write code, and how I review the work of others. Ignoring it today feels similar to ignoring version control or automated testing once they became standard.

On Software Engineers’ Productivity: Beyond Misleading Metrics

The question of how to measure software developers’ productivity has long been a subject of debate in the tech industry. New versions of old misguided approaches, such as counting the “number of lines of code” written, resurface, over and over again, despite not reflecting value creation or performace.

An image of the home office of a remote worker, where his mac laptop screen displays a Zoom meeting

In fact, setting incentives based on such metrics can lead to counterproductive behaviors, as explored in “Reinventing Organizations” by Frederic Laloux. The book highlights how traditional incentive systems often undermine intrinsic motivation and foster a culture of gaming the system rather than pursuing genuine excellence.

Building Resilience: Overcoming Adversity and Finding Balance

Resilience is the ability to bounce back from setbacks. It is definitely a critical skill to have, especially during difficult times; although it is often overlooked.

An image of a man, taken from behind, in nature, looking at sunrise

Personally, I have always considered myself quite resilient. However, 2023 has really made me prove it. And, to be honest, it has been a very challenging year. That is why I figured that writing about it would be the best idea for my end-of-year article.

It’s Not Remote Work. Async Work Is the Real Paradigm Shift

The Covid pandemic forced many companies to unwillingly transition to remote work, thinking of it as a temporary necessity. However, at least in tech, remote work has become the new normal.

An image of the home office of a remote worker, where his mac laptop screen displays a Zoom meeting

But… Is switching to remote work just a matter of working from home and using Zoom? Simply replacing the physical meeting room in the office with a virtual one? Or is it deeper than that?

Genetic Algorithms Figuring Out Startup Life Choices

In late 2015, based on all the lessons learned from my startup experience, I decided to create a representation of the different choices startups encounter through their lives, as a map; and then assigned some values and scores to them, so that Genetic Algorithms could be used as a way to learn to navigate those choices.

Originally this was implemented as a dektop application, but I have recently built a web application to let users experiment with Genetic Startups. Here is a quick demo video:

Software Projects vs Software Products

As a developer, you work on software projects, right? …Or are they software products?

Like many others in the software industry, you might think those two concepts are synonyms; but they aren’t. In fact, whether the software being developed is considered a project or a product may have critical and non-trivial ramifications, in many aspects.

Team meeting in which multiple colleagues discuss in a table, where several computres are opened. One man moves hands displaying confusion

The not-so-subtle differences between software projects and software products actually have a huge impact on our behavior, both from a business as well as from an engineering perspective.

Everything ‘As-code’

If you are in the software industry, and specially if you are in the DevOps space, you are probably familiar with the concepts of “Infrastructure as code” and “Configuration as code”, which are very popular lately. But, what if that same idea could be applied to everything else in a software company? Aren’t documentation and training great candidates for becoming “as-code” as well?

Picture taken during the presentation at DWJW 2019. I'm showing the tech stack of the new CloudBees' training platform

During 2019 I’ve been intensively working on this idea at CloudBees University, along with my colleagues. Nowadays, for our training platform and courses everything is done “as code”.

Sounds interesting? Keep reading to learn more about it and/or watch the “Training As Code” talk my colleague Mark Waite and I delivered at DevOps World | Jenkins World in December 2019.

What Makes a Great Software Engineer

The software industry has been growing significantly for the last few decades, and this trend seems to only be accelerating.

Due to this fast growth, there has been an ever-increasing demand for software engineers and, since there are not enough developers to meet the demand, many companies often fail to cover their open positions. But, is it also possible that we are looking at the wrong skills when hiring?

Picture of a cofee mug with a question mug

Most job descriptions simply list a set of technologies as the necessary “profile” for the open position. However… Aren’t there other skills that could have a higher impact on developer’s success?

Are we looking at the right skills?

Continuous Integration, Delivery and Deployment: Key Differences

Continuous Integration, Continuous Delivery, and Continuous Deployment are key modern practices in software development. These techniques help us reduce integration problems, automate quality assessment and make deployments much more predictable and less error prone, allowing us to deploy easily and frequently. But… Do you really know the differences between the three?

Picture of a fork in the trail in a forest, leading to two alternative paths

The aim of this article is to help clarify what do these techniques mean and highlight the benefits each one provides. We will also analyze which one should be chosen depending on the circumstances.

The Programmer Bill of Rights, Revisited

10 years ago, Jeff Atwood wrote an article he titled The Programmer Bill of Rights. In that article he described 6 fundamentals that companies should provide for programmers to be successful and work to their full potential, thus maximizing their productivity.

Picture of a programmers desk with two monitors, one of them showing code

Sadly, ten years later, many companies still deny these basics to their developers, even though the business case for these six points is absolutely proved.

In this article, not only would I like to update the original 6 principles, providing further evidence of their importance; but also I would like to extend the list. Based on my experience during the last 10 years, I will propose 4 new fundamentals that I consider absolutelly necessary for the daily work of any programmer, developer or software engineer. Let’s get started: