The 'Minimum Spanning Stack'

Reliably Ship Code, Tinker With New Things

I saw this phrase, which I referenced in my earlier blog post. The phrase comes from Shawn Wang, swyx which was 'Minimum Spanning Stack.'

Now, I have spent the better part of a week thinking about this and how it can be useful to developers. Yesterday and today, I thought about how useful this can be to businesses as well, at least startup's and dev shops.

For The Developer

Why is this a good idea for developers? Well, hopefully you can see the benefits of having your 'go to' tech stack but if it I want to share some of my thoughts anyway.

Personal Reliability

I'll start with something I have noticed about Amazon Web Services. Brian LeRoux has done a fantastic job of showing how reliable AWS is through Architect and Begin. But for some reason, and I am guilty of this as well, we would rather jump to the new shiny toy than use reliable primitives, patterns, and practices.

Now don't get me wrong. I love new shiny things because, well, they are shiny. But, I spend an inordinate amount of time messing around with new things that I never learn one thing truly in depth. So, even though I have only been developing for a little over a year, if I had spent that year learning 2 or 3 things as opposed to letting every new thing catch my eye, then I would be able to more confidently ship things by this point.

AWS has proven itself over and over again. One of the key indicators of this to me is that there are so many companies that make their business/living off of providing some layer of abstraction to AWS. There is either a wrapper for the cloud, or the company just says, 'Hey AWS is difficult. Let us handle it for you.'

The above is fine. My point is that there are reliable technologies that are out there that if we used them, we would more confidently and more efficiently ship applications. There is a reason that so many companies still use jquery. Check out this tweet from MICHAEL JACKSON on the percentage of sites that still use jquery.

The overall point here is that there are still really good 'old' technologies that are very reliable. The goal is to find the tech stack that 1) you know, 2) enjoy using, and 3) can stick with for the long term.

Tech You Know

I think my main principle here is this, if you know something, use it. If you think you might want to use something else, keep using the old thing, while you learn a new thing and then you will know whether or not you actually care enough about the new thing to migrate over to the newer technology.

Think of it like a job. You ought not to leave your current job until you have already been offered another job. If you leave your current job because you are going to get a better job, why wouldn't you continue to get paid until you have the guarantee that you do, in fact, have the new job? (Obviously this breaks down to some extent. If your job is toxic and it is not an ethical place to keep working at, by all means leave. But generally we look for something better so wait until you have that something better secured before walking out of where you are.

Enjoy Using

The opinions on this point are all over the place but I would argue that it is pretty significant that you enjoy the technology that you are using if you are going to stick with it for the long term. There was a generation of people that just asked the question, 'does it work', and that was enough. But Developer Experience is a real thing. This is an area of significant conversation when it comes to tech. For many .NET and C# are fast, well funded, and get the job done. The combination of those three things is well beyond enough reason for them to stick with the .NET ecosystem.

But, as primarily a Javascript developer, I dread opening up my windows computer and booting up Visual Studio. Granted, the same company that is making Visual Studio a powerhouse is also making Visual Studio Code a wonderful experience, but Visual Studio is just not a great developer experience in my opinion. Visual Studio Code is so clean. But I digress. The point here, for me is this, if you do not enjoy using it, you are probably not going to use it.

I just started to learn typescript and I love it. I have been using Remix Run for a while now and it is also fantastic. I have started learning Architect because as I have watched and listened to Brian LeRoux I am convinced that if I can build with Architect which is wrapping AWS for me(? maybe it should be phrased differently) then I get to use such a reliable service. These are all opinions by the way.

Maybe one day I will be led to doing more backend development and at that time I will want to take the plunge into .NET and C#. I don't know.

Can Stick With for the Long-term

I think it is important that you and I be able to stick with something for the long term. The idea here is repetitions. Much like when trying to strength train, the goal is to slowly add weight to the bar over a long period of time. Eventually, in weight lifting, you will have to change things up so that you get a different stimulus, like rep ranges, light days, medium days, heavy days, different styles of that same lift, etc. But with coding it is the same. I have watched a many hours of Kyle Simpson's Javascript courses on Frontend Masters and I am perplexed every time I hear him say, 'I have been learning Javascript for around 20 years.'

The larger point here is not that you will ever master something. Many of us Javascript Developers would consider Kyle Simpson a master, but he probably would not consider himself a 'master'. We will just call him sensei.

I think we need to be okay learning something for the long-term. In today's world, if you stick with one thing for 2-4 years, you will probably be considered well beyond your peers. Why? Because of the 'shiny tech' problem already mentioned here. I am so guilty of this. But here is a bonus point of discussion for you that I think you and I must consider when we are thinking about this minimum spanning stack.

Does Your Minimum Spanning Stack Help You Create

I have listened to a lot of Seth Godin and I think the questions that we could all do to get caught up in a little more is 'what change am I seeking to make' and 'who am I seeking to serve?'

I think we often get caught up, not in what we are trying to do or who we are seeking to serve, but 'how am I going to do x, y, or z.' That is not a wrong question, I think it is just out of order leading to a mis-ordering of priorities.

If you know what change you are seeking to make as well as who you are seeking to serve, the next step is to begin. Begin writing, creating, making art for those who you want to help. If your minimum spanning stack gets in the way, choose a different stack. If you have a stack, just start creating. Use what you know (I am preaching to myself) and start stacking those bricks.

Brick and mortar is still a very good way to build a house and most of the time people only notice if it is serving its purpose. Nobody is going to ask you how you made what you made for them. They will only care that you cared enough to make that change and serve them.

Let your Minimum Spanning Stack serve you and not you serve it.

Random Thought for the Day - There is a card game called Neanderthals. The goal is to only use one syllable words to have your team guess your word or phrase. When you say a word with more than one syllable you get whacked with the 'Nope Stick'. However, sometime people mess up when whacking you and they thought the word was more than one syllable when it was in fact, just one syllable. In that situation there should be a rule where, because it takes time away from you trying to help your team guess a word, that you get the points for the word anyways because someone else made a mistake.

That's all I have for now. This was a longer one so if you have thoughts I would love to hear your feedback.

Till next time, Ben