DEV Community

Cover image for The McDonalds Software Development Process
Thomas Hansen
Thomas Hansen

Posted on

The McDonalds Software Development Process

In Yountville Napa Valley there's a restaurant called "The French Laundry". It's got a Michelin star, and you'll need to order a table 6 weeks before you can eat. It takes you 45 minutes to get there by car from Napa, and 2 hours from San Francisco. Once you finally arrive, you'll probably have to wait for an hour to get served. It's probably amazing food, I wouldn't know, I've never been there - I simply don't have time for such things ^_^

The French Laundry

At the other end of the spectrum is McDonalds. You're never more than a couple of kilometres away, as you enter you get your burger in 10 seconds, and the only questions you're asked is; "Will you have fries with your burger today Sir?"

Ronald McDonald

How McDonalds inspired our Software Development

Hyperlambda and Magic is like McDonalds, while traditional software development is like The French Laundry. Basically, do you want to wait for 24 months while 6 expensive developers creates some amazing piece of software that does everything you can imagine, or do you want it in some few seconds. For the record, those 6 devs have a cost of 7,000 EUROs per month each, implying a total cost of ownership of slightly north of 1 million EUROs, while the Hyperlambda developer can deliver the same for the price of a quarter pounder. Interestingly, the "quarter pounder software developer" probably makes more per hour than the devs in the other project ...

Entire continents could starve to death while waiting for a freakin' Broccoli from the French Laundry, while McDonalds are serving billions of people every single year! Talk about 2 bread and 5 fish story ^_^

The French Laundry probably has some 500,000 dollars in profit in a good year, McDonalds are making a bajillion dollars per hour. If I told you you could have one of these companies, which would you choose? To put that into context please realise that the owner of the French Laundry probably can't even afford to eat there himself ^_^

I assume he is welcome at McDonalds though ... ;)

Art and software development

Did you know that Leonardo DaVinci spent 13 years on Mona Lisa? He couldn't even finish her before he died, which is why her left hand is so messy. No wonder she's so depressing ...

Mona Lisa

If you pulled a gun to my head, gave me Mona Lisa free of charge, and forced me to hang her up on my wall, I'd be like; "No thx bro, I'm good". If you offered me Andy Warhol's Marilyn Monroe though, I'd be like YES!

Marilyn Monroe

Andy spent 2 minutes on Marilyn Monroe, probably used a Xerox copy machine. DaVinci spent 13 years on Mona Lisa, and couldn't even finish her. As far as I'm concerned, there has to be something wrong with you if you prefer Mona Lisa and not Marilyn Monroe. As to whether or not Andy preferred burgers or the French Laundry, I'll let one of his art collections speak for itself ^_^

OK, what's the context to software development?

We've got a software development platform, although referring to it as a "software development platform" is probably like referring to Andy's Xerox copy machine as a "paintbrush", and I hate using that word myself, because every time I tell people it's a software development platform, they immediately respond; "Let me get my best software developer and ask him about his opinion about your platform". At which point I can already see his bajillion objections towards our stuff.

Fundamentally though, the difference between our software development platform is the same as the difference between The French Laundry and McDonalds, or Mona Lisa and Marilyn Monroe. But of course, if you had shown DaVinci Marilyn, he'd probably laugh you out of the room, even though her price tag today is almost as much as his own Mona Lisa, implying Marilyn Monroe has increased in value roughly 12 times faster than Mona Lisa ... ;)

BTW, we're about to franchise our stuff in case you're interested - If so, please contact us at info@aista.com. That plus some fries will give you about all the "French" you can handle with your food I presume ... ;)

Discussion (31)

Collapse
aktentasche profile image
Jonas Manthey

You really think 6 developers need 2 years to create a CRUD interface?

Collapse
polterguy profile image
Thomas Hansen Author

I worked with a super skilled software developer some time back ago. Objectively he was much better than me. He knew all the fancy design patterns, had 10 years of experience with DDD, and could talk for hours about Sagas and micro service design patterns. I was his project lead and I gave him the task of creating a registration form. The task was easy.

  1. Create an HTTP user registration endpoint
  2. Send the user an email when registering

