
Ask HN: Zero in Programming – What do I need to learn to build websites/apps? - totaldude87
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&#x2F;or) Apps.. where should i begin!
======
mistersys
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!

------
hackermailman
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](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/](https://code.pyret.org/)

------
hadlow
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.

~~~
HNLurker2
Off topic: where are you from? (Curiosity)

~~~
hadlow
I live in the UK.

------
new_guy
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.

------
terrycody
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.

APP:

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.

------
DEADBEEFC0FFEE
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.

------
julienreszka
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.

------
jrace
[https://goalkicker.com/](https://goalkicker.com/)

You can find excellent books on many different languages

~~~
genai
Thanks for sharing

------
koverda
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/](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...](https://www.edx.org/course/introduction-computer-science-harvardx-
cs50x) \- 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...](https://www.edx.org/course/introduction-computer-science-
mitx-6-00-1x7) \- 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...](https://www.edx.org/course/introduction-computational-thinking-
data-mitx-6-00-2x-0) \- 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.

------
muzani
freecodecamp.com

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.

