Simplicity over Complex
I am a strong believer in simplicity over complex. I think the more complicated something becomes, the more difficult it is to maintain, update, improve, explain and teach.
“The definition of genius is taking the complex and making it simple.”
― Albert Einstein
Steve Job's had his take on that quote too:
Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple.
― Steve Jobs
What I have realized is that we add more libraries, more 3rd party resources, and more tooling that is supposed to make our lives easier. However, it often complicates it, makes it more difficult to maintain, and we have to remember everything we did to make it work the first time.
It's INSANE how difficult it has gotten to keep things simple. I love days when I improve performance of code, not by tweaking performance, but simply by deleting redundant code. A team of developers over 5 years work on a code base, 50% of them are gone, and then the new 50% write their own version of functions, and they make it better, but call the old code too, just to be safe. Yes, that happens.
The just to be safe, is annoying. Don't be safe, be smart. Write better tests around the existing code, and then delete away! Clean up things, reduce technical debt, make your code base the best thing you have ever worked on. In a couple of weeks, you'll be embarrassed with what you wrote. If you aren't then you released too late (That's paraphrased from Reid Hoffman, founder of LinkedIn).
Stop trying to prove how smart you are by creating all of these crazy rube-goldberg automation approaches when the truth is, you don't need it.
A simple build
I was honored to take a new developer from our client and take him through our code base for them. He was amazed that it took three commands to get him up and running:
git clone ssh://url npm i npm run start
That was it, he was live and debugging. Then for deployment, it was simply:
git add . git commit -m "commit message" git push
Then it was live on a qa deployed server running in a docker container on AWS. How easy was that? Sure it took some time to configure initially, but the onboarding of new developers should be that easy.
Process is killing us
We create more and more process to automate to streamline, to improve, to do all sorts of things that give the perception of improvements, but it is busy work that is not helping. Don't add process because you can't justify your job. Add process when you need to rails to keep you from going crazy. Slowly add process. I've seen teams work autonomously for several weeks before we needed to step in a make any suggestions.
You aren't that smart
There are people who have done more, know more, and are much smarter than you. Lean on those people, ask questions, get them to help you. What is most important, is question why they do it a certain way. It is often because they have done it 100,000 different ways before and those all sucked. If you think you are the smartest in the room, then either a) you are an arrogant prick and no one wants to work with you, or b) you may need to hire someone smarter than you soon, because you can only teach as much as you know. I'm hoping its B.
I think the best thing I want to talk about is to simplify everything. Stop watering down so much code with all these libraries and then claiming, look what I made! Oh wow, you kicked off a boiler plate, added an oAuth library, and applied different bootstrap theme. You didn't create shit. You compiled other people's code in a way that worked for you. Code plagiarism is a thing, but everyone cuts and paste code from stack overflow, github, or codepen. It's ok. But don't act like you are some genius because you are good a googling code.
I love teaching people code concepts that I have learned, some fun front-end stuff, SQL optimizations, and how to breakdown code to components and then solve the problem at a lower-level. It's fun. It is really fun to do it with someone else too!
Ok, I'm done for now, just go simplify something in your life and look how amazing it is when you reduce it.