Ask HN: How to best help a youngster who's tinkering to proper SaaS programming?

2 points by anexprogrammer ↗ HN
A friend's son is learning programming and he's asking me for ideas. He's nearing 18 and progressed via Minecraft to some python and PHP on a Raspberry Pi, and his PC now has Ubuntu. Not quite sure how he got to php, but he's had lots of fun messing with sensors, cameras and web pages. Everything is entirely self-taught so far.

What stack would you suggest that will give him some good habits, and develop the interest? To be clear, he's not trying to become employable yet, just to learn to make SaaS sites.

Ruby would get him producing quickly, Clojure might be better for all round thinking, but is it too confusing or offputting to a beginner? I want to direct away from PHP as there's too many bad habits disguised as tutorials out there. Front end I have even less idea of best suggestion of framework for him. Good progressive online beginner tutorials will be a bonus.

It's such a long time since I was thinking as a beginner, before I knew of OO and functional etc, so I'm not sure where to go with this or best order to present things. The last thing I want to do is put him off. Ideas?

9 comments

[ 3.0 ms ] story [ 17.2 ms ] thread
Why not just let him enjoy hacking? Why clutter that up with "best practices"?

Don't complain to the flower that it has too few branches to be a tree someday.

He was asking me the other day for ideas to progress from static pages and submit to sexy realtime web apps. In other words nearer to what he sees and uses every day, rather than simple sites and submits.

I'm somewhat thinking out loud as I'm just not sure. Maybe a decent front end to sit with PHP is the best answer, but I felt something else like Rails might be more productive and helpful to learning for him than sticking with php.

Last thing I want to do is put him off though!

PHP or Node or anything that can AJAX without needing a framework--just something that's easy to hack in. Let the work motivate why he might want to move to something more complicated, and then point out frameworks.
If he already started some python you may just want him to move on to Django then after he gets the hang of the entire framework down have him move to flask. Would be somewhat simple since your kind of guided when using Django.
I like that, lots of good Python tutorials. A quick skim of Django docs looks pretty solid, so that seems a pretty good option, and keeps him close to what he already knows.

That with Foundation is probably more than enough until he's ready to make fancy single page apps and learn Angular!

Thanks

Clojure is very nice, surely mind-blowing at first. "Clojure for the Brave and True" is a nice introductions, and funny to read. http://www.braveclojure.com/
Oh I like that site! Not come across it before.

I think that's a good one to point him to.

Thanks!

My personal opinion is that if the youngster is enjoying programming and learning using PHP then PHP is fabulous for the context. Plenty of top quality engineering is done in PHP...and like many other languages, lots of crappy programming.

Given that the young person wants to build a SAAS, encouraging them to switch platforms to something unfamiliar seems a bit at cross purposes because PHP is well suited for building web applications and since the person understands it, the impediment of learning a new platform will not stand between the young person and their ambition.

Programming language choice is largely a matter of taste and tastes differ and develop over time. Odds are in a few years the young person will change their taste.

Personally, though I think Clojure is a good language, I think it is generally a poor choice for beginners because:

1. It is aimed at professional programmers and this is reflected in the focus of the community, the tooling, and the libraries.

2. There is a strong expectation that the programmer will have substantial understanding of the underlying platform (JVM, JavaScript, .NET) when it comes to debugging, because error messages will reference that context.

3. Much of the information about Clojure is written for people with years of programming background at an adult level. A significant fraction is at the computer science level. Another significant fraction is about problems that occur at scale.

My advice: do the hard work of finding good material that provides examples in PHP. It's out there. That will let you meet the young person where they are and potentially form the basis for a long term mentoring relationship.

Good luck.

Some very good points, especially on where Clojure sits. I had years of Java before I tried Clojure so probably gave that little thought at the time.

You're right it's probably best to build on what he has. The logic for change was how especially common poor quality info seems to be for PHP. I've seen good code, and even written some, in it too.

I've got a decent set of resources to point him at to build on Python now, so I should find some for php. I'm sure they do exist, great tutorials have come to be for just about everything now. We just have to keep him away from w3schools and similar crap. :)

I'm inclined to give him decent resources for both php and python and go with whichever resonates. He'll soon enough develop his own opinions!

Thanks a lot for your thoughts. Very useful.