My son called last night to find out what toolset I would use to build a website.
I had a hard time answering him, for several reasons.
First of all, I wanted to know what his use case was. And, as I suspected, the aim of the exercise was to build some kind of web application, not just a content site.
But I hardly know what toolset I want to use myself for building web apps. I spent a surprising amount of (elapsed) time in 2015 dithering about this topic myself.
My reading and talking with tech friends has led me to focus on JavaScript in general and the JS MVC frameworks in particular. But I wasn’t sure I wanted to urge that on my son.
He’s just learning how to write code, whereas I wrote code for years. Why inflict a horrible language like JavaScript on someone who’s just setting out? It’s like the old advice I got to start with BASIC, which I did and then had to unlearn most of it when I started using Pascal and Lisp.
(I was charmed and blown away to read that Paul Graham and Co. had used Lisp to implement their eCommerce startup ViaWeb, and even more charmed by his argumentation about why it was a sound choice. Bravo, Paul Graham!)
And the MVC bias for me is probably just that, a bias. I love elegance as much as the next geek, but, as Albert Einstein said so many years ago, “If you are out to describe the truth, leave elegance to the tailor”. The MVC frameworks like Angular and Ember lay a big trip on you the coder; I’m happy to accept it, since power comes from observing constraints, but why inflict that on my son?
I ended up saying that I thought the #1 criterion for adopting one of the many frameworks was the level of support he could get for his choice. Support comes in different flavors of course:
- Online support, like documentation, tutorials, discussion groups
- Meetups and other real-world interactions
- People you know well enough to ask them for help at 1 am
I laid stress on the last one, although I was careful to let him know that I was hardly someone whom he could ping for help, not because I wouldn’t drop everything to help him at 1 am or any other time, but because I’m still a babe-in-the-woods about Angular — the one I think I’m going to work with — at best. My advice would be possibly one step ahead of what he could do for himself, if that.
He mentioned that his girlfriend had mentioned Django as a possible framework that she had used at some Hackathons. I’ve read a bit about Django and said I thought it would be great if she knew something about it and could help him figure out problems. But he said she knew very little.
So I ended up plumping for Angular and disclaiming my advice at the same time.
What advice would you give?