Before becoming a developer, I was a science nerd loving all things chemistry. I later transitioned into forensic chemistry to pursue a career as a drug chemist, dreaming of a job in the FBI or DEA. After spending a few years in research labs, I decided to trade in my lab coat and goggles and pursue web development. When people learn about my career change, they seem to be very surprised. They tell me “what a big change” it is and how it must be “so different” coming from a science background. But if you think about it, coding is still very much a science.
While most would place coding and software development under technology and engineering, it doesn’t make coding any less scientific. Technology and engineering are, after all, the application of science to real world problems. The general scientific principles and processes I followed in the lab are still in some ways a big part of my everyday coding and development experience.
To get a better idea of what I mean, let’s take a look at the main steps of the scientific method and how they relate to the world of web development.
1. Observation / Identify A Problem
Every research project starts with a question based on an observation or known problem. Whether it’s wanting to find out what brand of batteries lasts the longest or trying to improve a lab procedure, the projects you take on are fueled by the need to address a problem. Otherwise, why are we doing it to begin with? The same can be said about web and software development.
As developers, we don’t always start hacking away and building an app just because it’s fun (though we often do, and it totally is!). The products we build are built with purpose. Clients come to us because they have a real problem that needs our attention. Sometimes it’s helping a business create or improve its online presence to increase sales, other times it may involve overhauling antiquated management systems to make company operations faster and more efficient. Before we take on a project, we need to ask ourselves if and why it’s needed, what impact can it make?
Solutions don’t emerge out of thin air. If we want to find a solution to the problems we have identified, we have to make sure we fully understand the task at hand. In a traditional lab setting, this might entail sitting down for a few days to read through peer reviewed journal articles. You shouldn’t blindly start working until after you have a good grasp of what has been done or attempted in the past. The research process is important for the success of any project.
In terms of web development, I would say research is analogous to our product discovery process. We have to do our part and investigate why the problem exists. We run in-depth discovery workshops and set up interviews in an effort to understand why there is a need for the product and what approach we can and should take moving forward.
A hypothesis is an educated guess that attempts to provide an explanation or solution to the identified problem. I would say a hypothesis can be compared to the developer’s choice of technologies. Based on the product discovery findings and prior experience, we can decide what technologies are best suited for a project. Is it better off as a Rails app? Will React provide a better user experience for the features we are trying to implement? These decisions are made early in the development process, allowing us to form a plan of action. Hypothesizing remains an active part of our daily coding routine as we try to figure out why our code may be failing and what actions we should take to fix it.
This is where the fun truly begins! At this point you have an initial plan of action and can begin to prep materials, run trials, and collect data. For a developer, this means you can actually start to code! We pull out our noise cancelling headphones, hit the keyboard, and build the features the team has been talking about for weeks.
I think experimentation in coding is best represented by the iterative development process. Products are not built in one go, but delivered in phases. There is a cyclic process where we write feature code, test it on multiple environments, take note of errors and bugs, make necessary changes, and deliver a version of the working product to the client. As we learn more about product requirements and receive client feedback, previously implemented features can be revisited and reimagined in order to improve code and overall product quality.
Of course, the steps of the scientific method don’t have to happen in a certain order. I think the experimentation phase can actually start much sooner for a developer. At LaunchPad Lab, side projects are big part of our culture. They allow us to try out new technologies and discover things that may be a great addition to future client projects. The knowledge we gain through this form of experimentation helps us become more well rounded developers and build better products.
Experiments yields results, which are analyzed to determine if the initial hypothesis holds true. It is not uncommon to find that our hypothesis was off, which starts the revision and experimentation cycle.
Analysis is very much part of the iterative development process. We might think we chose the best approach to implement a feature, but bugs are popping up, so we rewrite and re-test parts of our code. Or maybe the app is working as intended, but our queries are not the most efficient and are slowing down the app. Analysis requires developers to constantly rethink their choices and refactor code until they find a solution that solves the issue in a performant, efficient and flexible way.
6. Draw Conclusions
The end is near! Experiments are done and data has been analyzed, allowing us to evaluate the overall experience and communicate our findings to our peers. In web and software development, I would equate this phase to a product launch.
Furthermore, at the end of a project, teams learn a lot and gain a new perspective about the development and product business as a whole. In addition to launching a product, we may have also come across new best practices to implement. We discuss the challenges we faced and how we can better address those issues in future projects. Scientist or developer, the conclusion drawing process provides the community with knowledge to inform and simplify future endeavors.
Coding Is A Science
Though there are indeed some differences, traditional scientists and developers follow similar principles and approach their work with the same goals in mind: To observe your surroundings, follow your curiosity, and discover solutions to real life problems. Those are the true goals of a scientific discipline, coding included.