Blog @romenrg

Thoughts and experiences; about Software, Internet and Entrepreneurship.

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:

Why Asking Software Developers for Time Estimates Is a Terrible Idea and How to Bypass It

I have worked in many software projects and have been lucky to be in the initial team of several software products. Besides, having acted both as a Developer and as a Product Manager has allowed me to have a wider view of what usually causes most friction between business and engineering: time estimates.

Picture of a woman pointing to her watch as if you were late. Typical management or customer reaction to delayed software projects

It usually starts with managers or customers asking “when will <this idea> be ready?” and it is usually followed by developers racking their brains to give a specific date… Needless to say, that date is likely to be dreadfully wrong, as it is the norm in the industry. There is a near-total inability of developers to predict how long a project will take, so time estimates are usually worthless.

However, applying Scrum along with some XP practices we can avoid the uncomfortable tension of asking developers for time estimates. Instead, we can calculate release dates automatically, getting infinitely more accurate time estimates, while saving all the arguments and keeping team morale high. How? Keep reading!

10+1 Valuable Lessons I Learned From My Failed Startup

…That I will take into account for the next one.

Being the Founder and CEO of Vocabulary Notebook for more than 2 years (from September, 2012 to January 2015) was one of the most intense, enriching, stressful and exciting experiences I have ever lived.

Picture of a man using a writing machine and smoking with a pipe

During this period I went from doing some mockups alone at home and printing them in paper to use them as low fidelity MVPs for customer discovery; to close a seed funding round, found a company, build a multiplatform product, build a team of 12 people, receive several awards, participate as speaker in 3 international events, get 30 000 users in more than 130 countries, register a trademark, conduct scientific research on our product and collaborate with schools and universities from 4 different countries… As I said before, it was intense!

Sadly, two years after the beginning of this adventure we had not been able to reach the break-even point yet, we had a cost structure that we were not able to maintain and we didn’t manage to close another funding round to keep us going (to keep improving the product, launching marketing campaigns, validating new hypotheses, pivoting and improving our business model…). So, by last summer we had to start progressively reducing our cost structure, until we had no option other than shutting our startup down completely.

However, during this amazing period I learned very valuable lessons, some of which I am going to share with you now, if you keep reading:

Why Copywriting Is Key to UX: We Increased Conversions by 26% Just Changing Some Text

Too often people tend to think that UX is just art: Flat design, Modern UI and animations… But art represents only a tiny part of the User Experience. Some developers go one step further and think that it also implies strong technical skills (to achieve a good performance, proper-functioning software, etc). However, that is still a very narrow perspective of User / Customer Experience.

Picture of a man using a writing machine and smoking with a pipe

Some of us have realized that UX is not just how beautiful our product looks or how amazing its performance is. There are several other fields that are crucial when trying to achieve a great experience for our users, as you will see in this post. And if I had to choose just one field that is definitely key to UX, it would be Psychology.

Linking UX and Conversions by Means of Analytics and A/B Tests

Thanks to my experience as Entrepreneur and Product Manager, I realized long ago about something that is totally counterintuitive for many other software engineers. This realization is that, when developing a software product, our main focus should always be sales. Always. Sales. I know that probably too many people have said that already, but it is so true that it is worth saying it once more, specially for my software mates: “when developing a software product our main focus should always be sales”.

However, that statement is too generic. Most people already know that selling is important… But how can we sell more? Well, experience tells me that in order to increase sales, the first thing you will probably need are many more visits (and getting those visits is way more complicated than it seems). However, that is only the beginning. Once you get enough visits and you validate most of your product main hypotheses, the next step is converting most of those visits into customers. Here is where both User Experience and KPIs (Key Performance Indicators) become probably the most important areas for product management.

Vocabulary Notebook: From Idea to Reality in One Year

The 8th of September 2012 I started to work intensively in an idea I called Vocabulary Notebook. With that idea I was planning to solve a problem that myself and many other english students experience while learning vocabulary. It has already been a year since then and that idea is now a real platform used by thousands of students and teachers around the world. I must say that I’m quite proud of what we have achieved during this year, both as an entrepreneur and as an engineer. Although I don’t have much free time now, I have forced myself to write this post to summarize what has happened around Vocabulary Notebook during this year, from idea to reality. Since there are so many things that have happened, I’m afraid this post is going to be quite long, but I think that the anniversary deserves it.

In this image we can see the different components of Vocabulary Notebook. The full platform includes Android, iOS and Web Apps both for students and for teachers.

About UX in Modern Web Interfaces and Backbone.js: Choropleth Maps

I would like to start this post anouncing that this month I am leaving Arte Consultores Tecnológicos, after one year and seven months working there as an Analyst/Programmer (Front-end Engineer). I have made this decision because right now I need to devote myself exclusively to Langproving, which is in need of my full atention at this critical moment in which our MPV is finished and we have to market it to validate our business model.

In this period of time working at Arte Consultores, I have improved significantly as an engineer. I have learnt a lot. Fortunately, I have had the great pleasure to work closely with my workmate and friend Axel Hernández, who I admire for his ability to constantly learn new technologies and for being always aware of all the new trends in software development. I’m proud to say that I have learned a lot from him. I would like to think — actually, I hope — that he has also learned something from me too while we have been working together.

One of the most valuable things I learned working at Arte was related to writing modern and usable web interfaces, not only with CSS3 animations or HTML5 new attributes and tags; but also with Javascript. In the last few years Javascript has grown up and become one of the keys of the evolution of the web. Many Javascript frameworks have emerged, ranging from those regarding DOM manipulation (jQuery) to others built to reproduce the model-view-controller (MVC) pattern in the client side, such as Backbone.js. For more than a year I have been using Backbone to create Single-page applications that provide a quick response to user interaction, without the need to re-render the full page from the server as we were used to; thus improving sifnificantly the user experience (UX).