So you are wondering what this blog is about. What is that thing called “evidence-based practice” that is supposed to be useful for me (a software engineer)? You do not know, eh?
Unfortunately, this is true for the vast majority of professionals in our area. For us, the role responsible for indicating which technology1 we should be using in our projects is denominated software evangelist. Yes, it is a matter of faith when or what software development technology we should be using.
At this point, you are probably thinking: “I do not follow these guys! Who still follow them?”. Ok, it is my perception too that their influence is declining. However, the presence of “gurus” is still pervasive. Conferences are full of specialists and experts with a vast repertoire of practices and a broad variety of tools ready to be applied in software projects. As one can see, this ranges from the softer parts of software development, such as process and practices, to the harder side of tools and frameworks. Take the Agile Software Development as an example. It was proposed by a bunch of guys telling us how software should be developed. At least, they were indeed clever and knowledgeable, and experience can be considered a kind of (weak) evidence. We will discuss what should be considered evidence in a minute. In the tools and frameworks arena, the problem is the same. Who needs yet another javascript (or any other language) framework2?
One interesting analogy used to illustrate the current situation in our industry is the “fashion-driven development”3. The idea is that if you are not using the very latest practice, technique, framework, or tool, then you are wrong (to put in simple terms). Again, this translates the reality of several conference talks, blog posts, podcasts — you name it. One thing that particularly annoys me is how frameworks are described. Here are a few (I omit the names to test your memory, I’m pretty sure that you are going to remember some of them): “the web framework for perfectionists with deadlines”; “…is a powerful web framework, for the Java platform aimed at multiplying developers’ productivity”; “A framework for creating ambitious web applications”; “The PHP Framework For Web Artisans”. Well, you got the idea.
In summary, most software development technologies are created (and adopted) without any kind of evidence of its usefulness (and usability4).
But what is evidence? If you thought about the answer it is as simple as what you may have thought: “one or more reasons for believing that something is or is not true”5. I have to add to that definition that the reasons must be factual (not theoretical). That is why I said experience is a kind of evidence, but a weak one. I’ll leave the discussion for why it is weak for another post, but it is essentially related to bias.
Regardless of its simplicity, the notion of evidence is virtually completely ignored in our area. Why this happens and how we can change this is precisely the topic of this blog. To address this theme I will provide you with evidence about contemporary technologies. I’m pretty sure that most of them will surprise you (did you know that TDD is not really better than manual testing?6). It is also my intention to propose (simple) means by which evidence can be used in and generated from our practice. Doesn’t this make me another guru?! Sure, but I’ll provide evidence for what will be proposed here. Still, interestingly enough, providing evidence for the evidence-based practice is a philosophical discussion.
Why the notion of evidence is ignored in our area and how we can change this is precisely the topic of this blog.
Currently, the discourse regarding the evidence-based practice is mostly confined to academics. I’m “partly” one of them, but before you turn your nose up7 at this blog, I should mention that my utmost goal is to change this chasm between professionals and researchers. I’ll try to turn you a little more scientist in the same way I argue with my colleagues that all in software engineering must be application oriented8. In addition, I should also mention that I’m a professional software developer myself (mostly a backend developer in Java and C#). I’ve just left my last job at a big oil and gas company here in Brazil to dedicate myself to this blog and other related initiatives. I hope to talk about them soon.
-
I refer to software technology as any practice, tool, technique, process, method, or methodology related to software construction. ↩
-
a.k.a. Yet Another Framework Syndrome (YAFS). ↩
-
I’m pretty sure that I’ve read/heard this on several other occasions, but I did not keep the sources. Still, in a quick search I was able to find these two discussions (here!!!! and here). ↩
-
I use the term usability since it is most acknowledged, but I prefer the more broad notion of ergonomics. ↩
-
From Cambridge dictionary. ↩
-
The Effects of Test-Driven Development on External Quality and Productivity: A Meta-Analysis ↩
-
Yes, I know that research in software engineering does not have credibility among software developers. ↩
-
In fact, the need for “application oriented” research is not mine, it is a quote from Dieter Rombach. ↩