Many instances, and in some cases it was more like months or even years.
One large government department struggles to hire skilled application architects, because they can only pay public service rates in a highly competitive market. The only hires they can get are 6 month contracts for relatively inexperienced architects who use the job to pad out their resume and then immediately move on to private industry. To make their resumes look good, they throw the kitchen sink at every design.
A recent project was a simple web app that's an extension to an existing web app. It implements trivial things such as adding sign-in to an otherwise static site, some email notifications, mobile push, reporting, and the like. Nothing fancy.
They were a couple of months into development, and they already had:
- Multiple web apps
- Multiple API apps
- A "mid-tier" behind the above
- Dozens of lambdas/functions
- Logic apps and workflow apps
- Multiple databases
- Multiple Kubernetes clusters despite most of the above running on a different PaaS platform already.
- ETL jobs for copying data between databases that can directly access each other.
- All of the above stretched across both Azure and AWS, just for funsies.
Etc...
It looks really impressive on a high level architecture diagram! Fantastic in a resume.
But it's a ton of work for a developer to implement, and achieves nothing. Microservices and lambdas/functions have their place, but not for a single-person web dev project!
Throwing out 90% of the "moving parts" from the design probably saved a year or two all by itself.
Then I started demonstrating how to use storage emulators for local development, how to manage dev/tst/uat/prd configurations, how to get logs and debug dumps from the PaaS environments in the cloud, etc...
That workflow stuff alone would save weeks or months, easily.
All this took was just a couple of hours of chatting.
Another meeting was less than an hour, and while the guy was scrolling through his code I yelled "Stop!" because I saw a reference to a low-level cryptography primitive. He had started trying to implement authentication and authorisation "from the ground up". I suggested using a popular JWT library instead.
Just showing a developer how to use an APM tool like Application Insights or New Relic can cut weeks off the troubleshooting time over the lifetime of a project.
jiggawatts|3 years ago
One large government department struggles to hire skilled application architects, because they can only pay public service rates in a highly competitive market. The only hires they can get are 6 month contracts for relatively inexperienced architects who use the job to pad out their resume and then immediately move on to private industry. To make their resumes look good, they throw the kitchen sink at every design.
A recent project was a simple web app that's an extension to an existing web app. It implements trivial things such as adding sign-in to an otherwise static site, some email notifications, mobile push, reporting, and the like. Nothing fancy.
They were a couple of months into development, and they already had:
- Multiple web apps
- Multiple API apps
- A "mid-tier" behind the above
- Dozens of lambdas/functions
- Logic apps and workflow apps
- Multiple databases
- Multiple Kubernetes clusters despite most of the above running on a different PaaS platform already.
- ETL jobs for copying data between databases that can directly access each other.
- All of the above stretched across both Azure and AWS, just for funsies.
Etc...
It looks really impressive on a high level architecture diagram! Fantastic in a resume.
But it's a ton of work for a developer to implement, and achieves nothing. Microservices and lambdas/functions have their place, but not for a single-person web dev project!
Throwing out 90% of the "moving parts" from the design probably saved a year or two all by itself.
Then I started demonstrating how to use storage emulators for local development, how to manage dev/tst/uat/prd configurations, how to get logs and debug dumps from the PaaS environments in the cloud, etc...
That workflow stuff alone would save weeks or months, easily.
All this took was just a couple of hours of chatting.
Another meeting was less than an hour, and while the guy was scrolling through his code I yelled "Stop!" because I saw a reference to a low-level cryptography primitive. He had started trying to implement authentication and authorisation "from the ground up". I suggested using a popular JWT library instead.
Just showing a developer how to use an APM tool like Application Insights or New Relic can cut weeks off the troubleshooting time over the lifetime of a project.