September 7, 2017

How do you choose your development stack?

When building a new web app, project, website, how do you choose your development stack? Nowadays there are hundreds of ways one could go about building the same project.

I am a entry level software developer wanting to start a side web project, but I feel stuck in analysis paralysis. I don't mind trying to learn new languages either. Any thoughts or comments are appreciated! Thanks, guys!

  1. 6

    If your goal is to learn a new language, that's fine - pick something that looks interesting, or that furthers your career development. As a web developer: rails, python + django or node are all decent choices with wide adoption, and you should probably know at least one of them.

    If your goal is to start a business, pick a tech stack that you know and that lets you move fast with safety. Learning new tech is not the goal here.

    1. 2

      :+1: what are you doing? Learnign a new language or shipping a business? If you're shipping a business, use something that's productive for you. I'm not a huge fan of PHP, but if you've been using it for a couple of years, pick a framework you know and like and ship the business. Same goes for almost any language except that as a solopreneur I'd be a bit cautious about using Java as the base of my dev stack - generally, it's a little more optimized for larger teams (although Scala, Groovy, etc could work).

      Personally I use rails as it has everything I need, ruby makes me smile, I'm productive in it and I have a business to ship.

      I think the advice to pick Elixir or Phoenix certainly isn't the only good advice, but it's what I'd do if I was more interested in learning something new than focusing on shipping the business with a stack I'm familiar with.

      Above anything else, just pick something and go for it. Don't use the excuse of picking a tech stack to be a reason to avoid doing the stuff that counts - finding an audience, connecting with them, trying to solve a problem and then iterating.

  2. 4

    When building a new web app, project, website, how do you choose your development stack?

    I choose whatever I'm comfortable with!

    Your customers don't care about what stack you use as long as your product solves their problem(s).

    If you are completely lost, use one of the well known web frameworks:

    • Django if you like Python

    • Ruby on Rails if you like Ruby

    • Node if you like JavaScript

    • Laravel if you like PHP

    • Phoenix if you like Elixir

    • Spring if you like Java

    They are all perfectly fine and will get the job done.

    1. 1

      There's a great article echoing this sentiment that's worth a read: The Boring Stack - The Best Way To Build Interesting Things. Assuming one's interest for the product is greater than the tooling used to build it and one possesses a general level of competence in a framework mentioned above, this would apply.

    2. 1

      Simple, good advice. What about when you want to learn a new language? Purely based on preference?

      1. 3

        As others have pointed out, why are you wanting to learn a new language? What is the goal?

        If the goal is career advancement, then you are probably better to pick any one of the languages and frameworks that @jayfk listed. Don't overthink this one. You can check trends and read opinions forever, but the fact of matter is, there will be ways to advance in all of those languages for years to come. They are not going away any time soon. Pick one and go with it. If you are passionate about development, it won't matter in the long run. Languages will come and go and you will pick up more than a few along the way and you will advance in your career.

        If the goal is curiosity, then I would choose whatever seems interesting to you. This is purely based on preference. Select a small project, and this is important, one where you have no expectation of making an income from it or even showing it to the public, and try building it in the new language.

        However, as many have already said, if your goal is to create a project that will eventually earn you an income and will have a customer base, go with what you know.

      2. 1

        Don't learn a new language if you're starting a company. When you start a company, you need to be completely focused on building your MVP and getting customers. Any time spent learning a new technology is wasted. Everything should be as simple as possible.

        To help you get into the mindset, think about how you would build the MVP in only 24 hours. How would that change your mindset?

        If you want to learn a new language, that's fine! It's good for you. But don't do it when starting a new company.

      3. 1

        I would go with Elixir and Phoenix.

  3. 3

    Use what you know. As a junior dev, you're going to learn lots of new things in new ways, but ship something that works in what you know. Facebook was (and in some parts still is), hacky PHP. There are companies out there doing 9-figure revenues with Ruby, ASP, you name it. The biggest bank brands in the World still use COBOL in the heart of their systems. Just ship.

    If you are looking to learn something new and want to not worry about devops, I'd think about either whatever works for you supported by Heroku, or - if you're a little more adventurous - take a look at and deploy a Lambda/FaaS setup so you never have to worry about scaling anything and your runtime costs are low.

    That's what I'm doing with all my projects in future, and I've been dev'ing for over 20 years.

  4. 2

    I simply have need to jump in here, even though I'm not quite experienced with starting any businesses.

    As @jayfk listed web frameworks -- these are proven to be good to get things done, mostly because of communities around them. Whenever you have some problem, most probably someone experienced the same or at least similar to what you are struggling with at the moment. This results with instant find of solution on StackOverflow, GitHub issues etc. And this is what makes you more productive.

    And as @rorygibson said you can always choose some framework to challenge yourself, but don't expect to everything go as easily as if you chose framework you are more familiar with.

    I think for starting business project you should go with proven stuff, but don't hesitate to try other frameworks and tools by side.

  5. 2

    It depends on what your primary motivation for the project is.

    If you're trying to get an idea off the ground today and you're building a web app, use Meteor. If it's a mobile app, use create-react-native-app w/ Firebase.

    If you're more interested in using the skills and experience from this side project to get a job, then pick whatever excites you. I use Python/Django/React at work, and Meteor/React off hours. I like both stacks, but as a solo dev, especially entry-level, you'll likely be orders of magnitude more productive on Meteor.

    Also, you want to be able to focus on your customers, not your stack. Meteor is truly phenomenal with respect to documentation and zero-dev ops deployment.

  6. 1

    Keep in mind that if you are starting a side project, and using it as an opportunity to learn a new language, that if things take off and you need to hire someone, that person also needs to know that language. So it could restrict you somewhat or slow down progress if your new hire needs to learn it as well.

    I'm a fan of KISS.

  7. 1

    If you're an entry-level dev, stick to learning just a few things at a time. Otherwise, it can get overwhelming -- in my experience.

    I'd stick to a tried-and-trusted framework. Ruby/Rails might be a great choice here. I've never tried Django, but if you're more familiar with Python than Ruby, that seems like a great start.

    If you're familiar with JavaScript, go for that and try out Node.

    Personally, I've done all my side projects in Elixir/Phoenix, but I'm in love with the Elixir language and wouldn't necessarily recommend such a new language to someone dipping their toes in the water. If I didn't know Elixir, then I'd go with Rails. Stick to something that has plenty of documentation and Google-able answers to your questions.

  8. -1

    This comment has been voted down. Click to show.