Three Reasons Why Your Software Is So Far Behind Schedule
Yes. Many times yes.
However, to give a more detailed answer and one issue…
The first reason is true. Technical debt can be measured in onboarding time. If you don’t have an up-to-date set of documentation describing how to get up and running and your system requires lots of extra twiddling and fiddling around, then you have a lot of technical debt. When you do onboard a new developer, make sure they fix some of that and simplify the process further. By the time you get to onboard employee M + N you should have less onboarding time and less technical debt.
As the article points out, if Facebook with so many complex systems and many projects can allow for real useful code to be deployed within a day, your less complex system with 1/100th of the servers and complexity should take a few hours to be setup and allow you to deploy useful code.
With respect to the second reason I agree that you should know what you’re testing and why, elaborate test suites indicate that you’re testing the wrong thing or your tests are brittle. For example, I had to write unit tests that mocked out 3 dependencies and had methods called “add” and “remove”. Guess what I was testing? That’s right, whether the class would add or remove the object to an array/list/some other data structure. It didn’t require any special business logic or require elaborate rules and conditionals, it was a straight addition or removal. My test was essential the same as a unit test for a linked list or array data structure’s insert/push/append/delete methods. Those kinds of tests can be safely removed.
The third reason I’m iffy on. On the one hand, yes it makes sense to use AWS or Google App Engine or some other cloud service. On the other hand, those can be expensive and sometimes there are laws in your country that require keeping data within the country. That leaves three options: expensive local cloud server, private servers (VPS or co-located), private cloud. In Canada our web hosting services are always more expensive, same with our domain registration. Both private co-located servers and a private cloud require maintenance and/or lots of cash. Some Canadian companies aren’t limited and can use AWS or Google App Engine…but they end up not using it to the maximum ability because the company introduces some other limitations that defeat the purpose of using cloud-based hosting such as not designing the architecture to be scalable to take advantage of the cloud. You can see this in consulting and contracting firms where every single project requires a separate server as if the client you’re working for can’t envision their website growing exponentially…how depressing.