Rootstrap Blog

Correlation is not causation

Why the confusion of these concepts has profound implications, from healthcare to business management

In correlated data, a pair of variables are related in that one thing is likely to change when the other does. This relationship might lead us to assume that a change to one thing causes the change in the other. This article clarifies that kind of faulty thinking by explaining correlation, causation, and the bias that often lumps the two together.
The human brain simplifies incoming information, so we can make sense of it. Our brains often do that by making assumptions about things based on slight relationships, or bias. But that thinking process isn’t foolproof. An example is when we mistake correlation for causation. Bias can make us conclude that one thing must cause another if both change in the same way at the same time. This article clears up the misconception that correlation equals causation by exploring both of those subjects and the human brain’s tendency toward bias.

Continue Reading

Monolithic versus microservices, and all in between

Developers often decide whether to build monolithic or microservices architectures based on personal preference. This article tells you how to design the best platform for your client by considering both methods.

Monolithic all-connected platforms might serve a startup’s needs, but they often have problems with scaling to support growth. Architectures built with modular microservices work well for bigger enterprises, but they might be overengineered to require more resources than a startup can spare. This article explains how to incorporate both these build approaches to design a functional strategy from the start that evolves to fit each point in a project’s lifecycle.

Continue Reading

Data Demystified — Machine Learning

A bird-eye view of the machine learning landscape.

The main goal of this article is to cover the most important concepts of machine learning, and lay-out the landscape. The reader will have the vision to understand what kind of solution matches a specific kind of problem, and should be able to find more specific knowledge after diving into a real-life project.

I’ll start with a 60 years old definition, but still valid today:

The name is pretty self-explanatory, and the definition reinforces the same concept.

Continue Reading

The worst way to choose your development team

You might be tempted to select a dev team whose experience is the closest match to your project. This article tells you why that’s a bad idea and how to make the best choice.

There’s more to cutting-edge software developers than just prior work on a similar project. In fact, matching experience is the least important thing to look for. Agile processes, deep technical knowledge and skills, and verified success are the real indicators of a cutting-edge development team. This article explains the most important qualifications to look for and how to find a dev team that has what it takes to create not just a specific product but a lasting solution.

Continue Reading

If you postpone technical debt it’ll bite you

Even If it is not yours.

Back in 2013, an agency hired our company to create a game for Microsoft. They’d showcase their new and shiny Surface tablet and use the game in conferences around the US, like the big San Diego Comic-Con International event.

Our client said, “The backend is done. We only want you guys to build a 3D UI with WebGL.” It was a complex multiplayer game. We worked hard for months and created an outstanding game UI with state-of-the-art technology.

Continue Reading

DevOps — are your servers pets, cows or ants?

Evolving software platforms and their service needs can be compared to three types of animals that have increasing levels of autonomy and self-care.

The software platforms you create need a level of effort from you that changes as they become more complex. If you follow the agile process and make them increasingly automated, your platforms require less work as they evolve from one server, to many, to a server farm. To create a broad, relatable picture of what that changing effort looks like, this article compares the needs of each platform development level to three types of animals: pets, cows, and ant colonies.

Continue Reading

Build and grow cross-company knowledge

Culture is the way a company does things, its processes and values, and how it generates outcomes. It’s never easy to build, share, and promote knowledge across a medium-sized organization. That task requires leadership, rules, a strong culture, and having effective systems in place.

I’ve always been passionate about how knowledge sharing has a multiplier effect on the quality of what each person can deliver. I’ve seen junior developers, after a just few weeks, deliver higher quality work than what I could have produced years ago — even in a nonchallenging environment and even after years of experience.

Continue Reading

Ruby doesn’t scale

Why you should stop blaming a programming language for your low quality work.

I’ve heard too many times that Ruby on Rails (also called RoR) doesn’t scale. Guess what? Java doesn’t scale, .NET doesn’t scale, PHP doesn’t scale, and Node.js doesn’t scale. No programming language scales if you build terrible software with it.

In this article, I focus on Ruby, but the information is valid for almost any programming language. If you typically benchmark Ruby against other languages like Python or C++, it’s probably slower in most contexts.

The real question is not how long it takes or how many resources it consumes to run some algorithms like regex redux, binary tree searches, or reading DNA sequences.

Continue Reading

Improve data quality by using the pandas library and Python

Data quality is a broad concept with multiple dimensions. I detail that information in another introductory article. This tutorial explores a real-life example. We identify what we want to improve, create the code to achieve our goals, and wrap up with some comments about things that can happen in real-life situations. To follow along, you need a basic understanding of Python.

Python Data Analysis Library (pandas) is an open-source, BSD-licensed library that provides high-performance, easy-to-use data structures and data analysis tools for the Python programming language.

You can install pandas by entering this code in a command line: python3 -m pip install — upgrade pandas.

Continue Reading

Software development is agile, not transactional

The dangers of considering software development as a transactional and commoditized business.

In today’s world, we usually exchange money for solid, tangible goods or well-defined services. That’s how material transactions work. As an example, we might buy a t-shirt for $50. That means you give someone $50, and they immediately give you the t-shirt. Or you pay a plumber $15 and hour. Then the plumber spends some time fixing your leak. In this case, there’s a high level of certainty that the problem will be solved.

Continue Reading