Stanford GuideEST. 2016

Complete beginners guide to building software products

General philosophy

Be lazy

Use tools that mean you don’t have to do any extra work if at all possible.

Instead of coding a homepage, write a blog on medium and set it up with a custom domain

Instead of building an iPhone app, search google for “iphone app builder” and use a tool that can build a basic app in 5% of the time

Instead of building a full website, use https://webflow.com/, https://www.strikingly.com/, https://www.squarespace.com/

Instead of starting a custom website from scratch, use https://pixelarity.com/ or http://www.modulz.co/

Instead of building a custom iPhone app, make a prototype with https://popapp.in/

Instead of building a custom web app, build convincing mockups with https://www.omnigroup.com/omnigraffle/ (look up the bootstrap stencils) or https://jetstrap.com/

“I think a really good site for full stack web development is www.freecodecamp.com — which is a project based way of learning. Other people have said just dive right in and build things from small projects to more and more ambitious ones. Which one would be the best?”

Personally, I find the most effective approach is for me to decide what I want to build, and then use tutorials but bastardize them so that I build the thing that I want to build. If I don’t understand well enough to use the tutorial to build something different, then I’ll quickly go through the tutorial, and then as soon as possible get onto building what I want to make.

I think going project first — starting out with something you want to create, need to create — is more effective than learning first. It gives stronger motivation.

If your goal is to become the best competitive programmer in the world, then perhaps you should do learning first. If your goal is to be good at building products that people love, then I believe project first is the way to go.

So to directly answer the question — Don’t use freecodecamp. Identify what you want to build, do tutorials *just* until you understand how to get started building your thing, and then start building what you want to build, Googling 5 times a minute to understand everything that you need!

Web

Read http://www.atechprimer.com/

Read https://news.ycombinator.com/item?id=12774616

To learn design (for most products, design is a crucial part of the product experience): https://hackdesign.org/lessons and https://github.com/cjbarber/learn-design

If your site has no interactivity, just links — then you’ll just use HTML and CSS

If your site needs to have basic interactivity — then you’ll likely just use HTML, CSS, and some Javascript (perhaps with Jquery, the most popular front end Javascript library)

If your site needs to remember user accounts, and so on — then you’ll likely use either Ruby on Rails (rails is a web framework, that uses the programming language ruby), Node + Express + React (node is a backend server, express is a basic web framework, react is a frontend library), or Meteor (meteor is a web framework, that uses the language Javascript and is built on top of node, it’s well suited to beginners, and has a good tutorial at discovermeteor.com, it’s becoming less popular but that’s not really a big deal if you just want to build some products efficiently)

iOS

Unless you have very specific apps in mind that require native code, seems like the best method would be to use something like https://getexponent.com/ so that you learn JavaScript and React which will be useful for web programming also

Other — AR, VR, Data Science/AI

AI/machine learning: https://news.ycombinator.com/item?id=12713056

I don’t yet have recommended resources for AR/VR.