January 17, 2018

What is the most useful programming language for indie hackers?

Hi guys,

my background is in marketing but I have a couple ideas that I want to build.

What are the best programing languages to learn that I could use to build different side projects?

  1. 4

    I would definitely consider Python as general purpose language because you can change from simple scripting, to backend development to data analysis.

    Obviously I consider Ruby on Rails to be an equivalent in terms of "language" features but the data analysis advantage makes me lean towards Python, because sooner or later you would have to crunch numbers in order to understand what is happening with your project.

    In modern days you can't do anything in the (http) cloud without a basic knowledge of javascript so add that to your list.

    1. 1

      Thanks a lot!

  2. 4

    If you have no skills in programming, start with Ruby on Rails.

    1. 1

      I'd also recommend Rails for web applications.

      If you want to start with some skills that you can immediately apply to other tasks, try this free online book: https://automatetheboringstuff.com/

      Python is solid, and Django is a good alternative to Rails.

      I think that those will be easier than Firebase, because they provide structure and don't lock you into a single, non-free service.

    2. 1

      Absolutely this ^^. Once you learn RoR (and HTML/CSS/JS/DB/APIs/etc), you can branch out into other languages (PHP/React.js/Vue.js/etc) to accomplish any task.

      I started to use RoR on my current project, but wound up going with the Ember.js/Firebase/Google Cloud Functions route (Serverless is amazing).

  3. 3

    As a (mostly) JS dev myself, I'd say Ruby.

    Ruby on Rails is the best tool for quick prototyping I know of with a lesser step learning curve.

    I wouldn't start a project with it now because I think I more productive with Node.js and React. But if I had to start from the ground up, I'd go with Rails. There are lots of stuff ready to use out of the box compared to the Node.js ecosystem where you have to fiddle quite a bit before having anything useful for the end user. Eg, with Express (a Node.js framework) you have to glue lots of pieces together to have the equivalent of Rails.

    Python would come next on my list, but I don't consider it as beginner-friendly as Ruby.

    1. 1

      I think that Python is newbie-friendly, but Django doesn't do as much out of the box as Rails. I'd recommend Python over Ruby, except that Rails is such an easy way to build things online.

      1. 1

        I think it would also help to know what kind of side projects OP is interested the most

        1. 1

          True. I'd still recommend starting with Python or Ruby over JS though. JavaScript is harder to learn, because it forces you to deal with things like async in the early stages. Or if you do something like 1+"2" in JS it will evaluate to 12 (confusing), but Python will fail and tell you what you did incorrectly.

  4. 3

    The one it is easiest to find help for.

    In general that means boring, old, and often used ones like maybe Ruby on Rails and even PHP if your projects are for the web. For mobile pick whatever is default for the platform (Java on Android, Objective-C or Swift for iOS).

    The choice is influenced by whether you have someone in your network/friends who can help you out. Know an Elixir programmer who's happy to answer a question here and there? That might be a better pick.

    Don't try to find the best, fanciest whatever. Any language mentioned in this thread has been used to create anything from small to huge projects.

    If you look at a language and go "ok that makes sense to me" then switch into building the ideas you want to build. Google whatever problems arise. Don't spent a year picking and learning fancy new language/framework. Just go do it.

    1. 1

      Totally agree on the boring stack part.

      Also, I know it is an example, but I would never actually recommend Elixir for a beginner even if he has a close friend to ask for help. There are lots of caveats that wouldn't be trivial for someone who has no experience in other programming languages.

  5. 3

    Learn some HTML and CSS, then look up Firebase (Indie Hackers was built using Firebase).

    Firebase will take care of authentication (logging users in and out), database, storage, etc. all the tricky backend stuff that becomes easy with firebase (and no backend code, just some javascript you need to add to your html files, and an easy to use interface on the web).

    1. 2

      Thank you! What's the place to learn how to use Firebase?

      1. 2

        Start here https://firebase.google.com/docs/

        Also they have some nice and small youtube tutorials especially to know how authentication, storage, db, hosting etc.

        I am able to get the social media authentication system, hosting, simple crud UI with-in 2 days for my web application https://www.watermark.ink

        Feel free to ask me any questions regarding firebase.

  6. 3

    Essentially, you need to master 3 skills:

    1. Client front-end - almost certainly javascript or a javascript framework

    2. A server-side language for retrieving and saving content; everyone has their own favourite from the old stand-by PHP to node,js (javascript on the server)

    3. Basic database skills to put data into and fetch data from a database such as MySql or Postgres.

    How do you decide?

    A. Is your application mission-critical or likely to have a huge customer base who need to use it intensively? If so, then you need the fastest and most robust tools available.

    B. If the answer to "A" is "No" then most modern-day languages perform pretty well and are widely-used in many different deployments around the world. Ultimately, therefore, it comes down to the way you learn, the way you think and how much trust you wish to place in the new toys which may be here today and gone tomorrow.

    Be wary of frameworks (essentially ways of protecting you from the nuts and bolts of your chosen language). They can be here today and gone tomorrow.

    If you're looking for longevity in your projects and they exist to serve a defined user need, I'd look at tools which have a good track record and which are still being actively developed and supported.

    If your projects are flightier (i.e, you can make a splash today but know full well the market will have moved on next year) then I would go for more modern, flashier tools and frameworks which make you look cutting edge.

    Ultimately, of course, few people even care what is under the bonnet provided that the application fulfils a need or desire and does so without undue perceived delay. That perceived delay is not just a function of the stack you use but also how efficiently your code is written and how powerful the supporting hardware and infrastructure is.

    Short answer: it depends! And it depends mostly on you.

    1. 1

      Wow! Thanks for the extensive answer!

  7. 2

    I would definitely recommend HTML, CSS and PHP.

    I think is easier to start with Laravel (PHP framework) than Ruby on Rails. I have seen a lot of people struggling to learn RoR, it's an awesome framework, but it has a lot of magic under the cover, you can do a lot of things without effort, but there is some point where, if you don't understand what are you doing you will suffer.

    Laravel is a lot easier than Rails, the documentation is way shorter.

  8. 2

    +seems like no one is mentioning .NET Core... builds, works and runs everywhere... ASP MVC CORE 2.* is great... i used it to build https://curriculum.co.ke/ . Front end, just learn HTML5, CSS3, and "Normal" JavaScript... when i say normal JavaScript, i mean mature JavaScript that can atleast run on IE 11 or Edge 12, don't start with the new simple but incompatible Node.js and Chrome browser JavaScript...

    1. 1

      Your website isn't displaying on mobile, why is that? I figured with standard HTML/CSS & JS, it should work on all devices, though sizes might differ, so why use ASP? Not targeting, just curious!

      1. 1

        +yeah, I have disabled mobile view as I work on a completely new layout as the desktop layout will not adapt well for mobile. This ensures I avoid bad impression on mobile. It's actually two CSS lines. I will create a completely different layout for mobile, like the case with Wikipedia or twitter or facebook..... It has nothing to do with ASP. NET CORE...

        1. 1

          OK, that makes sense. Good luck!

  9. 2

    If I were starting over (and I'm not), I'd start with learning HTML, CSS, Javascript using all the free Google tools like firebase that's already mentioned.

    I think front end and backend work done in javascript makes for less things to learn.

    Google is not great on documentation, but you can make your way.

    One thing I've learned - If your idea is making real money, it isn't that expensive to rework it in a different language/framework if the logic is solid. Focus on getting an MVP whichever way you can do it quickly. Ship, Ship Ship.

  10. 2

    Coming from marketing and wanting to build products quickly, I would definitely recommend LEGO-esque systems for quickly slapping things together with minimal coding. I've seen Firebase mentioned, but there are also things like Zapier, Cloudflare web workers, etc where you can start plugging in other services and minimal Javascript.

    Which brings us to Javascript. Good for front- and backend coding. You can extend/replace parts/all your LEGO systems with more and more JS stuff (cloud functions, lambdas, whatever they're called) as you learn and as your needs grow.

    (my own stack: Python+Flask, Postgresql, Gcloud/Kubernetes/Docker, Auth0, Angular v1 but mostly vanilla JS, and the Python has also served me well with AI/NN work)

  11. 2

    I'm a big fan of Laravel with VueJs using Forge and Digital Ocean. All of them combined make it easy to deploy and manage your side projects.

  12. 1

    Ruby on Rails is the easiest way to get something up and running on the web that doesn't involve getting stuck in a limited paid-for ecosystem such as Firebase or Bubble. I'd say it's the most effective and efficient way.

    Ruby was made to be the easiest language to learn and understand and it can do pretty much anything you would need for a web app, as well as scripting. Obviously stack this with HTML (not a programming language), CSS (not a programming language), SQL, and Javascript, because sooner or later you will need those. For analytics and metrics use SQL or Rails' Active Record, which does the pretty much same as SQL for this purpose, and use something to create a dashboard for easy business intelligence viewing like Google Data Studio. SQL's basics are easy to learn, don't get to hung up on complexities.

    Ruby is also a good starting point to move onto other languages (Elixir, Python, Scala) should you need to.

    Obviously the final answer depends on what your objectives are. Maybe you want to work on Wordpress because you know a good Wordpress developer, in that case learn PHP. Maybe you want to develop a mobile app. Just do some reading on the best tools for the job first.

  13. 1

    Hi i guess you are actually searching for a full stack of languages and tools. Anyway, you should use stuff that you already know so you work fast. It is ok to learn on the way but its probably not the target (?)

    anyway for me its Scala a great language that runs on JVM, it is a functional first language, so i can handle IO/effects in a proper way. also immutable structures are a must.

    I use scala also on frontend, because of that i can share code and use generater REST api.


  14. 1

    Try Python. You can start with Flask framework.

    1. 1

      It has rather simple syntax, it has a huge ecosystem with a loads of packages for many purposes, lot of examples

  15. 1

    Try PHP, single index.php file to start with. Deploy on: https://www.heroku.com/php

  16. 1

    The best one is the one that you can get productive with as quickly as possible. I personally recommend these guys : https://anvil.works (I'm not part of them, just a very enthusiastic supporter.)

    It's python front end and back end. Drag and drop designer, great forum support (I'm active on there as well). It's very fast to get a proof of concept up. Just as fast to get an MVP and, in my opinion, a small step from both of those to a fully working, robust application.

  17. 1

    As for me Javascript (React) and Ruby on Rails - all times best framework for MVP’s