Hello luvs, this one is not about infosec but choosing a technology stack. Like many other posts, this is my braindump through participating in some failed and successful startups. This post aims to help those who want to implement a startup or project but struggle to choose the right technology stack. Believe me; I've been there; the struggle is real.
Table of contents
Let's jump in. The magic tech stack is a deep stack that only super leet and wealthy can use, and it's not, and it will never be available for ordinary entrepreneurs and makers.
Sorry to disappoint, but that's not the case. The best stack, the best programming language, the best operation system, is what you love and know. Making your project success is mostly about timing and execution. I highly recommend watching Bill Gross talk on the single biggest reason why startups succeed. Well, on timing case, we don't have full control, but on execution choosing the right stack does matter, and the right stack highly depends on its user.
Another example is cloud providers, again at the beginning. You want to use providers you been using, I like digital ocean, AWS, and Haruko, but if you are using Google products, you should go with google cloud, if you are using C# you probably want to use Azure. I'm not trying to state the obvious but help you to look no further and get the thing done. Again I could buy a server install ubuntu (my fav Linux distro) on it and host it from home, but does it make sense for hosting a simple blog?
I just mentioned ignoring the hype, but it doesn't mean you can choose a technology to create everything. If you are trying to create a game, still the best choice is C++, if your app idea is processing a lot of information you need speed Golang can be an excellent pick.
Another example is I want to implement a mobile app. The issue was I liked to have both Android and IOS version of the app in the first release. So I had to create an app in swift and objective-c and another one in Java or Kotlin. Then I found out about the Dart programming language and Flutter framework, which I found the perfect fit to implement my idea.
Well, What is DevOps? Mixing it and software dev to cut the production time. In the beginning, git and few bash and python scripts can automate your whole deployment and delivery. Still, you want to take a look at Docker, Jenkins, and virtualization; in general, it helps to deliver better products, CI is not about tools but how you use tools.
Well, even small projects may need a database, MySQL, PostgreSQL, SQLite, SQLSERVER can handle most projects, but you may like NoSQL approach if you believe your data needs it. It most cases, just any database does the job so relax. You may also want to take a look reddis and in memory data structures.
Knowing software development fundamentals and methodologies can help you manage and design more robust software. Even at the beginning. SDLC, Agile, Waterfall, Scrum, TDD, etc. will indeed help don't ignore their concepts; what all these methodologies are trying to say is one thing. Use your time wisely and know where you are going.
Communication is another very possible thing you are collaborating with someone else, make sure you are on the same page, and your goal is to get done and get it out. You are good friends and enjoy working with each other, and you are the reason the other partner stays motivated. I find Trello and slack very helpful here.
Aaah, this is where it creates a lof confusion I see people talk about choosing this tech and that tech to scale, Honestly, any modern technology stack is reasonably usable and scalable for your very first version. So in case of your startup growth so fast, and you see the current stack can't scale, at that point, you might want to hire better engineers than yourself and focus on scaling the business.
There is no single best technology; there are best people who do their best to make the best out of any technology.
Do you know what's fun? Choosing a tech stack is just begging; we use different stacks to implement different ideas, and it most likely only to fail. But tell me, In the end, are we losers who tried and failed or someone who never accomplished even a failure? You be the judge.