![]() ![]() #Git java fabled lands softwareThere's a long-standing trend of inflexible dogmatism that's pervasive in software development. This is a great example of dogmatism prevailing in this industry, and the resultant cargo cult programming. Often what seems trivial is not trivial at all. Now we're back to having a shared library of common functions, because it's well tested and it's easy to fix bugs by just upgrading. Since those functions/classes were copypasted over multiple codebases, now you had to contact owners of 30 repositories and coordinate bugfixing in all of them, which is slow and painful. Then it hit production and we found that under load/diverse user input many of those trivial functions were quite buggy or inefficient with edge cases. #Git java fabled lands codeSo every team simply was borrowing code snippets from other microservices' codebases without creating a common shared library, because those snippets were "trivial". Initially we followed Go's idiom "a little copying is better than a little dependency". ![]() ![]() We have around 30 microservices written in Go, each one one of them living in their own repository (separate codebases owned by different teams). >You realize that it was so trivial that there was no need for a library in the first place The post was about minimalism in programming languages, but the author had another, more general post. However, minimalism requires some extra effort to achieve, and that's the whole point of engineering. There's no "proper" way other than the most minimalist one, period. It still amazes me how minimalism is not the norm, is not taught as the only way you should solve problems in software engineering. I liked the post about minimaism the other day here on HN. You realize that it was so trivial that there was no need for a library in the first place. 90% is arbitrary but from my experience every time I look for some solution let's say for some GUI effect on iOS, find a library or a framework, take the source, analyze it, start simplifying it and I end up with a version that is orders of magnitude shorter and can be just copied into my project it's so trivial. In fact probably some 90% of so called library code on GitHub is overenginnered crap. I thought at the time this industry is screwed if this is the norm. It struck me how someone can overengineer a solution to the simplest problem and be proud of it. I was ridiculed right there, for not solving the problem "properly". ![]() I showed them a two-line solution with a single function (where you'd try hard to make a mistake) and nobody liked it. One guy presented the most monstrous solution with 100+ lines of code where you could individually assign the coefficients, individually modify them, trigger recalculation, get the number of roots, get the roots. Asking to create a library itself was a trap of course.Įverybody came up with some solver classes in Java, some stateful, some stateless. I asked them to create a library for solving quadratic equations. I once, a long time ago, had a similar argument (somewhere online) with a bunch of Java coders. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |