8

Software Developers Can Learn From Andy Warhol - DZone Web Dev

 2 years ago
source link: https://dzone.com/articles/what-software-developers-can-learn-from-andy-warho
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

What Software Developers Can Learn From Andy Warhol

Software development is in its infancy as a profession. Learn here how Andy Warhol can teach us a lot about simplifying our craft!

by

CORE ·

Jun. 15, 22 · Web Dev Zone · Opinion

500 years ago if you wanted a painting, you'd hire somebody like Rembrandt, he'd have a team of people, and they'd work for years before they delivered you a 10x10 meter huge thing you could hang on your wall in your castle. The thing would cost a fortune of course, and only the filthy rich could afford such things. Fifty years ago, Andy Warhol bought a Xerox copy machine and started mass producing pop art with neon colors so bright that his stuff would automatically become the center of attention in any room you installed it in.

Andy Warhol in front of his artwork

According to Andy himself, he was practically blind, which was the reason he had to use such bright colors, as without these neon colors he wouldn't be able to see what he was creating. Today an "original" Andy Warhol (Xerox copied that is) typically sells for 10x as much money as an original Rembrandt. This teaches us 3 important lessons:

  • The value of something is not necessarily proportional to the amount of work required to create it (Andy sometimes only spent minutes on his art).
  • Your weakness can become your strength (Andy was almost blind, and therefore invented pop art accidentally).
  • Using the best tools available always yields better results (use a Xerox copier if you can).

When I started Aista, I hired one of the best software developers in the country to create my backend middleware for our cloud services built on top of Kubernetes. I gave him a simple specification, which was, "Create a registration API that confirms users' email addresses as they register."

Realizing he'd need some time to wire up the basics, I waited a couple of months to hire our first front-end developer. I want to emphasize that this was one of the best backend software developers living in my country. Occasionally he'd try to explain his architecture to me, and it contained lots of fancy words such as Domain Driver Design, Saga, Micro Services, Event Message Bus, etc., etc., etc. It contained literally every single best practice our industry has created over the last 50+ years. I could only assume it was a marvelous design, capable of beating even companies such as Google, Amazon, and Microsoft in regards to architectural principles. However, and I must emphasize this crucially, the thing needed to be delivered in 6 months.

4.5 months later, I still couldn't perform a simple Postman request to register in the API. Now, of course, it had taken 2 weeks to simply configure Pulsar. This was due to the fact that its configuration files were several thousands of lines long YAML files, and he had wrestled with problems related to Golang having immature libraries to interact with Pulsar (and God knows what more), so he had to throw out Golang after 4 months. However, let me repeat the important parts.

4.5 months later, I could still not register.

At that point, I gave up and told him politely, "Maybe you should go work for somebody else? Please leave the key at the door.Thirty minutes after he left, I had a working registration API built in Hyperlambda, I was able to send emails during registrations, and confirm users' email addresses. One and a half months later, the entire middleware was completely done, and the thing was set into production through today, in fact. Try it out below if you wish: it's actually kind of cool, I think. :)

The lesson learned was that my backend guy was a "Rembrandt type of developer." However, I didn't need a Rembrandt: I needed an Andy Warhol. For me, having a "Xerox copied," simple, neon-colored piece of software was simply superior to the "Rembrandt method of creating software." I didn't have the luxury of waiting 5 to 10 years for the "most marvelous architected super-duper complex piece of software ever known to man." And I didn't care about how many fancy design patterns or DDD constructs the thing had. I only cared about one simple thing: Does it work? And of course, the answer I got during 4.5 months of waiting for the "super complex system" that the "best backend developer in the country" was trying to assemble was always the same: "Soon." That is until I had to cut my losses and simply create it myself, and politely tell him to apply for a job elsewhere.

I want to emphasize that the problem was literally done 30 minutes after he left; a problem he had tried to solve using every single architectural acronym ever known to software development as a profession for 4.5 months and failed to deliver. For the record, after 3.5 months of development in Golang, he gave up on Golang and started implementing it in Rust. At that time I had already started assessing my options a long time ago. "Options" here, of course, meaning software developers with more respect for simplicity and less respect for DDD, enterprise service message bus, sagas, event sourcing, and super scalable highly distributed microservice architectures.

In half an hour I did what he couldn't do in 4.5 months, even though he's officially known as a far better and more skilled software developer than me. And in only 1.5 months of development, I created the entire middleware for a cloud service provider, allowing people to create their own backends in seconds for then to have the backend create their software again automatically in seconds. This was simply because I couldn't care less about fancy design patterns, DDD, micro service architecture, event sourcing, and sagas. I only cared about one simple thing, which was, "Does it work?" Everything else was of secondary importance to me. And yes, it works. Although the project as a whole was delayed by 4.5 months, we still reached our deadline, and we released our MVP BETA release today, on time, on schedule, and on budget, even though I wasted 4.5 months waiting for something that never came.

When people ask me what I do, my answer is: "Aista is to software development what McDonald's is for food." I could also say, "Aista is to software development what Andy Warhol was for art."More colors please, and less DDD.

Please people, make it dead simple! Everything else is a personal insult to me. And if you can Xerox copy it, then please do so!

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

More Picasso and Warhol and less Rembrandt and Leonardo DaVinci, please. Yes, Leonardo spent 13 years on Mona Lisa, but still, he couldn't even finish it before he died. Yup, her left hand is still not finished, 500 years after he started working on it. ;)

Besides, I'd much rather have a frog Xerox copied by Andy Warhol on my own wall than that depressing painting of that sad girl (Mona Lisa), and I suspect the same is true for most people if they only give it some thought.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK