Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Zero in Programming – What do I need to learn to build websites/apps?
15 points by totaldude87 3 months ago | hide | past | web | favorite | 13 comments
Lets say I Am a noob in programming (I AM) , would like to spend 2 hours every day to learn new programming language(s) which could help me build websites (and/or) Apps.. where should i begin!

To build apps... the best way by far in my experience has been to simply find an objective app and to build it. What you need to develop as an app developer is an intuition about how to structure your project for it's long term goals, and you don't get that intuition by following tutorials telling you the right way to do it. It's developed by using the wrong patterns hitting face against the wall over and over again.

You mention websites and apps, so of coarse you'll want to focus on JavaScript in the beginning as it's a good enough language and the only language that allows building both decent websites and apps, unless you want to use some sort of transpiler to JS, which is probably too much infrastructure in the beginning.

Don't ignore software development practices, but IMO in the beginning:

1. Find a problem you want to solve. This could be an already solved problem, like a Todo app. It can be more motivating if you have a problem that doesn't have an existing solution though, but will require more creativity and design on your part.

2. Learn as little is possible to get things working, and keep on adding features. When you add features, you'll notice that some of your earlier decisions make new features harder or easier to implement. This is when it's a good time to research development patterns, because you have a very practical example of why the patterns are important.

3. Do not be afraid to re-write significant portions, or throw away code. Thinking of different ways to write you project and re-writing will give you a great intuition for evaluating frameworks (code libraries that define the architecture by which you write your code) and even writing your own.

4. In the beginning, prefer to use lower level tools (avoid to many frameworks or libraries). As you build bigger apps, you'll start to appreciate the value of the frameworks and understated where they're appropriate.

The only other thing I would say is to find a mentor. When run up against issues in your projects, it can be hard to discover the patterns you need to fix it, and a mentor can save you a ton of time.

Good luck!

There's 2 ways. First is the reading other people's code method. You find something that's open source, like an existing app and read through the code to figure out how to make changes yourself, usually through trial and error. In the process of this you refer to documentation and books/tutorials.

The other is you work through a text or course before hacking stuff together. Most people don't have the will to do this, they lose interest after one or two chapters unless they are either paying for it (school) or they already have been hacking some program and want to know more, which keeps them interested in the book. There are endless book and course suggestions, pick something with a lot of exercises (most edx/moocs have too few) like PAPL https://papl.cs.brown.edu/2018/index.html only because programming is often learn by doing. No local installation is needed at first either https://code.pyret.org/

HTML/CSS is a good place to start as it is super easy and the place where many developers start. Also, it can be used to build web apps & mobile apps. From there, JavaScript will be needed at some point for a web app. Xamarin and C# is a good option for mobile apps as you can develop for both iOS and Android.

I would also recommend avoiding frameworks and libraries to begin with, until you have grasped the language. Start a project and learn while you build that project. My first project was a social network. It taught me pretty much everything I needed to know about frontend and backend development. I think the best place to get started is Udemy as they have some very detailed courses and almost always have discounts, so they do not normally cost too much.

Hope this helps and good luck.

Off topic: where are you from? (Curiosity)

I live in the UK.

That's actually a difficult question!

Javascript is probably a good bet to get started with, stay away from frameworks (angular, react, vue etc) until you know the language. Once you know a language you can pick up any framework crazy easy, but too many people do it the other way around and get stuck.

website: HTML/CSS + Javascript + PHP (or any other backend language like Python, Node.js etc)

Or learn a CMS software like wordpress, u can easily build a website using it. (but to customize it to meet your 100% satisfaction, you need to learn the above techs)

If you want to be full-stack web developer, u need to learn some web server knowledge, basics, etc. But its okay to not know it.


web app: web app can be built by using HTML/CSS + Javascript + PHP (or other back-end language)

native app: (those APP in the ios store or Google Play)

you have to learn the native programming languages, in Android case, you need to learn Java/Kotlin, in IOS case, you need to learn Objective-C/Swift.

That's pretty much it.

Possible start with requirements gathering. Knowing what needs to be delivered is critical.

Being able to sketch or wireframe initial design and step through the steps that users will do will help.

Find open source projects. You find those on Github. For each try to read its inner workings. Familiarize yourself with the syntaxes, the structures and so on.


You can find excellent books on many different languages

Thanks for sharing

Hey Totaldude,

I taught myself programming over the course of a couple of years, having started from pretty much zero. Now I am working part time as a developer for a startup, and run a business of my own - having built not just the website and app for my business, but also developed the hardware and firmware!

Below are the classes that I took to get started along with a bit of a storyline:

http://learnpythonthehardway.org/ - I started this a while ago and never finished because I got distracted. It's kind of bare bones, but will get your wheels spinning.

https://www.edx.org/course/introduction-computer-science-har... - I started and got all the way through the last problem set. This course is EXCELLENT: wonderful lectures, challenging assignments, expansive community (facebook group, reddit.com/r/cs50, stackoverflow, etc). If there was only one class to pick from this list, CS50 would be it.

After CS50, I wanted to get good at a specific language and decided to learn Python. It is a very flexible and powerful language. It's very clean syntactically making it easier to learn. You can use if for data science, for little scripts, for web development, for pretty much anything.

https://www.edx.org/course/introduction-computer-science-mit... - i started this late (not self paced like the CS50), and played catch-up a good amount of the time. A solid class, mostly did it because I wanted to get good at Python. I got most of the way though this course as well.

https://www.edx.org/course/introduction-computational-thinki... - I started this class next because I wanted to use Python to crunch numbers, and eventually get into machine learning. I made it just a few weeks into this course before getting distracted with my own projects.

It's not just about learning a programming language, but learning to program. With two hours a day, you can churn through the CS50 course in a couple of months, during which you'll build a website & webapp. It'll definitely be a challenge (it took me a couple of tries to make it all the way through), but it's an amazing course - make sure to take advantage of the huge community.


It's a nice tutorial, gradually increasing in pace. I'd recommend you beeline towards getting the certifications, and then do the exercises that lead you towards that.

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact