

Ask HN: I'm an experienced developer but I don't understand the internet - ikrima

I'm a seasoned developer (mainly VFX &#38; desktop apps), but I'd like to learn how to make web apps and would like to learn by making a simple flickr clone.  What advice/resources/technologies would you guys recommend for starting out?<p>Dunning-Kruger effect aside (http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect), I'm hoping it will be easy to ramp up since I'm not new to development. (Altho I hate database work so i'm sure this will get interesting really fast)<p>Here's what I gleaned from fellow programmers: Python, Google Apps, NoSQL: plus.  MS ACS/Azure: expensive.<p>Thanks in advance
======
kls
_Here's what I gleaned from fellow programmers: Python, Google Apps, NoSQL_

This is a really subjective area of web development. There really is not and
probably will not ever be an agreement on the best technology stack for the
web.

For me personally, I do not use server side web frameworks. I write web apps
and I use pure HTML / CSS / and JavaScript for the frontend and a REST lib to
expose REST services for the back end. I use Java quite a bit to build my REST
services because it is entrenched in the enterprise and that is an
overwhelming percentage of my clientele.

I also do REST services in Python, Ruby, C# and am teaching myself node.js for
that purpose as well. It depends on the client's tech stack as to what I use.
I find that the way I develop is an advantage to what I do because I use
common front-end technologies no matter what stack my client is using.

I don't have to keep up with the latest Struts, ASP.NET, Rails, Django or any
other api intensive web framework. My UI is detached from the technical
implementation of the back end and for me that is an advantage. There are a
growing number of developers that build web apps this way, and yet there are
others that believe that it is the spawn of Satan.

Anyway, I would say to just start, don't worry to much about what stack as it
is more important to understand how the web is bolted together then as you
gain knowledge you can make adjustments as necessary to perfect your web-fu.
You cant go wrong with Python, Google Apps is great to know the only one I
would caution on is the NoSQL.

Not that it does not have advantages and vice-verse disadvantage, but as a
newcomer you want to make your transition as easy as possible and I think a
relational database would help achieve that goal. There is more documentation
and users of the stack you select that know how to work with relational
databases, if you get stuck as you will from time to time, you will find it
much easier to find info on how to work your way out of a DB issue rather than
a NoSQL issue. Even if it is just do your first project with a Relational DB
and then make the transition it will help to isolate your learning's to web
specific nuances first.

Finally, learn JavaScript it is the only universal web language and it's use
is growing. No matter which stack you chose, you will eventually have to write
JavaScript.

~~~
ikrima
awesome; that's what i was looking for. And, I was also hoping to get advice
on algorithmic or architecture knowledge on distributed web apps as opposed to
specific details on languages.

Ex: How facebook scales to 500+ million users or how flickr can serve so many
photos that fast. Obviously for my flickr app clone, I don't need that level
of performance but I'd at least like some pointers on how to go about it the
right way.

~~~
kls
Well Facebook uses PHP and HipHop which is an implementation that converts the
PHP to C and compiles it as machine code as opposed to interpreted code. It is
how they scale on PHP as for flicker they use PHP as well you may want to look
at this document, it outlines the flicker architecture and what they did.

[http://www.google.com/url?sa=t&source=web&cd=2&s...](http://www.google.com/url?sa=t&source=web&cd=2&sqi=2&ved=0CBcQFjAB&url=http%3A%2F%2Fwww.niallkennedy.com%2Fblog%2Fuploads%2Fflickr_php.pdf&rct=j&q=flickr%20built%20with%20PHP&ei=a8S_TNGiFYL98AbQx7SjBg&usg=AFQjCNFgbX9j2I4bxDbsUQlUdPjN-
CsHGg)

PHP is with out a doubt the most popular web 1.0 server side language, and if
you are looking to do this as a job, then it is well worth it. Personally, I
would rather jab my eyes out than work with another line of PHP. It was
originally designed by a group of people that had neither extensive language
experience nor web experience. It is kludged together and you feel it ever
step of the way. Over time, people that do know what they are doing have fixed
some of it, but there is still some crap legacy in it. I swore off PHP and
will not take a contract that mandates it.

Now for the good part, it is fast to develop in, it has a lot of support,
there is enough stuff built in it that you can find almost anything you need.
Wordpress and Drupal are two of the most popular CMS systems and are written
with PHP. You can build a site in 4hrs with either one and a template from one
of the template sites. It's like crack of the web development world, cheap,
dirty, powerful and it gives you want you want, but no ones admits to using
it.

------
cylinder714
Take a look at Software Engineering for Internet Applications:
<http://philip.greenspun.com/seia/>

From the preface: "We assume that [prospective students] know how to write a
computer program and debug it. We do not assume knowledge of any particular
programming languages, standards, or protocols. The most concise statement of
the course goal is that `The student finishes knowing how to build amazon.com
by him or herself.'"

------
wwortiz
Probably best way to do it is pick a programming language or framework and
start building your app.

Rails has this: <http://railstutorial.org/book> (If you need a kick to
choose.)

If you don't already know HTML and CSS you should probably learn that first,
<http://www.w3schools.com/> is a good starting point. (Not really a lot to
learn but very valuable.)

And javascript will be useful but you could probably do without it for making
a simple app.

