
Free resources for learning full-stack web development - moipersoin
https://github.com/bmorelli25/Become-A-Full-Stack-Web-Developer/
======
partycoder
Being a full stack developer means being proficient on the frontend as well as
backend. Unfortunately none of those tutorials prepare you to work at the
backend of a production service.

To say you can do backend code because you can write in JavaScript is like
saying you can write a paper on cardiology because you know English. Knowing
the language is a small part of the job. There is a lot of domain knowledge
that is required in addition to the language.

Learn networking, learn operating systems, learn distributed systems, learn
performance and scalability, learn about databases. Then learn node.

~~~
partycoder
And as a small example:

Let's take a look at the "best practices" tutorial from nodeschool.io, one of
the recommended tutorials.

[https://github.com/excellalabs/js-best-practices-
workshopper...](https://github.com/excellalabs/js-best-practices-
workshopper/blob/master/src/decomposed/balanceManager.js)

Can you list all the mistakes in this code?

\- Using IEEE 754 floating point numbers (built-in Number type in JavaScript)
for storing a balance is unsafe. Read more here:
[http://stackoverflow.com/questions/3730019/why-not-use-
doubl...](http://stackoverflow.com/questions/3730019/why-not-use-double-or-
float-to-represent-currency)

\- Your bank would never represent a balance in that way. They store
transactions individually and they fold them to compute your balance.

\- The input validation is extremely weak. Pass in: undefined, NaN, Infinity
or some funny value and you will end up with a corrupted balance, or force
"decreaseBalance" to increase, and "increaseBalance" to decrease.. The
isValidAmount method should use "isFinite" rather than strong comparison with
null.

And let's better stop here...

~~~
JDLongley
This is great to show how smart you are, but what will a beginner who wants to
use this resource think when they read your comment? People have to start
somewhere.

~~~
partycoder
My point is to provide another perspective on what is the real entry barrier
to backend programming.

Many people underestimate backend programming, and underestimate technologies
only because they make use of a some scripting language like JavaScript, Ruby
or Python.

I have seen millions of dollars wasted and jobs lost because of the harmful
idea that backend development is for everyone and that anyone can do it after
some simple training.

Production-strength backend development has become more productive because of
better tooling, but not any easier. It still requires plenty of domain
knowledge, discipline, rigor and attention to detail.

A functional prototype for a small startup might not strictly require a lot of
rigor, but load test it or throw some millions of daily active users at it, or
get a pen tester to see if it's secure enough or just advertise it and start
receiving malicious users to see if holds up.

------
debaserab2
This barely touched on what you need to become a competent front end developer
and the aesthetic competency you need to have to make something look nice.
This is the thing I most often see as completely stopping backend engineers
from becoming "full stack".

Full stack != learning react.

~~~
lcw
I don't think aesthetics play very much if any role in being a effective front
end developer. Look at Craigslist the thing is terribly ugly and dated but
still widely used and functional. The aesthetics look like someone with no
taste in design or modern UX wrote it. If someone writes the next CraigsList
by your definition are they not a successful front end developer? Sure having
a taste for design is nice but hardly necessary to be successful at the craft.

~~~
mrits
Craigslist is actually a great design. Just imagine if a UX developer had
their way with it. It would look like myspace.

~~~
mawburn
UX != Design

~~~
mrits
I find it really laughable that companies think you can separate these things.
I realize that is the popular opinion but it what has gotten us into this
situation in the first place. We have all these "pretty" sites that are
unusable. It's an increasingly common skillset and you might as well get a
pragmatic person to handle both.

------
ConAntonakos
Unrelated, but is there a good list for machine learning?

~~~
j_s
I will spam you with my uncurated collection I've hoarded for just from the
past few months here on HN:

CS 20SI: Tensorflow for Deep Learning Research
[http://web.stanford.edu/class/cs20si/syllabus.html](http://web.stanford.edu/class/cs20si/syllabus.html)
[https://news.ycombinator.com/item?id=13781067](https://news.ycombinator.com/item?id=13781067)

A visual introduction to probability and statistics
[http://students.brown.edu/seeing-theory/](http://students.brown.edu/seeing-
theory/)
[https://news.ycombinator.com/item?id=13735714](https://news.ycombinator.com/item?id=13735714)

Mathematicians becoming data scientists: Should you? How to?
[https://quomodocumque.wordpress.com/2017/02/26/mathematician...](https://quomodocumque.wordpress.com/2017/02/26/mathematicians-
becoming-data-scientists-should-you-how-to/)
[https://news.ycombinator.com/item?id=13739687](https://news.ycombinator.com/item?id=13739687)

good beginner tutorials for Stan or probabilistic programming in general
[http://camdavidsonpilon.github.io/Probabilistic-
Programming-...](http://camdavidsonpilon.github.io/Probabilistic-Programming-
and-Bayesian-Methods-for-Hackers/)
[https://news.ycombinator.com/item?id=13742102](https://news.ycombinator.com/item?id=13742102)

Supporting the AI Talent Pipeline [https://medium.com/@mark_riedl/supporting-
the-ai-talent-pipe...](https://medium.com/@mark_riedl/supporting-the-ai-
talent-pipeline-5ae0fc67a4f6)

Georgia Tech Offers Online Master of Science in Analytics Degree for Under
$10K
[https://news.ycombinator.com/item?id=13382263](https://news.ycombinator.com/item?id=13382263)

Practical Deep Learning For Coders
[http://course.fast.ai/](http://course.fast.ai/)
[https://news.ycombinator.com/item?id=13224588](https://news.ycombinator.com/item?id=13224588)

[https://news.ycombinator.com/item?id=13599074](https://news.ycombinator.com/item?id=13599074)
(learn or be a dinosaur)

[https://news.ycombinator.com/item?id=13605222](https://news.ycombinator.com/item?id=13605222)
($1k machine)

[https://news.ycombinator.com/item?id=13588070](https://news.ycombinator.com/item?id=13588070)
(oxford deep nlp)

Coding The Matrix: Linear Algebra Through Computer Science Applications
[http://codingthematrix.com/](http://codingthematrix.com/)

------
lacampbell
Shameless request for advice - what's the simplest way of deploying stuff to a
VPS?

I want to somehow set up an identical environment on my dev machine, and on a
VPS in another continent (too much latency to edit files on directly). Ideally
I'd then be able to deploy from a dev environment identical to my production
environment. I tried docker but debugging the containers did my head in. I was
thinking of trying VM images with vagrant, but I'd love to know if there is a
simpler solution to this.

I'm just one person doing it in their spare time.

~~~
sillysaurus3
One solution is to set up a droplet which serves a website from
/home/deploy/web/site/ on the server. Then to deploy:

rsync -Pa ./site/ deploy@your-domain.com:/home/deploy/web/site/

Note: The trailing slashes are important.

I use nodemon to watch /home/deploy/web/site/ for changes, which restarts the
server. There are tools like nodemon for whatever stack you're using (rails,
etc).

------
59nadir
"How you can create your frontend and a mediocre backend all in one language,
because you're lazy or looking to cash in on the web!"

~~~
onion2k
"Those people have worked out an easy way to make money without working very
hard! The fools!"

------
sly010
Looks more like "my-stack web development".

------
siddharthgdas
Thank you so much