4.5 months later I had 25+ projects, thousands of lines of code, ScyllaDB, Pulsar and an architecture that would probably make Microsoft and AWS architects blush. The thing did everything, except allowing users to register. I politely asked him to leave and give me the key after 4.5 months. 30 minutes after he left, I had a registration API and it was able to confirm users' email addresses.

This isn't a unique experience either, it's something I have experienced dozens of times.

I don't know if they would need 2 years, but I can guarantee you that it's probably not worth waiting for ... :/

Collapse
panditapan profile image
Pandita

out of curiosity, did you ask him what he was doing that caused him to take 4.5 months? 🤔

Thread Thread
polterguy profile image
Thomas Hansen Author

Yes, and he tried to explain it to me, and every time he tried, he'd become depressed, and so would I, and the whiteboard wouldn't be large enough to illustrate his architecture. This isn't unique for him though, it's a disease having penetrated our entire profession, where super duper senior software developers have taken in all the "Kool Aid", and believe that software development is supposed to be complex, while it's really ridiculously simple ... :/

Picasso said ...

It took me 5 years to paint like Rembrandt, and 40 years to paint like a child

I wish more software developers could learn from Picasso ... :/

Thread Thread
polterguy profile image
Thomas Hansen Author

Psst, after 4 months he realised that GoLang couldn't solve his problems, so he started implementing the thing all over again in Rust. I'm a nice guy, and I allow for people to fail, but when he started he didn't know any GoLang, still he wanted to implement his stuff in GoLang, and I allowed for it, saying to myself; "I'll give him a chance" - Even though I advised against using GoLang as he started. When the thing crashed after 4 months, it crashed for the exact same reasons I had warned him about before he started it with GoLang. After it crashed with GoLang he wanted to use Rust, at that point I said yes, and started looking for other people to replace him.

When he quit, I finished his job in 30 minutes using Hyperlambda. The arrogant selfish --censored-- hadn't even bothered to download our primary product, to see if it could somehow solve his problem, because he was too busy "chasing lightbulbs and hype" ...

Thread Thread
polterguy profile image
Thomas Hansen Author

I'm a nice guy, and I'll give everyone a chance, but facing such amounts of disrespect, not only for myself, but also for my work, is reasons enough for me to "block" people out of my life ...

This is why I don't even ask people for CVs anymore as they apply for jobs with us. The only thing I care about is how fast they can learn Hyperlambda ...

Thread Thread
polterguy profile image
Thomas Hansen Author

As far as I am concerned, I basically paid for the guy's "teach yourself GoLang and Rust in 4.5 months" vacation, and when he left, I had zero lines of code and nothing to show for, besides that he started making me doubt our own primary product, resulting in that I in a "moment of doubt" started listening to him, and implementing some of his ideas, things I am still plucking out of the project and struggle with to this day ...

Thread Thread
polterguy profile image
Thomas Hansen Author

When I (finally) got rid of him, I had only 1.5 months left of the estimate project time before I had to deliver. The project was estimated to last for 6 months, and I built it (alone!) in 1.5 months because I didn't have more time left. Basically, the guy squandered 75% of our projected time because he "wanted to teach himself GoLang and Rust".

Today our entire infrastructure is built in Hyperlambda, and if anybody as much as mumbles let's use Python/PHP/Java/GoLang/xxx I wouldn't even give them the curtesy of firing them, I would chase them out of the office with a stick ...!!

The guy basically swindled me, and his reasons (I assume) was that he was more interested in building his CV than my project ... :/

Thread Thread
panditapan profile image
Pandita

agh that sounds super painful and I can see why you were frustrated!

I think you also learned a valuable lesson there as well as a project lead! that knowledgeable doesn't always mean good in practice! I too had a lead that would take forever to deliver because he wanted to get everything right. I valued his knowledge but it was frustrating to see him take so long in finishing things we really needed, so I can understand your feelings very well.

