
Ask HN: Web tech stack? - ezal
I am changing my career to web technology. I have no experience in programming. What web technology stack should I learn?
======
ivan_ah
I highly recommend Django for the backend. It's stable, feature complete, and
mature. Python is good for you. You can start here:
[https://docs.djangoproject.com/en/1.11/intro/tutorial01/](https://docs.djangoproject.com/en/1.11/intro/tutorial01/)

Alternatively you can use Ruby on Rails (equally good).

You should also learn JavaScript for the fontend, but that's a separate
battle. I think you can delay the frontend learning for a bit and get used to
the backend (HTTP + scripting language + DB).

~~~
tmnvix
After hacking away at Drupal and then WP, adopting Django as my go-to backend
helped me immensely early on. I don't do anything with PHP anymore.

I'll also say that backend + html + css will take you surprisingly far. JS
will be much easier to deal with after you feel at least competent with those
basics.

------
czbond
If you're starting from the beginning with no experience - are you mainly
doing it for the "job aspects"? (eg: salary). If so , get on a large job board
for your area and see which technologies are most hired near you.

------
oblib
I'll offer that don't need to use or learn a "stack" per se, but you do need
to learn HTML, CSS, and Javascript, and you should learn to work with one or
more server side languages.

I started out with Perl on the server side back in the `90s and still use it,
but I also use Python now and then too and that's probably a better choice now
to start with. I never used a Perl "Framework" for building my backends
though. I just used perl modules where I could and hand rolled the rest.

I decided not to learn SQL early on and instead used a simple "name=value"
flat file database on the server side for years. I don't regret that decision.

A couple years ago I decided to start using CouchDB, a "NoSQL" database, and
I've grown really fond of that option. It does things a lot like I did with my
simple database so it's been an easy transition for me. There are other
"NoSQL" databases you can and should look at and in fact "Google" just
announced this past week they're going to offer one
([https://cloud.google.com/datastore/](https://cloud.google.com/datastore/)).

CouchDB was built specifically for web apps by the Apache Foundation and uses
the JSON format to store data so you use Javascript to work with it. This
means you can write all your app code in JS and run it on the client side and
there's "PouchDB.js" that makes it really easy to store data in the users web
browser and sync it with a CouchDB online.

This is (what I consider) a more modern approach to building web apps because
the apps can run offline and users can access the app online with any device
and use their data. Those are pretty huge features.

But this approach is not widely used yet so there's not a lot of hiring being
done for those who have invested in learning it and that's an important point
for you to consider.

Now if I had "no experience in programming" this is where I'd start anyway
because you need to learn and get the HTML, CSS, and Javascript experience no
matter what. You also need to work with user data and it's easier to get
started handling the data layer with CouchDB/PouchDB than SQL.

And the truth is, SQL is a career choice all by itself. That's why I never
used it in my apps. I stand firm on my opinion that only those who really know
SQL should be designing databases for it. That's different that writing CRUD
routines for a web app, and you can learn those easy enough to work with SQL,
but I'd not be willing to say I know how to design an SQL database unless I
really knew how to and learning how to do that right is a career choice.

PHP is another route I never took. It's pretty much tied at the hip with SQL
but it's also a butt ugly way to make a web site/app and I wouldn't go
anywhere near it now because there are better ways to do that (and PHP should
die sooner than later).

So, here's what I am using:

Server:

    
    
      Apache Web Server
      CouchDB Database Server
      Perl/CGI
    

Client:

    
    
      PouchDB.js (database routines)
      Moustache.js (simple template engine)
      JQuery.js (UI)
      Bootstrap (UI)
    

That's a "Stack".

The reason I use that is because it's "easy". Once you've got a handle on the
basics of HTML/CSS/Javascript you can get stuff done.

You might want to use React.js instead of JQuery. It's probably a better
choice for you just starting out. I use JQuery because I'm productive with it
and too lazy to want to learn React right now, and Bootstrap uses JQuery too
(so it's loaded in the client anyway) and Bootstrap works too good and is too
easy to not use. Learning to use Bootstrap is a no-brainer right now.

Here's a "Todo App" I made with those tools:
[https://cherrypc.com/todo/index.html](https://cherrypc.com/todo/index.html)

You should also go to [http://todomvc.com](http://todomvc.com) and play around
with what they've got there. You'll learn a lot fast by doing that. I spent a
couple months (of my spare time) doing that before I chose the toolset I use
now.

The reason I chose that toolset instead of one of those frameworks at TodoMVC
is I couldn't decide which of those was "best". I strained for a couple weeks
over that and then it occurred to me to maybe look for what was "easiest"
instead and that really changed my perspective.

Hope all that helps you some, and good luck!

