3 ms·
One of the projects I was working on the database schema changed underneath of us, at best daily. More likely every several hours. Column names and types change
by soulnothing 10y ago
One of the projects I was working on the database schema changed underneath of us, at best daily. More likely every several hours. Column names and types changed. This led to a lot of runtime errors, due to type mismatch using python.
My team did a POC in scala, with slick. Compiling the ORM against the table metadata. The code written was reduced, errors were reduced. All was wonderful, with one exception. We had just become siloed.
Our company was largely python/django/celery. We had alot of intermingling between developers. Jumping around whenever there was spare bandwidth. While this change was worth it, from a technical perspective. Not so much from management and on boarding.
We had to write alot of additional code casting types, and verifying them. If I recall 80% of our code was cleaning up this database. A static expressive language alleviated alot of this. But when other developers jumped on board it was a massive context switch. They could learn, but to management. One to two months burned writing custom code, was better spent than retraining developers. I concurred in that instance with their rapid target release cycle. Comfort and knowledge of existing languages/tooling was paramount.
Languages are tools, and often we're not flying solo. We're working in a team. While a certain lib may be nice, or syntax set. The entire team needs to be understand that. If I'm able to write code twice as fast due to additional features. But everyone else takes twice as long due to context switch, and not knowing the feature. It's not worth it. As I've gone on I'm less concerned about one library or language feature. But the composite whole from tooling, devops, backend to frontend. What is the most cohesive picture. I definitely have languages I raise an eyebrow at like why are we using that.
When I led that team from the prior example. We alternated our Friday's. We had a two hour meeting. Two weeks of the month we did code katas. We picked a random esoteric language, everything from java to racket. We did basic exercises. Then stand up a quick API and web page. We reviewed the tooling, artifacting, was it more functional or object orientated. We looked at the language and tools. Said this is a pain point. But this is a really good point. How can we incorporate it into our workflow. Just working with an additional tool set, shows you how to use your current tools in new ways. Some people didn't have time to search outside of work. These code katas allowed a minimal amount of time, and vast exposure.