Jugaad takes agile to the extreme (2020)
blog.georgovassilis.com
blog.georgovassilis.com
I recognize that jugaad solutions are usually not what people necessarily want to resort to, but are frequently adopted because of lack of viable alternatives. In such situations, more power to us / them! I'd call that being resourceful though. Aspiring to arrive to the jugaad solution to problems when better ways of doing it are within reach though, that's where I draw the line.
Maybe it takes an outsider's view to appreciate jugaad. I certainly didn't on my first encounter.
> no adherence or even ambition to achieving excellence and craftsmanship
I agree - jugaad isn't the place for planned evolution, so skills that transcend the immediate needs for delivery never form.
> Aspiring to arrive to the jugaad solution to problems when better ways of doing it are within reach though, that's where I draw the line.
I think that most developers in India aren't even aware of the jugaad methodology, it's just the way things are done. When I was first exposed to jugaad I mistook it for sloppiness, but it turned out that both deliverables and the organisational setup itself is extremely anti-fragile: it's always easy to add or remove a part, although refactoring is hard.
When designing a system or writing code, my instinct is to write it in a way that makes it clear, easy to work with and change down the road, because Ive seen code that is not structured this way and working with it is hell. I consider myself somewhat lucky to have worked in teams that allow for this.
If however I wasn’t fortunate enough, or just not paid enough even, or the work culture didn’t exist or was purely transactional, I would likely change my approach to fit that situation.
This criticism can be raised against Agile as well, but I think this attitude ultimately comes from utilitarian (or MBA) perspective, which puts monetary profits above human or engineering excellence.
that is exactly my major gripe with TDD style development. It just seems too /incremental/ and smacks of prioritising getting /specific/ features done, rather than finding the best overall design. with this tactical style development, it is quite easy to end up with a mess.
A good video on this concept: https://www.youtube.com/watch?v=1pSH8kElmM4
There are class connotations. Jugaad is something forced onto people by poverty. It's hallmark is messy, janky and easily breakable setups that have been cobbled together by both necessity and lack of resources. Wealthier Indians would not turn to a "jugaad" solution for their needs.
While the principles in the post (humility, openness, frugality) jive well with the Agile philosphy, I'm not so sure that "jugaad" is the idea I'd want my software to embody.
'Move fast and break things' is the high-class version IMO.
There's nothing special about "Jugaad". It's same as white trash repair. All societies where resources are limited have some form of "Jugaad".
Squatter's solution. A camping fix.
One could say Zen and the Art of Motorcycle Maintenance gives it a little more cachet.
One thing people all over the world have in common is that our ancestors were dirt poor not very long ago, so I would expect this concept to be universal.
I'm also not a fan of it being glorified because a) it shows how often there are systemic problems in India that force you to resort to "jugaad" to get stuff done and b) culturally, we tend to stick with "good enough" jugaad options instead of aspiring towards higher-quality products and solutions.
Jugaad seems to have more of a connotation of not doing things properly, rather than embedding options. Very different things!
The second 'R' is used in jugaad here (जुगाड़), and it means to "cobble together" or "makeshift," which exacty what it is: makeshift, hastily cobbled together work done to get the weight off one's shoulder as soon as possible. It can also simply mean "collect" or "collection", but it means the above in this context.
Edit: There is another 'R' (ढ़) which is pronounced like a (ड़) with an additional 'h'.
Personally, I'm not a Jugaad person. I won't suggest glorifying or encouraging Jugaad in any way except to get things started but a parallel plan to move back to normalcy/excellency should be in the work as soon as it starts.
Too many a things have failed in India because it was Jugaad-ed for too long. Jugaad is an Indian thing and we love it for various reasons. https://en.wikipedia.org/wiki/Jugaad
Edit/Update: I kinda usually narrates to the team I work with to -- experiment and jugaad like the Indians, have the discipline of the Japanese, and the finesse to deliver like the Germans.
No cultural misappropriations intended and I'm still working on making that better with more cultures inclusion.
EDIT: the rest of your comment is ok, just drop the last bit.
I don't think there is a way to edit comments after a while. I saw this thread after I went away from my HN's burst activities.
It is unnecessarily fantasized into a positive light.
Startup culture may be described this way but the context is completely different and vision as well.
Jugaad, an Indian Delivery Methodology - https://news.ycombinator.com/item?id=24459888 - Sept 2020 (63 comments)
"Jugaad" is hard to translate: it's usually associated with hacking up a cheap replacement for something expensive. Roughly translates to "we'll manage something."
Some examples:
1. A fruitpicker made out of a 2 litre plastic bottle whose base has been cut to form a claw.
2. A mobile water dispenser made from a can mounted on a trolley, with a tap operated using a bicycle cable.
Which is, I think, an excellent reminder to not be dogmatic about software delivery. Many projects never start (and hence much value isn't generated) because of theoretical disputes about how/how much/what analysis should pretext development, which development style and which tools and frameworks should be used.
Things like people not using version control but creating lots of "bak" and "copy" files. Using tools from hacking boards on your own software because we don't bother making a proper build. Unit tests are seen as a waste of time. API design is seen as an academic luxury.
I mean, I am all for agile. And for building MVPs without unneccessary abstractions and fluff. And heroic hacks that save the day. But "good enough" or "duct tape" should never become your main development methodology.
I am very doubtful if the said properties of "jugaad" in this article are correct. I don't see any references that establish the meaning of "jugaad" for us! Right now we just have to take the author's word for it.
Maybe someone from India here can correct me but if I see Wikipedia "jugaad" seems to be the Indian version of "hack". A hack can sometimes be good but I know for sure a whole working product real people rely on should not be made out of hacks (no matter how much frugality it brings to innovation).
I am getting really worried now that in another 5 years we are going to have "jugaad consultants" and "jugaad certifications" telling us how to develop software. Sounds far-fetched? Think again! 20 years back I would have never imagined in my wildest dreams that there would be such creatures as "agile consultants" telling us to play "planning poker" and assign fibonacci numbers to our "stories"!
* Humility - yes it works now * Openness - let's rewrite everyrhing now from scratch * Frugality - rewriting is far from small expense
I can't 100% vouch for causality - as I said, the skill differences between the average developer in some of these orgs are immense, but it says something to me that all the more talented companies I've worked in tended not to go down the "fast and hacky is fine if you iterate" path.
You can't expect a "modern web" app to survive this long. Chances are it will become unbuildable (because of the dependency hell) much faster.
And then nothing works because of the combinatoric explosion and very low average quality of a library.
Then it takes a team of 20 to maintain a relatively simple project which manages to employ spring, guice, akka, cats and zio at the same time. Then the business closes because the funding is exhausted, product is too unstable and demands are not met.
We prefer to choose the libraries wise.
one lazy is just coping pasting stuff. other is drying as you go. i have already written this line, why am i reapting it again. let me dry it. extract it, so next time i need not. no two lines in my code should match. if they do extract. i am lazy here. cause i don't want to copy paste next time. i am lazy and will just dry. second lazy is more what lazy means.