Ask HN: My son wants to make side money programming
My son has had a little programming experience, and I used to (back when Perl was cool), but it's been a while. He's essentially a tabula rasa, but smart and sometimes motivated. He's 15, thus I think the ideal age to start.
What language(s)/platform(s) should he learn, and where should he look for freelance work? Ideally we're thinking of online venues; we're temporarily in Budapest and there are already plenty of hungry, vastly intelligent, obsessively motivated people here, so the local market is probably not ideal, although I'm not discounting it. (There's also the fact that we won't be here forever.)
To his benefit: I can teach him whatever he needs to know. Well, we can co-learn it, but it's still better than hacking in the dark.
What do people here suggest?
56 comments
[ 3.4 ms ] story [ 118 ms ] threadhttp://www.amazon.com/Start-Small-Stay-Developers-Launching/...
He could probably do ok with Ruby on Rails, Django, Node.js or something like that.
If any of those take the world will be his oyster.
Not sure what is best for generating money.
But for learning, starting with a personal project (like a game) tends to work well.
* I started with PHP. My suggestion today is to start with Django (Rails is fine too, but Django has less magic and so things are lot more explicit)
* Bootstrapping out of nowhere is difficult. He will have a lot to learn from the knowledge perspective. So, looking out for opportunities, negotiating payment etc. can be draining. This is where you can help so that he focuses on learning his craft first.
* It will be tempting to work for free. Advice him against that. He can work for a low fee, but getting paid puts the work in the right context.
* Stay away from portals like Elance and ODesk.
* Working as an intern at a company would really help him with the other meta aspects like planning, team collaboration etc. which are all important to pursue his long-term goals.
Back in my days, I'd have built websites for friends and some would turn into (badly) paid gigs. If he's got other interests (sports club etc) they could become engagements.
If really he wants to do websites, you'll have to start with JavaScript/jQuery, then graduate to server-side (node, PHP, Python/Django, Ruby/Rails, pick your poison).
Consider that the real dazzle these days is mobile, and it's not that much harder than making websites (or he can make mobile-optimized websites, which can be almost as cool). It might be easier to get engagements on that side at the moment, since most people/clubs/businesses already have a website but they likely don't have an app.
In general, I agree with those who say that at this age he should play around with stuff he find interesting, and FOSS and Moore's Law makes that inexpensive. In the next summer wandering around the file system of a UNIX(TM) V6 computer for undergraduates went hand in hand with playing the Colossal Cave Adventure game. I learned enough UNIX(TM) from that, e.g. that system had a DECtape which started me on backups, which for some reason I find to be fascinating, to be employable when I was "dumped on the streets" in 1980....
This is the stack I would set up with, optimized for ease of use, elegance, and market demand:
Debian sid or Ubuntu
Tiling window manager
Vim
Python flask on the backend
Bootstrap on the front end.
A hacker that is comfortable with Linux and the command line, python, html, css and js can find work anywhere.
I wouldn't put Vim or ubuntu on either of those for a somewhat beginner.
How about, sublime and some web server like AMPP. That's way easier to get started with. Literally no friction.
Linux cli and vim and a tiling window manager have a learning curve (mostly remembering keyboard shortcuts) but they are actually far simpler tools with less distractions and more straight forward and robust tooling.
I just taught a completely non technical 30 year old to build static html sites with the above setup. They appreciated the minimalism of having the screen split in half with code on one side and chrome on the other and no docks or menu bars to distract. They picked it up quickly.
If I were him, I would first ask around - family, local businesses, organizations, etc. to see if someone needs a website or internal database or something like that, and then learn what you need to learn to do it. Another option might be to find groups or small businesses or individuals that do coding and see if he can learn from them and help out.
What I wouldn't do is just try to learn programming for its own sake - such as taking a course or buying a book without any idea of how it might be useful. He'll just forget it and perhaps even decrease his interest in programming. Flip it around and find a project first, a reason to learn programming.
If it's still interested in programming, here is my list of languages :
- Desktop : Python obviously. You can make little graphical interfaces, easy scripts, manipulate data in Excel or Word, even some remote automation since there are network libraires.
- Web : I would recommand against full-blown web frameworks like Django or Rails. Start small by using some simple static sites using HTML+CSS and then learn to build dynamic ones using PHP and Javascript.
I would also add that there are others ways to make money than programming : I know a 17 y.o. which rigged up a farm of Minecraft servers for his highschool and he's being paid by his classmates for the hosting.
1. working within a large piece of software (learning)
2. up and running fast and feeling good about making progress
3. able to use google to resolve more of your issues since stackoverflow and many blogs talk about the common beginner mistakes
4. have more customers up front (since money is the motivation) where many people are willing to pay for wordpress setup and management
Disclaimer: We're rather bootstrapped, so I can make no promises. (Jeez, we might not be able to afford a 15 year old programmer.) An even larger issue might be that I think it's illegal to give work to anyone under 16. I'll have to ask around and if you send me some contact info to bence.nagy@allmyles.com, I'll get back to you once we've got things figured out.
What other interests does he have? Are there parts within these interests that could have relevance for programming? For example he might like bird watching, so perhaps a mobile app for birding might be good, or he might love platformer video games, etc etc.
In short, he should do what he is interested in, don't worry about the choice of technology - by far the most important thing is that there is some interest, passion and enthusiasm. The choice of technology is less important than the choice of what to do.
The money is in mobile right now, and for the foreseeable future. Try Java for android too. In a couple of years he'll be making good money without leaving home.
Or anywhere in the world for that matter.
Is he interested in games? Make him implement a roguelike, or study Panda3D, if that's where he leans.
Does he like to design UX? Use one of the wonderful web frameworks (my fav: Django, but also tornado, Flask, Pylons) and do some webdesign.
Useability applications for the Desktop? https://wiki.python.org/moin/GuiProgramming more frameworks than you can shake a stick at.
Best calling card you get when looking for work is pointing to what you built. Rent a DO dyno and post the work there. Showcase cool stuff.
We did some text dungeon stuff last year and that almost clicked. But the boy is mercenary. He washes dishes in Vermont in the summer - when I mentioned that money was to be had with programming, he sat up straight. I think he'd never thought about it seriously.
I'm trying to get a sense of "If I were just starting now..." from the community. And yeah, Python does seem to be ranking rather high, doesn't it?
There's plenty of resources for leaning Unity online, on youtube, udemy or elsewhere... https://www.udemy.com/courses/search/?q=unity3d
PS: In 4 months the kid has already sent us 2 games fairly complex and funny.
Great teaching lessons and lot of jobs around the world for the web
Figure out which part of programming he's interested in, why he likes it. Is he good in maths/physics, does he want to write games, websites, apps, etc.
If he's just interested in "programming" in general, get him a nice book on algorithms and suggest different languages he can use to implement them (something C-like, a scripting language, a functional one, a modern Lisp dialect).
Oh right, get him to use Linux or BSD, as that will give him access to a ton of free development tools. I also mention free because I don't think he should focus on making money at 15, but find something he enjoys learning. If necessary, you could provide incentives to learn this properly, instead of following possibly short-lived market trends.
He could start with web development initially. It's the fastest way to get going. Then move to other subjects like algorithms, machine learning, Big data.
Ask him to build some stuff which can solve some real world problems that he faces in every day life. If other people also face such problems, they will pay to use his tools.
Good Luck
Then also get involved in an open-source project, just keep looking for interesting subjects and find one you like. Programming is more about managing projects, and it will give you something to put and talk about on your resume, and meet new people, and lead to jobs
Everything you need is online. "Pick a job and become the person that does it" - Mad Men
In my world (data) there is a lack of developers - or just people of any kind - with sound understanding of the relational model and its (only relatively correct) implementation, SQL. SQL is a very declarative language, high level and intuitive and easy to write correctly. With a good RDBMS, it's also easy to optimize when you are resource constrained.
And literally EVERY company out there has a database that needs to be queried, reports that need to be put out, databases that need to be normalized, data warehouse schemas that need to be drawn up, data sources to be joined together, questions that need to be answered and relatively few people to do the work.
I would say start with bases in set theory and logic in parallel with C. J. Date's books (which are easier than Codd's original paper as a starting point). An additional benefit of starting there is he's less likely to shoot himself in the foot with ORMs later on.
Regarding where to look for work, talking only about Singapore and ASEAN companies, I get contacted several times a week by agents, headhunters, and executives from local companies who have these problems. I can't speak for Europe, but here, a cold approach or a well formed reply to a job ad with "data analyst" in the title offering cheap ("because 15") but high quality remote work might work.
Why is what you're saying the better solution for someone just starting? Isn't it better to build up, rather than jump into something for which he will see little reward for in his personal projects? His son might not work in an environment where his skills have tangible benefits until 10 years from now.
SQL is declarative which means if you can word it in your head, you can write the query (unlike with OO where you need to define what happens to your record). If you learn it properly, from the set theoretic perspective (aka the relational model, not using the RDBMS as a data dump without FKs, and treating rows as records the OO way), you can keep working like that almost indefinitely, and the problem solving is a lot of fun - "how can I define my output in terms of my input in one go". Most importantly, you KNOW your code is correct (except logical errors) whereas the ORM does not guarantee as much (my first step when at a new company that uses an OO framework is enforcing all the implicit FK constraints and keeping track of the 1-3% of tuples missing bits). Most of the time it (sort of) doesn't matter (click through rate being off by 0.2% isn't going to change your life); when you're calculating how much money you donate customers via discounts or matching your orders with cash flow, it does, and this is when companies start paying good money.
Unfortunately, based on interviewing 200+ applicants over a couple of years to data-related positions, I've started to think that the relational model is simply not taught anymore, and many popular frameworks actively encourage patterns that break the model (e.g. polymorphic associations in RoR [3]). I'm now happy just to see someone aware of why constraints might be useful, let alone being able to discuss 2 vs 3 or 4 valued logic or the usefulness of prenex normal form.
[1] SQL and Relational Theory, C. J. Date 2011 [2] http://www-bcf.usc.edu/~gareth/ISL/ [3] http://stackoverflow.com/questions/922184/why-can-you-not-ha...
1. management (deciding what gets done and supervising it), in this case being the interface between the pure managers with MBAs and the developers, like the gearing mechanism between the stick and the engine (this is pretty much where I sit);
2. specialization, your unix-bearded database sysadmins who can do wonders with the most constrained resources, think someone who actually worked on building Postgres/Ingres since the 80s, because some institutions like banks do need that kind of talent and they can name their price; I mention beards because when I did look for such a profile, every applicant with one exception was in his 40s or 50s and wore a large grey beard;
3. crossing over to "data science" (which is the bubble word of the day, and where a lot of the fast money is), i.e. picking up skills in statistical learning and applying them to company datasets. It's still 90% getting the data into the shape you want. I used to think this field was the preserve of the PhDs, but most companies I talked to at least in Asia have almost no capability on that side of things (not even for questioning the assumptions and significance of their financial models). I also saw that Andrew Ng said much the same thing in his Coursera lectures, something along the lines of "by the time you finish this course you'll be more competent at machine learning than most data scientists I've met in the Valley" so I suspect this extends to the US.
They're sort of related: you want to know about things like the innards of database engines anyway for anything beyond trivial select operations (2.); you need to be aware of what upstairs wants in order to do a good job as an analyst (1.) and you'll naturally start questioning the requests that come to you ("why are you asking me for this data, what problem are you trying to solve, what assumptions are you making") which is where 3. comes in. That's the most valuable part to the company, but also the hardest politically.
I think mixing these things in an SME setting where you can have a fast impact is where you have the highest ROI as an employee (and thus highest likelihood of good money). Big corps, despite being able to offer great salaries, are so slow and bureaucratic that it is very hard to make a meaningful impact - cue in stories of no company email account for months, datasets shared in Excel because database access can't be given for "security reasons", and the utter lack of accountability that comes from 7-layer middle management structures. Startups (pre-revenue/profitability) are too small to be able to afford, or get much return, on a data scientist type.
If those projects go well, he will quickly get referrals to do more, and then he can charge. On the other hand, if they go badly, people don't feel like they lost money, and instead will feel that they gave a 15 year old a chance... and may even give him another one when he is 17.
It is amazing how quickly expectations rise alongside bill rates.
Bust first, some comments/questions:
- Programming is too broad. I would sit down and get him to think through what he means when he says "make money programming." This can go in a lot of directions (games, setting up wordpress sites), SEO, data scraping, etc.
- Get to know the local ecosystem. Check http://www.3cosystem.com/budapest to see what meetups are coming this month. (Disclaimer - 3cosystem is a pet project of mine). Go to those events and ask the same questions here. See what is in demand. See who is making money locally and abroad.
- I just checked, and there are quite a few events coming up this month. That is a good opportunity for both of you!
Good luck!
That you can mentor him is great but programming needs an innate interest. You can't really do his homework.