Ok I know this has been asked to death on the internet!
But what tech stack would you recommend for a person who can't code. I know many indie hackers are software engineers and the answer is always "use what you know". But if you don't know anything?
Personally, I did a two week in-person class in Django a few years back. It was a bit murky but I could get basic things to work. On the other hand, I dabbled in MERN clone projects off YouTube for a couple months as well. Node was pretty hard for me to understand.
I have a few business ideas and my approach is to just build everything on Bubble.io. However I would like to put in an hour everyday and just progress towards something in case something takes off and needs to be rebuilt.
I just want to pick something and not look back. The tradeoff of course is speed of development and learning curve. I've read of people struggling with React and Node but then eventually being able to crank things out.
All in all, what is a sustainable stack to learn?
Obviously the ideal tech stack depends a lot on what type of product you want to build.
But for me personally, I knew that I wanted to build a SPA CRUD app with a reasonably complex UI, so I went with React for the frontend + Firebase for the backend (Firestore, Auth, Hosting, Cloud Functions, etc.)
Initially, I used Create React App for my SPA, but then migrated over to Gatsby to have one platform for both static pages as well as the SPA. But for beginners, I would still recommend starting out with CRA.
At the beginning, I looked into MERN, Node, Django and Flask, but all of those just added unnecessary complexity that Firebase just takes care of for me so I can focus on the SPA. Also, for Django/Flask, I hated switching between Python and JavaScript – both are languages are fine to me, but I just didn't like the context switching. So now, everything for me is all React, all JavaScript.
Hope this perspective helps, let me know if you have any questions.
Good luck!
I know how to code and stuff but I think firebase is the way to go. If you need sql, go for supabase. It's the 21st century, if you don't have any preference just go with the things that'll make your life easier. For example, firebase has a way to delete a user. Of course that's not that hard to do yourself but this will make it really easy. I noticed a quick Google search has plenty of tutorials for firebase and Next (so you can have better SEO like another comment mentioned). The users don't care what backend you use.
Edit: django was the first web framework I actually knew btw. I've used spring from java at work and nodejs as well. But I still think firebase can handle everything and it's free to start with.
Thank you for the thoughtful reply. Most of my ideas are niches of social bookmarking or marketplaces so basically Reddit or Airbnb clones. Nothing super real time necessary (though maybe messaging) to select react outright.
But imagine you have no background. How long to get a Reddit clone up and running? As in time to learn and time to deploy using react + firebase? I know it’s like asking how long a string is. But assuming a college educated non-technical professional services worker with 15h a week to spare?
I'm glad you mentioned what type of app you wanted to build. In your case, for something that has a lot of public-facing content like Reddit, Airbnb (or Indie Hackers itself for that matter), I think you're much better off learning Next.js on top of Vercel for server-side rendering. That way you get SEO friendly, server-generated pages (that can also be pre-rendered for speed).
Firebase really isn't built for SSR (as far as I know). You could create a reddit clone as an SPA, but SPAs are not SEO-friendly.
I'm building a productivity app (tasks, time tracking, notes) which makes sense for an SPA since all of the user data is private. If I ever wanted to add the functionality for users to create SEO-friendly public pages (for example like what Notion does), then I would probably look at Next.js too.
For me personally, it took me about 1-2 months to get good enough with React to build a basic to-do list app (I already knew HTML/CSS/JS beforehand), but it took me about a year before I had enough skills to build exactly what I wanted ... for me that meant learning redux (including redux-thunk, redux-toolkit, and implementing normalized data structures), routing, react-dnd (drag and drop).
The devil's in the details. I think you could probably build a basic reddit clone in 3-6 months, but you could spend another 1-2 years polishing it and adding features.
I strongly recommend react. Not only is it great for UI building, but it has an incredible ecosystem of packages with pre-built functionality. react-dnd (as well as react-beautiful-dnd) is a great example. I would hate having to build drag-and-drop from scratch. Yes, there is a learning curve, but for me it has paid off tremendously.
I am a software engineer using Rails/React in my day job and built a side project using Django. I recommend Django.
Benefits:
I built https://www.fixmybikeathome.com/ using Django and have no regrets. Postgresql DB.
Very nice site. Ok so I guess Django is a pretty safe choice. But if I think I will be using react anyway (as someone else praised it a lot). Why not build with a React friendly backend right from the beginning?
I'll teach you how to program with Ruby on Rails for free as long as you're okay with me making YouTube videos about the experience.
DM on Twitter if you or anyone reading this is interested. My handle is @abe_orellanes
Indie is lonely. Indie 2.0 is here - 2 people, twice as much fun
hey @k_diggity are you a business/growth/marketing person? If so why learn to code? There are some great devs/builders here (me!!!). And likewise I don't want to learn marketing. I would rather share the fun and find a cofounder/partner.
We brainstorm our ideas together, decide the best one to start with. Then I build it and you sell it. We share the revenue.
Why does everyone want to be master of everything!?
Indie means not working for MegaCorp. It does not mean not finding a cofounder and sharing a great indie journey!!
While I agree with both @stevenkkim and @lorenzosignoretti (I use both JS and Firebase), to me the answer is whichever you are most comfortable and nimble with. It sounds like even as a beginner you were able to get things going with Django - I'd say stick with that, and as the needs of your app grow, you will find yourself Googling how to expand your capabilities on top of Django and learn what you need to learn in the process.
One thing I'll say though is I don't know how effective an hour a day will be. I was a beginner coder about 2 years ago teaching myself full-time, on my own, and as a beginner you will really want multiple hours in a row to work through problems. Even now as a more experienced programmer, I sometimes need close to an hour to get into the flow.
I wish, I just will have a very demanding job coming up and a newborn - but will try to squeeze in where I can.
I'm building a full stack app after learning how to code for about 10 months. I think the best option for us noobs is serverless & jamstack. My stack is pretty simple:
I know a lot of devs hate the idea of serverless, but it's a boon to us noobs. I can't imagine how long I would take to learn how to manage servers. Plus the cost of bootstrapping via serverless is effectively $0.
One more thing about React is that if you want to open up your possibilities to mobile apps, you could use React Native for that. No need to relearn a new language. Pretty sick imo.
I have a lot of experience, but I personally also have my preferences.
If your goal is more to do something entrepreneurial rather than get a job, I'd say the most important thing is to focus on a newbie-friendly stack that makes devs productive.
The worst choice people in your situation commonly make would be to use JavaScript on the back-end. It will mean more time, needing to learn more of a complex language, having to deal with asynchronous logic throughout your app, and having a large fragmented ecosystem at every level.
Though my own personal choice is Elixir, which fits my experience and demands, I'd suggest Ruby. It's more beginner friendly than JS, has a much bigger ecosystem than Elixir (and more than enough resources and help for any beginner), and it's got a single dominant, highly-productive web framework. Rails has never been the most popular web framework, but it's punched way above its weight for entrepreneurs.
The next best choice would be Laravel, the PHP framework inspired by it.
Anothing great thing with both of these frameworks is their communities have great projects that eliminate the need for heavy-weight front-end frameworks like React or Angular.
Interesting. I've done research for about a week and these big 3 keep coming up - Rails, Laravel and Django. I was leaning towards Django mainly due to having at least a bit of experience and that Python could be further used for scripting or data analysis if it comes up. But honestly my SOLE criteria is what compresses total time to market (time to learn and time to mvp).
That's definitely Rails. Even though Django has in many ways borrowed from Rails over the years, there are things it can't do and never will be able to due to Python being slightly less expressive than Ruby.
The router DSL is a perfect example. I think Django is fine, but Rails is either the same or out competes it in almost every way. The only reason Django is close to as popular as Rails is that Python is many, many more times popular than Ruby.
A lot of programmers really resist learning a new language and want to use what they already know even when it's a poor fit. I try to pick up one every year or two, so I'm more in the "use the best tool" camp than the "find the most flexible tool possible" camp.
That's why I don't feel devoted to a specific stack or even recommend the one I use most often to people who have different goals and coding experience.
Edit: just say the part about scripting. Ruby is a much nicer language for scripting than Python, due to its Perl-inspired background. You can literally execute shell commands just by putting them in a string delimited by backticks instead of quotes.
Nocode is great but if you want to dive into coding, I would suggest either JavaScript or Python. With JS, you can use it both on front and backend. Python is pretty straightforward and since you have taken some django lessons, you can adapt quickly.
There are a ton of tutorials on Youtube. For JavaScript, I suggest looking into Traversy Media and for Python Corey Schafer has one of the best tutorial. Along the way you will find other great resources.
No need run after cool frontend frameworks (React, Vue) for now, just use plain JavaScript and even jQuery if you want. Start with small projects like URL shortener, Blog, Web directories just to get the idea of how things work. Learn basics of database, I prefer SQL (MySQL) over No-SQL (MongoDB) but either is fine. Then move onto APIs (both using others and building your own).
Don't try to look for best practices every time. My philosophy is "If it works it works". You can always try to implement it in a better way later when required. Its very important to build something otherwise the motivation dies pretty quickly and coding becomes boring.
Lastly share what you have built in communities like IndieHackers, Reddit, Twitter and Producthunt, take feedbackes from others and hoepfully keep on building new stuffs.
Thanks for the insight Sagunsh.
Hi @k_diggity 👋,
I work as a Software Engineer by day and as a IH by night. Up until 3 months ago I was in a completely different field (marketing and advertisement).
I would 100% recommend picking JavaScript up. It's subjectively easier to learn than other programming languages (that doesn't mean less powerful). As you grow more confident with the language, React and Node will be quick to start playing with. Once you master those, you have a great starting point for both the frontend and backend of your project.
Proof that my money is where my mouth is? At Adflow, we are doing everything in TypeScript (which is basically JS with a type system).
Thank you very much for your prompt reply. My only concern with the Javascript ecosystem is time to be able to build MVPs. For example, one software engineer estimated it would take 3 years to learn (https://www.quora.com/How-long-does-it-take-to-learn-the-MEAN-stack-and-launch-a-dynamic-website-ex-a-basic-inventory-management-system) to build a basic dynamic app (using Angular though but still).
On the other hand with Django, people are saying how fast everything is to develop and learn. I do know that JS is on the upswing and there is a lot of material and its only one language on both sides so I am completely lost.
You never stop "learning", even after years of practicing with a language. I think it's the beauty of it 😃.
With that said, I can't comment on the specific experience of the person who wrote the post you just linked, but I'd argue you could go to great lengths in a lot less. If you spent a couple of hours a day learning JS/HTML/CSS, you would probably be able to start practicing on your own projects in 3-4 months.
As to Django, I have used it in the past (and Python in general) but not to enough extent to tell you which one would be better for sure. I think you wouldn't be wrong either way – just know that in the current world we live in you'll probably have to deal with some JS anyway at some point if you do web dev.
This comment was deleted 5 years ago
This comment was deleted 5 years ago
I agree with you, except on start with a framework. I think it depends on framework.
If you want "play" a little check Laravel. It is easy to learn, has a very big community. A lot of examples available and a lots of websites built with it.
I think the best way to learn by doing. Just try. There is no wrong.
Websites made with laravel:
laracasts.com
usefathom.com
This comment was deleted 5 years ago
I agree with you, that we should first learn a language. But it is more enjoyable you learn something by building it, try/error. And Laravel offers an easy environment to get started. And you can get used to it, while learning
"For learning purposes, it doesn't matter what you choose. "
But this is the area where I'm trying to optimize. Let's say there's 2 components: time to learn and time to deploy MVP. If for Django the sum is 3 months and 2 months and for MERN it's 9 months and 6 months then I would go with Django. A lot of people push Django (and Rails and Laravel) for its rapid learning and rapid development. On the other hand the React + Node world seems to be growing in acceptance so maybe the investment is worth it.
In terms of actual projects, my ideas so far are generally social bookmarking based (similar to Reddit) or marketplace-based (e.g. Airbnb). Which is why Bubble is enough to validate.
Don't take this the wrong way, but you just won't know enough to optimize up-front. And that's ok, the time you spend building is time spent learning. The major options you've heard of are going to be very close to equivalent for your first few projects, and after that you probably won't need to ask.
Try to find something open source that looks sort of like what you're trying to build, and use it as a model. Supplement with resources that feel accessible for whatever stage of learning you're at.
Maybe do a quick integrity check with more experienced folks ("Hey, does it make sense to build a web site in Fortran?") to make sure you're not barking up the wrong tree entirely, but don't get sidetracked by the never-ending discussion of which framework/language/stack is optimal for which use-case.
As a beginner you're much more likely to lose 1/3 of your productivity by listening to all the optimization arguments than anything else – it's a trap.
This comment was deleted 5 years ago
As far I understand Django covers the Models and Views to the equivalent of MEN in MERN, frontend is whatever you like so could be DTL. It seems in general could be pretty fast though it wouldn’t have all of the new dangled features of modern tech but can cover 95% of jobs.
This comment was deleted 5 years ago