Tech Trade Offs
Writing software is fairly easy today. There are Dynamic Languages, Frameworks, Libraries and lots of guides and styles about how to write good code that other humans will understand.
Unfortunately, so few are captured about trade offs, this is specially hard since tech is constant change and evolution as requirements come and go is very hard to document this, so this kind of knowledge is hard to get it, specially because we are always building new things and at the scale we have different and bigger problems.
The scale changes things, it creates new problems this requires a new way of thinking. There are matters like Anti-Fragility and Multi-Data center that are very hard to add it later, its way better get it from the get-go. The hard part is that you don't know how much your business will grow and is hard for someone invest on rocket since tech before knowing where the business is going so in other words trade offs are really tough in this sense. Today it makes more sense in lots of scenarios just do from MVP in MVP in a very Lean way and refactor and re-arch it later as you evolve.
The Standard Vs The Edge
There are technology that is pretty solid and works well in the enterprise scene. When you want to do something totally different and when every second matters or you need something more extreme you end up having to do yourself. Some tech are solid because there are more than 60 years of research behind it, others not because we just did not spend the man / hours to get it ready. In order to use edge tech you will need is hacked, there is no way to use software like that without being a hacker.
Why? Because you don't have any documentation, you won't find support, you pretty much need to know what you are doing. It`s easy to get mixed feeling with this, in one side you will do pretty entertaining stuff, but on the other side of the coin you can struggle sometimes trying to get things done, that's why people use Open Source as much as possible and that's why people Open Source solution so they can get a bigger audience looking and perfecting their code.
The Focus Vs Leverage
Another big trade off is how much you buy vs how much you do in house? Well, it really depends how much this is crucial for the business and how much of your time you want spend doing this. There are plenty of things we need to do in technology, but not everything is strategic something is way better use the boring solutions just because this give you space and energy to do something else.
Perhaps in some cases it makes sense not buy and not even use anything as a black box but create your very own. In this case I still think you should use as much as open source as you can, doing it this way you still leverage from what's available Unless you are doing something Reactive that requires you re-write all the drivers again :-).
This dilemma is tough and they keep coming back and forth, there are industry forces that might add more fun to this game, like for instance, there are some companies that don't want go to the cloud because they have a hardware investment or because they want more control or less latency. IMHO there is no easy answer for this, actually as more big you get it more complex you become too so embrace it.
Cheers,
Diego Pacheco
Unfortunately, so few are captured about trade offs, this is specially hard since tech is constant change and evolution as requirements come and go is very hard to document this, so this kind of knowledge is hard to get it, specially because we are always building new things and at the scale we have different and bigger problems.
The scale changes things, it creates new problems this requires a new way of thinking. There are matters like Anti-Fragility and Multi-Data center that are very hard to add it later, its way better get it from the get-go. The hard part is that you don't know how much your business will grow and is hard for someone invest on rocket since tech before knowing where the business is going so in other words trade offs are really tough in this sense. Today it makes more sense in lots of scenarios just do from MVP in MVP in a very Lean way and refactor and re-arch it later as you evolve.
The Standard Vs The Edge
There are technology that is pretty solid and works well in the enterprise scene. When you want to do something totally different and when every second matters or you need something more extreme you end up having to do yourself. Some tech are solid because there are more than 60 years of research behind it, others not because we just did not spend the man / hours to get it ready. In order to use edge tech you will need is hacked, there is no way to use software like that without being a hacker.
Why? Because you don't have any documentation, you won't find support, you pretty much need to know what you are doing. It`s easy to get mixed feeling with this, in one side you will do pretty entertaining stuff, but on the other side of the coin you can struggle sometimes trying to get things done, that's why people use Open Source as much as possible and that's why people Open Source solution so they can get a bigger audience looking and perfecting their code.
The Focus Vs Leverage
Another big trade off is how much you buy vs how much you do in house? Well, it really depends how much this is crucial for the business and how much of your time you want spend doing this. There are plenty of things we need to do in technology, but not everything is strategic something is way better use the boring solutions just because this give you space and energy to do something else.
Perhaps in some cases it makes sense not buy and not even use anything as a black box but create your very own. In this case I still think you should use as much as open source as you can, doing it this way you still leverage from what's available Unless you are doing something Reactive that requires you re-write all the drivers again :-).
This dilemma is tough and they keep coming back and forth, there are industry forces that might add more fun to this game, like for instance, there are some companies that don't want go to the cloud because they have a hardware investment or because they want more control or less latency. IMHO there is no easy answer for this, actually as more big you get it more complex you become too so embrace it.
Cheers,
Diego Pacheco