DEV Community

Cover image for The McDonalds Software Development Process

The McDonalds Software Development Process

Thomas Hansen on July 04, 2022

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 befo...
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

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

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

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

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

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

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 • Edited

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

100% agree!

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

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

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
 
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 • Edited

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
 
lexlohr profile image
Alex Lohr • Edited

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

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

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

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

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

Collapse
 
jonrandy profile image
Jon Randy 🎖️

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

Collapse
 
polterguy profile image
Thomas Hansen

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
 
mshafiey profile image
Mohsen

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

Collapse
 
polterguy profile image
Thomas Hansen

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

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

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