I think at that point it's better for these types of dev to move up the ladder and help juniors and mid seniors improve their code or have a more architect sorta role, and maybe they also need to be reigned in a little because they can get very excited! like a kid who wants a rainbow play doh ball so he mixes them all.... only to end up with the disappointing reality of a brown one instead hahaha (btw I'm just putting some ideas out there nothing too serious!)

In the end, I'm glad that your project was able to take off and give you better memories :3

Thread Thread
polterguy profile image
Thomas Hansen Author • Edited on

These are very wise words, and if we had been a large and mature company, I'd probably have room for him, even though he didn't deliver according to expectations. However, we're a startup, and our ability to move fast, is our only chance at success. When I finally had to let him go, I even told my investor the following; "The guy is amazing. If we gave him 5 years, he'd probably come up with something that's way smarter than I could come up with - However, we don't have 5 years, we've got 6 months, and I need the stuff 'yesterday'".

However, in the end, his (lack of) social skills and ability to start fights over tiny and mostly ridiculous things was the tipping point for me. It was painful, but I had to let him go. When he had left the office, I contacted every single recruiter I knew on LinkedIn though, and before he made it back home he had a new job with a common acquaintance of us, who runs a much larger company, and can afford to have people do "deep dives for years" in solitary environments, where team work and such are less important ...

I still hold great amounts of respect for the guy, although I admittedly feel sorry for him - However, I suspect the feeling is not mutual ... :/

Collapse
decker67 profile image
decker

To give someone 4.5 month to do this task is first to much time and second the result should be questioned after at least one week. As a employer you should have an eye on the things you assigned otherwise developers are playing around with the stuff the like.

Thread Thread
polterguy profile image
Thomas Hansen Author

100% agree!

Collapse
pyrsmk profile image
Aurélien Delogu

Well, this time this is very opinionated, with very questionable analogies 😄

Indeed, McDonald's delivers fast. But, sorry to say that: it delivers shit. The French Laundry, on another hand, delivers quality products. And it takes time for it. You're basically comparing the WordPress market to a good company that tries to build good things.

Yes, you have it faster, cheaper but also heavier, and that cost more to host. And if you push it to have a less generic product, with more specific features, here we are with an unmaintainable pile of crap.

With your art analogy, this is a bit different. You cannot compare things like that. They have not the same purpose at all.

But hey, I understand your point of view. It's just that they are not the perfect analogies for your argument IMO ;) In your case, you deliver GOOD product faster.

Collapse
polterguy profile image
Thomas Hansen Author • Edited on

Hehe, you are correct, and I kind of regret I didn't use "In'n'Out" as an analogy, or something with slightly better quality than McDonalds - However, the point still stands, which is delivering extremely fast. FYI, I agree, I've personally been to McDonalds twice the last 5 years ... ;)

But McDonalds have a lot of things to teach us, such as standardisation, continuous improvements, measuring time, etc, etc, etc - But yes, their food is (censored) ...!! :/

Collapse
latobibor profile image
András Tóth • Edited on

I have seen and luckily avoided automatic CRUD systems. Reading your article and the comments there are 2 extremes here.

No. 1. would be fake senior devs who are overthinking everything. Adding complexity is not good engineering, in fact, it is the exact opposite. Folks google this phrase: "The principle of the least surprise". A good senior dev must write code that is easy to understand even to junior devs, while it avoids pitfalls. Also a senior dev should avoid rewriting existing things: for most simple things there are amazing solutions out already.

No. 2. Underestimating backend by simply thinking it is a "just CRUD". At its worst it is just reimplementing basic SQL queries in another languages. In real world applications DB models mostly need to go through consistent states. Somebody somewhere has to defend against invalid states. You can say I've got an API in a week, if then frontend has to make six million wasteful calls and do actual SQL joins in JS. The whole thing would take ages and then you run the risk that somebody just ignores your frontend where most of the validation resides now and adds bananas through Postman...

So in my experience "just a CRUD API" usually means "I don't know and I don't want to know what the client will ask of me, so I guess they can do whatever they want".

