7
42 Comments

Struggling to decide on what stack to learn

Hey guys,

I am an experienced game developer with around 10 years under my belt. Worked mainly with Unity and Unreal Engine, so C# and C++ are my most used languages.
I recently dabbled into Flutter for a cross app framework to get something going fast on many devices. It's a fun framework which I enjoy working with. As the web part of it is not ready yet I want to learn some web technology.

But to be honest I am a bit overwhelmed by all the options. I have absolutely no clue what stack is the best for me.

Maybe you can help?

Preferably it would be a stack that is fast for solo devs as I am starting on my own.
I found @alchemist channel and thinking about going for elixir. Mainly because he talked about that it's proper fast for solo devs and scalable in the future. But my past experience tells me to go with more mature technology.

Looking forward to your input!

  1. 6

    Preferably it would be a stack that is fast for solo devs as I am starting on my own.
    I'd 100% recommend Ruby on Rails just for this purpose

    Here's one of the projects that I built using rails, took me only about 2-3 weeks:
    https://oneprofile.team

    1. 2

      Ruby on rails seems like a good choice, I also had it on my map before this post. Just wanted to hear some unbiased input.

      Great idea, Yusuf. I like the visual style of the site. Looks very polished. Great work!

      1. 0

        I took on Rails and never looked back. But whichever you choose, it should fine. All the best, Maximilian! Can't wait to see what you'll build.

        Thanks, glad to hear that!

        1. 1

          I feel very lucky to use Ruby on Rails, it’s a pleasure to work with. Scalability examples: Shopify, Github and Basecamp. Plus the community and library of gems is extensive.

  2. 4

    Try to focus on what clicks with you. Try not to focus on if it's cool, mature or scalable.

    The failure rate for people who never finish their app because it's a drag to develop it is 100%. Start-ups don't often fail because the wrong tech stack was chosen.

    1. 1

      Not sure why but this resonated a lot. Just had a flashback at my beginnings in gamedev. I just developed something in a framework I had fun in. Nothing more. No thoughts about choosing the wrong engine etc.

      Thank you for the input. I think I will just peek in the popular suggestions from here and see what I have fun with!

  3. 4

    Since you already you know C#, have you considered asp dot net core?
    With dot net core 3, they're now cross platform, and Microsoft has added a lot of resources to get devs up to speed [https://dotnet.microsoft.com/learn/aspnet]
    I know it's not the sexiest stack out there, but it's pretty robust. I know stack overflow is the poster child of .net success [https://www.youtube.com/watch?v=uNVlQ1yPsto]

    For front end, you can start with CSS only frameworks (Bootstrap or tailwind), then move onto a Vue, Angular or React.

    1. 2

      I did not consider asp dot net core! But like you said as a c# developer it could make sense. I will look into it, thanks 🙂

      1. 2

        For me that's the obvious choice.
        .Net Core is great for API and super fast. Being fluent in C#, you will have almost no learning curve.
        For the front, I chose Angular. Typescript is a neat language and quiet similar to C#. And you can do mobile apps with Ionic (which is WAY better than Xamarin).

        But Angular is better for big projects. For very small, Razor is good enough.

    2. 1

      I absolutely second this. Core MVC + SQL Server is fast, robust and easy to work with (assuming you're coming from a .net/C# background), and comes with many features built in, such as identity and security.

      Depending on what your project is I'd avoid front-end frameworks entirely for now if I were you, as they can add a lot of complexity. Server-side rendering is a fine solution for a lot of web apps, perhaps with some vanilla js added.

      Microsoft seems to be throwing a lot of resources behind Blazor, a framework for generating client-side code from C#, and I would guess that native mobile apps via Blazor aren't far behind - so you may never have to stray outside C#.

      1. 2

        I agree with this. Only add client side frameworks if you have too. I've been avoiding them myself, and trying to push everything server side since that makes sense in my mind.

  4. 3

    Recently I was shopping for a framework for a side project and I chose Ruby on Rails. The choice now is quite overwhelming. I feel that there is a level of indifference between PHP/Laravel, Python/Django, node.js/express and Ruby on Rails. My bias lies in the writings of Basecamp - the company behind Ruby on Rails. I do like their ideas, their product, their vision. I think a lot of it reflects in the framework as well.

    In addition, I believe there is no rush in plugging latest JS stack for frontend. The old school templates will get the job done and will leave you with more time paying attention to UX.

    What are you planning to build?

  5. 3

    Don't listen to anyone incl. me about the best stack ideas. Everyone incl. me is biased because everyone invested years into their stack. They incl. me again rather defend their investment (just imagine their stack will nosedive, all their investment is gone) instead of giving really neutral advice.

    Just use Google Trends, Github Octoverse, Reddit sub counts to learn understand which are the biggest and still growing ecosystems in the frontend and backend. Check also the ones which are stagnating or falling. Stay away from them.

    Why: the bigger an ecosystem around a technology is the more ready-to-use libs are there AND most important these libs are actively maintained.

    1. 1

      Getting a bigger picture will help for sure. Thank you, I will keep this in mind on my decision process!

  6. 3

    If you decide on NodeJS and ReactJS then I will give this to you for free(Not right now, In 2
    Weeks) - https://saasify.teachable.com/p/build-a-saas-app-with-nodejs-and-reactjs

    1. 1

      Hey I am also learning ReactJS and NodeJS at the moment I liked your course and I am interested, I can help you with redesign.

  7. 3

    Hi @amax,

    I would share more details when finishing the LADR. In general cross-platform, code reuse, low-price are my drivers. More important is to be aware of your learning curve. I would say that don't make it too steep. My tech stack decided so far on doneday.xyz as the following:

    • Single-page application Frontend: Angular with Nest.js (or express.js).
    • Mobile apps (Android, iOS): IONIC.
    • Desktop apps (Ubuntu, Mac, Windows): ElectronJS
    • Backend: NodeJS or .NET Core.
    • Database: MongoDB.
    • Infrastructure: Containerized application, Docker, k8s with DigitalOcean.
    • Authorization: Auth0.
    • Email/Notification: Sendgrid/Twilio.

    Of course there still the learning curves for me, but not too steep since I have some experience with them to be hand-on. For example, I would not go with C++, Flutter, or elixir since I have no experience with it, as well as have no foundation to step on. If you have good alternatives, then avoid the steep learning curve just to save time and energy for the other things :)

    FYI, check out the Angular learning curve from my experience https://medium.com/@vupham2909/beating-the-steep-learning-curve-for-angular-76fed11131e6

    1. 1

      Thank you for the extensive information!
      I wrote your medium article and it gave a good overview of the eco system for angular. Great read, Vu.

  8. 3

    You can never go wrong with Ruby/Ruby On Rails. It's a great foundation for web dev/web framework.

  9. 2

    If you have experience with C#, my go-to suggestion is to learn .NET Core as backend. You will adapt it quickly and seamlessly. If you choose this, you have to select a frontend framework. My suggestion is to learn Reactjs.

    But if you have time to invest into some other technology, my suggestion is to learn the MEAN stack (you should subtitute Angular with Reactjs). Nodejs is great at start and learning curve is not so high.

    If you want to implement quickly, my suggestion is to learn Ruby on Rails. Its scaffolding mechanic is very useful for implementing an idea.

    But most of all, choose a framework that suits your needs. Knowing what is your needs is hard at the start, so my suggestion is: Improvise, Adapt, Overcome

  10. 2

    But my past experience tells me to go with more mature technology.

    All I'd add to the Elixir case re: "mature technology" is that Erlang has been around since the 70s and runs many of the world's telcom systems, as well as Whatsapp. That's what Elixir is built on and unlike e.g. F#'s relationship to C#, Elixir is a thin layer on top of Erlang. Everything from Erlang is available, it's common to call out to Erlang functions and Elixir's main web framework, Phoenix is built on an Erlang web server, Cowboy.

    However, if the by maturity you mean a vast ecosystem of modules for everything, then you'll definitely get more from Rails or Laravel. Elixir has a lot more than it did when I rewrote my last startup in Elixir but it's still much smaller, somewhat mitigated by better primitives that remove the need of another class of external tools (like Nginx, Redis, Sidekiq, RabbitMQ, etc).

  11. 2

    If you already have C# and C++ experience I would double down on that.

    If you enjoy native mobile, Xamarin is a fantastic cross-platform iOS/Android platform (think flutter but .Net/C#). Even better to use Xamarin.Forms and write your front-end markup in XAML.

    If mobile isn't your thing then .Net Core was mentioned and is also good. If you want to go bleeding edge then check out Blazor https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor
    Think Reactjs SPA except using C# end to end instead of JS. It's very fun to use.

    I would recommend figuring out what you want to build first, quite often that will define at least part of the stack.

  12. 2

    I'm game developer past 13 years (J2ME/Nintendo DSi/Unity3D(iOS/Android)) and from past one year started making my hands dirty with backend. May be sharing my experience might help you out down the line.

    I haven't tried or learnt yet any frontend frameworks but you may not be required as Flutter is getting ready for web too.

    I started initially learning about REST api guidelines and practices. Then found info about OpenAPI aka. swagger spec.

    Then started with NodeJS and picked Express framework. Express is pretty straightforward with limited learning curve.

    As you are mostly from strongly typed languages, I would definitely recommend to use TypeScript compared to JS. I realised this later and it made my life much easier. I personally hate too much dynamic languages too as its pretty hard to debug and maintain. For my current project it took much time to convert from JS to TS but its really worth it. You can save time on this by choosing TS.

    Next is the one i'm going to tell which i have see very negative opinions from the IH's here. It's choosing "Serverless". But it's the only thing that helped to keep our costs very low(less than 2$ per month, required very much as we are bootstrapping) and also it's not that tough to learn.

    Try starting with Firebase functions or Google Cloud Functions or with Amazon as they have more connecting pieces directly available if you need any complex actions later. Almost all Serverless are nearly the same to learn.

    Fastforward...
    We(me and my friend) are working on a rewarding platform named BountyRush for game developers which will be soon available for beta :)

    "One standard rule" : ***Never spend more time on learning, it happens gradually. Just aim for pushing the product out in steps *** - I'm reading this over and over here(thanks to IH) just to convince myself. I know its tough to follow for a developer, but thats how it works if we need to make a successful product :)

    Hope thats helpful!

    Thanks to @csallen as I almost thought the whole text went off when my mobile ran out of charge and got shutdown. Luckily this awesome guy wrote to cache so that I can continue from where I left :)

    Thanks,
    Ayyappa

    1. 1

      I had to write that caching code after I kept losing comments of my own month after month.

      1. 1

        :D
        I felt like i'm not gonna write the whole content again as i typed on mobile for around 20 mins and suddenly surprised to see it covered!

        Anyways, thanks for the great product Allen!

    2. 1

      Why are there negative opinions on serverless? Scalability? Not owning the backend? Not able to handle complex use cases?

      I feel the point about dont learn stuff you dont need. So this could be a point too. When I have decided on a product I then should see what technology is needed.

      Thank you for your help!

      1. 2

        My two negative opinions on it are:

        1. There's still a server (or many), it's just you're not the owner
        2. For simple things, it can be a win but over time I want the logic in my code base under version control with a straight-forward way to test it, not strung out in configuration settings across a range of 3rd party apps
      2. 1

        "I feel the point about dont learn stuff you dont need" - I think there is some misunderstanding. I meant as you start with a new tech, don't think much to make it perfect like the perfect way to code. First get your hands dirty and then think about making it perfect sometime later if you want the product to be out soon. We should learn, I don't deny that and explore as much new tech as possible. I'm totally with it.

        Coming to serverless, I have read post here who are experienced in backend suggesting not to start with serverless. You can find out the reasons on this site.

        1. 2

          What you are saying is what I was trying to say 😅 Got your point. Meant the same.

          I will search fot it 🙂

          1. 2

            Phew! I was thinking I meant it wrong in another sense :P

            Anyways, good luck!

  13. 2

    Although I am not familiar with the DotNet framework which seems to be workable for you, I think you should prefer a framework that helps you to build apps faster.
    If your preference is to use a platform fast to code, implement and has bigger developers community with lots of ready to use libraries then Nodejs is the way to go.
    In the long run the ready to use code libraries will help you to develop anything faster rather than developing it from scratch.

  14. 2

    What kinds of web-based products are you interested in building? Do you even need a framework? If you want to create web applications my recommendation is to make sure your fundamentals (Javascript, HTML, and CSS) are solid first. Then pick frameworks that leverage those skills and add the capabilities you need for the task at hand.

    1. 2

      Very good questions, Eric.

      I have a few ideas floating around. They range from social platforms to "simple" todolike apps. So nothing set in stone currently.

      But as I know it will involve webdev I want to learn a stack. Mainly because it interests me 🙂

      You are right about the fundamentals, will nail them first!

  15. 2

    You are used to static types and OO from C# and C++, so I'd go for ASP.NET Core. The nice thing here is there are few decisions to make after that because you will be using C# and ASP.NET Core (so you don't need to choose a framework) and there is plenty of help on Stackoverflow on this topic.

    You also want to choose a frontend tech you want to use. If you are doing basic stuff, JQuery or vanilla JS is good. Otherwise React/Angular for more complex requirements - and I choose these because they are popular, supported by massive companies and there is a lot of help out there for them, and a lot of courses.

  16. 1

    Based on your background (c/c++) and other factors (popularity, opportunity etc) I recommend you go for JavaScript. One language to rule them all, i.e. platforms.

    Your can do:

    1. Back-end: nodejs
    2. Front-end
    3. Mobile apps: React Native (though I prefer Flutter nowadays)
    4. Desktop apps: Electron

    I am developing web apps since 2002.

    Edit: I like Elixir and I think it has a lot of potential

  17. 1

    Personally, I've learnt not to get too obsessed about scalability (which I was). The moment you run into scalability issues you can already afford to rewrite the app and also you have a lot more insight into what you should invest your time/money in.

    As far as frameworks go, I'm not a frontend dev, but I've used both React and Vue in the past and personally I think Vue is a little bit friendlier. That being said, I'd recommend going with a batteries-included pack. I went the bare-framework way before and while it wasn't too complicated to set up the boilerplate it just took a portion of my time I could've spent developing other things. So for my last project I went with nuxt.js and it worked like charm.

    Regarding backend languages - I found that picking any language that is quick to write code in is a good choice. Besides they're all very similar.
    So even though I despise JavaScript, I'm actually writing most of the code in node.js - purely for this reason. It allows me to prototype rapidly, there are a lot of libraries and if you want to integrate an API there's a good chance there is an official one for node. Conversely, the same cannot be said about many cool languages such a Clojure (😍), Haskell and I suppose Elixir as well.

    1. 1

      I feel the scalability part... Its not that I will create something that will get a million users over night. There will be time to work on that if it would get tracktion.

      I also do not want to go full barebone mainly because developing speed. I currently in the process of defining/finding a problem I want to solve.

      The rest of the time I just want to learn something so that I am ready to go at my valuable idea when it hits me 😅

      Thank you for your information 🙂

  18. 1

    If I were you I'd spend a bit of time making a simple ToDo list in some of the more popular stacks. This will give you an idea of what the learning curve will be and what 'feels' right to you.

    There's also a really great survey carried out every year called State of JS, which will show you what the dev community think of various technologies and what the most popular stack pieces are currently. https://2019.stateofjs.com

    In my humble opinion, the most exciting tech for me to emerge in the last few years is definitely GraphQL. This makes interfacing with databases a breeze. I couldnt imagine going back. You can use Prisma if you'd like to host your own GraphQL backend, or if you don't want to get too technical you can use a SaaS like GraphCMS.

    As for the front end, I think the most time saving component here is using a UI library like Material UI. This will save you a LOT of time as opposed to rolling out your own UI.

    1. 1

      As there were so many different suggestions I will probably do just that. Do some small project in a few of them and then just pick the one I have fun with!

      Thank you for your input!

  19. 1

    “ Preferably it would be a stack that is fast for solo devs as I am starting on my own.”

    On your own, as in you want to be a freelancer? Can you elaborate?

    1. 1

      I wanted to say that I will do all of the work on my own, means fullstack. So I have to find a stack that gets me going relatively fast, is robust and scalable in the future.

  20. 1

    This comment was deleted 4 years ago.

  21. 2

    This comment was deleted a year ago.

Trending on Indie Hackers
Getting first 908 Paid Signups by Spending $353 ONLY. 25 comments I talked to 8 SaaS founders, these are the most common SaaS tools they use 20 comments What are your cold outreach conversion rates? Top 3 Metrics And Benchmarks To Track 19 comments How I Sourced 60% of Customers From Linkedin, Organically 12 comments Hero Section Copywriting Framework that Converts 3x 12 comments Promptzone - first-of-its-kind social media platform dedicated to all things AI. 8 comments