

Ask HN: Recommended books for beginner web developer - sixQuarks

I&#x27;m a long-time biz guy and I&#x27;ve recently started learning PHP (I already know HTML&#x2F;CSS).<p>For my first real-world project, I want to work with a JSON api, analyze some data in the api, and display the data on a site.<p>The books I&#x27;ve read so far have taught me all about variables, functions, arrays, etc, but I feel I don&#x27;t have a good sense of how to actually apply this knowledge yet.<p>Any good recommendations?
======
bzalasky
Here's a great collection of resources (compiled by Zed Shaw) for learning
about programming, software and web development:

\- [http://programming-motherfucker.com/become.html](http://programming-
motherfucker.com/become.html)

You'll find resources on Zed's site that will help you learn the web
development toolchain as well. You'll want a good editor, an understanding of
git and version control, as well as the command line (apologies if you're
acquainted with these already but looking to get into web development).

Another thing to remember is that once you grasp the basics, you can learn a
lot from reading other people's code (especially libraries) and the associated
documentation.

Some other resources that helped me out immensely when I was getting started
(or that I wish I'd read):

A great overview of JavaScript.

\- [http://eloquentjavascript.net/](http://eloquentjavascript.net/)

Once you get the basics of JS down, this book will help you learn how to
organize your code better.

\-
[http://addyosmani.com/resources/essentialjsdesignpatterns/bo...](http://addyosmani.com/resources/essentialjsdesignpatterns/book/)

An overview of HTML5.

\- [http://fortuito.us/diveintohtml5/](http://fortuito.us/diveintohtml5/)

While it's from 2010, most of it is probably still applicable. This was the
intro to CSS that helped me grasp the box model and DOM.

\- [https://code.tutsplus.com/tutorials/css-noob-to-ninja--
net-1...](https://code.tutsplus.com/tutorials/css-noob-to-ninja--net-12186)

This is a great book for learning how to organize SASS/CSS files in a large
project.

\- [https://smacss.com/](https://smacss.com/)

~~~
sixQuarks
Thanks for the great suggestions! very much appreciated.

~~~
bzalasky
No problem. You should also check out Chrome Developer Tools. They're an
essential part of the front-end web development workflow.

~~~
sixQuarks
That's the "inspect element" links on the chrome browser, correct?

------
retrogradeMT
I was in this spot about a year ago and have picked up quite a bit of web dev
ability since.

I tried a few books, but they didn't really sink is all that well. Here is
what I recommend:

\- Take cs50 (Harvard intro class) from iTunesU. After attending school for 16
years, this is the single most worthwhile class I've ever taken. Plus it's
free. It will give you a basic understanding of programming and a look at how
to solve problems. Once you have completed this class, php, js, objective-c or
whatever language you are interested in will have a lower learning curve. If
you want more, Harvard has archived lectures and assignments of several other
web dev classes and they are available online (for free).

\- Start with Laravel, which is a relatively new php framework. The best thing
about Laravel is that you can make progress in building items quickly and as
you learn more, improve them. Like you, I wanted to start building things
immediately. Within about 4 hours of reading tutorials, I had a basic CRUD
application live. Laravel has a big community with many, many free tutorials.
Check out: www.scotch.io and [http://maxoffsky.com/category/code-
blog/](http://maxoffsky.com/category/code-blog/)

As others have said, you can probably do this same thing with Angularjs. It
might even be the better option.

\- join Stackoverflow.com. It is likely that any problem you encounter with
Angularjs or Laravel will be discussed and solved there.

\- Join Codecademy.com to practice js, jQuery and php syntax.

Good luck.

------
ifcologne
My recommendation: Stop learning PHP (as you've just started) and try
JavaScript instead. You can use it in backends, front ends and even in some
databases.

node.js and angularJS tutorials might help to get started right away, without
any book to read.

~~~
atmosx
Actually can't stress this enough: Go JS as @ifcologne said. PHP is the way of
the past, JS is the current _status quo_ and (given what people are creating
around JS) the future.

That said, programming is not about _one language_. It's about understanding
patterns and program design (most specifically models). But you'll have to
time to learn all these things later on.

~~~
dorfuss
Yes, start with HTML + JavaScript.

[http://www.w3schools.com/js/](http://www.w3schools.com/js/) has a very clean,
straightforward tutorial with complete reference. My advice would be that as
you learn you should take notes in form of questions, so instead of writing:
"To declare a function: function name (...) {...}" write a question: "How to
define a function?" Then rewise your questions after each chapter and write
your answers on a piece of paper, not into the computer - you'll memorise the
syntax faster and better.

After reading the entire tutorial you should have about 8-10 pages of notes
with questions. If you don't remember how to write something, go back to the
online tutorial/reference and find what you need.

At the beginning don't spend too much time on the Math or Date functions, as
these won't be that much useful. Focus on Strings and Arrays instead, regular
expressions are also fun to play with.

And after you're done with the basics you could try the Design Patterns:
[http://addyosmani.com/resources/essentialjsdesignpatterns/bo...](http://addyosmani.com/resources/essentialjsdesignpatterns/book/)

Thirdly: as you learn you should try to build things that could be useful for
yourself and that you would enjoy building. For instance you could try to make
a simple flashcard system or a little script that could strip a given string
from HTML tags, or a script that would create numerated footnotes on your
website. Something like 150-200 lines of code.

Your could also play with manipulting SVG elements with your JS - it's very
rewarding and I believe that as for a beginner it's important to SEE the
effects instantly.

~~~
atmosx
That's an excellent set of comments that I'll take into account for the next
lang I'm gonna learn! :-) ty

------
saluki
This book is a good place to get your feet wet putting together a simple
php/mysql app.

[http://www.headfirstlabs.com/books/hfphp/](http://www.headfirstlabs.com/books/hfphp/)

I would recommend setting up a few projects/apps from scratch with php/mysql.
Just so you can see how things work.

After that checkout Laracasts.com (or start there if you have a basic
understanding of php/mysql). This will teach you the basics of the Laravel PHP
framework.

Other than that just google any questions that come up and look for
stackoverflow.com results . . .

Good luck with your web development adventure.

------
logn
I think you should focus on learning how to program and avoid any sort of "web
development" learning path. Choose any programming language and start doing
the problems here: [https://projecteuler.net/](https://projecteuler.net/)