Collapse
polterguy profile image
Thomas Hansen Author

Under normal circumstances I’d agree with you, if it wasn’t for your belief in that “it’s just crud”. Maybe slightly exaggerated by me … 😉

dev.to/polterguy/implementing-paym...

Collapse
jonrandy profile image
Jon Randy

The problem with the analogy is that McDonalds food is... 💩

Collapse
polterguy profile image
Thomas Hansen Author

Hehehe :D

In Napa Valley they had this concept called "Slow cooked, served fast", at its core our own products are more similar to that construct than McDonalds. But I figured McDonalds would be more eye catching, and also "drive home the point" more accurately ...

I learned one thing from McDonalds though, which very few people realise is "the secret sauce" in McDonalds business model, which is a religious belief in standardisations. The only reason why McDonalds can give you that burger in 10 seconds is because of standardising their method of delivery, combined with observing and measuring their customers' behaviour ...

It's very scientific at its core, and you simply have to respect them for their courage in these regards ...

But yes, you've got a point here ... ;)

Collapse
lexlohr profile image
Alex Lohr • Edited on

How is that different from rapid development? How is this process even sustainable? How do you ever get beyond an MVP this way? How is tech debt accounted for?

Also, have you seen a lawyer about the implications of selling that process as a franchise? This would mean everyone subscribing to your process would be forced to be your subcontractor. I don't see this happening in the software world, really.

Collapse
polterguy profile image
Thomas Hansen Author

Did you try our product? There's a link in the article. It reads meta data from your database and automatically wraps your database into a CRUD Web API. The point is that such things can only be achieved if you super standardise things, which kind of resembles the way McDonalds are creating burgers, and the way Toyota are creating cars for that matter.

Collapse
lexlohr profile image
Alex Lohr

Thank you for answering; so it's just the simple CRUD APIs that you provide for the price of subsidizing one's own business by becoming a franchise?

Also, if I'm not mistaken, there are already things like supabase, which make it incredibly easy to create such APIs directly from the database, and they don't require you to adhere to that much standardization, offering more flexibility at the price of defining the API surface yourself, but it's probably still a better solution in the long run, as you'll hit limitations much easier with automation.

Thread Thread
polterguy profile image
Thomas Hansen Author

It's much more than a simple CRUD API wrapper. If you want to compare us with SupaBase, the best way to compare is to try to do anything but reading stuff from your database, such as sending an email, connect records to payments, implement translations, etc, etc, etc ...

To put that into perspectives, we built our entire middleware infrastructure ourselves using our own tools ...

Thread Thread
lexlohr profile image
Alex Lohr

we built our entire middleware infrastructure ourselves using our own tools ...

Which just shows that your tools are suited to fulfil your use case, not everybody else's. And you still haven't answered my criticism about defining this as a franchise.

Thread Thread
polterguy profile image
Thomas Hansen Author

If you want to pick a fight, go pick somewhere else mate - I'm not interested ;)

Thread Thread
lexlohr profile image
Alex Lohr

And you're not interested in criticism. Figures.

Thread Thread
polterguy profile image
Thomas Hansen Author

Not really. If you disagree with me write your own article 😉

Collapse
mshafiey profile image
Mohsen

I don't like fast food, but i love RAD (Rapid Application Development)

Collapse
polterguy profile image
Thomas Hansen Author

There's good fast food around to be found :)

In Napa they had this concept called "slow cooked, fast served". Technically our value proposition is more similar to that than McDonalds, due to our quality, but if I said that it wouldn't be as controversial and driving home the point the same way McDonalds does ... ;)

Collapse
polterguy profile image
Thomas Hansen Author

Mohsen, our Head of Backend Development bringing the process to its natural conclusion :D

McDonalds Development

Collapse
danspinola profile image
Dan Spinola

This is literally the first time I wished there was a thumbs down button on this platform.

Collapse
polterguy profile image
Thomas Hansen Author

I wrote an answer to you here ==> dev.to/polterguy/what-software-dev...