At different points I’ve seen debates about whether software developers were engineers or scientists or even artisans. I’m sure there are times where software development should fit into the realm of artisanry or science, but I believe strongly that software used to operate a business should be developed with engineering principles in mind. Engineering principles are rules the drive the way problems are solved such us the use of patterns and frameworks to avoid reinvention or Keeping It Simple (KISS). In future posts I’m going to introduce the basic principles that I have followed, and that I expect startups that I mentor or invest in to follow.
To kick this off though I read an interesting article in the journal of the Association for Computing Machinery on the comparison between science and engineering approaches which I thought was well summarized in the table below: