Is Software engineering actually a thing?
Posted on May 9, 2018
It’s been a while since I did my last post. A lot of stuff has been going on – change of year, change of job, change of role. I now have the role of “Integration Architect” – and my contract says “Enterprise Architect”. In a world with no official titles, these things can be quite confusing. What is an architect? What is a software engineer? Is engineering different from being a developer? I don’t have the final answer, but I can provide my take on it.
In this context, I will try to see building software as building a house. It requires a lot of skills, but as with software, building houses also includes similar titles. There is architects, engineers, craftsmen etc.
When a customer wants a house or a building, they normally go to the architect. Along, they bring a lot of functional requirements – the size, number of bedrooms, maybe some ideas on how the house should look, but only roughly and maybe most important, the land that should contain the house. The architect will then look at the requirements and try to come up with a solution that solves the requirements but at the same time fits into the surroundings. The architect will also look at the non-functional requirements, such as plumbing, wires, heating etc.
This is quite equal to building software. The business requirements must be fulfilled in a way that it’s not colliding with the surrounding landscape and also fulfils non-functional requirements.
Once the basic drawings have been agreed with the customers, its time to specify the detailed building drawings. This is where architecture and engineering are overlapping. The architect calls an engineer who can do the calculations that will ensure that the house is not collapsing when the kids are playing soccer on the first floor. Sometimes this can be done by the architect, sometimes it will be done by a specialist.
For software development, it’s the same. Sometimes, we call an expert in a specific matter to verify assumptions in the architecture. But there is an important distinction between the engineer and the architect. The architect looks at both functional and non-functional requirements. The engineer is focusing strictly on the non-functional requirements.
This leads us to the actual construction of the house. This is where we call the craftsmen. They know how to join two pieces of wood. They know how to wire the house without it burning down. They know how to construct the roof so is not raining in. Again, this should be the same in the software industry. Call in the coders and have them construct the software. As with house building, the best result comes when the architect and the craftsman are in close cooperation. Sometimes the things that looked good on paper doesn’t work in real life. But the best result comes when the two groups are in mutual respect and understanding of each other’s strengths and weaknesses.
So what about the data scientist?
I compare them to the ones inventing new building materials. The ones creating a new solar roof, a new type of insulation etc. But usually, they do not apply the inventions in anything but prototypes and proof of concept.
Sometimes the craftsman invests something as well. After all, the craftsman is the one who has the hands in the dirt, so its only natural that the experience is resulting in new inventions and ways of doing things. This is again the same for developers, coders, craftsmen, architects, engineers, scientists etc. They are working in the same field, so its only natural that things are overlapping.
So is software engineering a thing?