Ask HN: I'm teaching my wife to code. What direction should we go?
I was leaning towards starting her journey with Python, since (1) it's pretty popular and can be used in many different contexts (backend, data analysis, ML, etc.), it's (2) quite beginner friendly, with great learning resources and (3) I have prior experience with it.
Lately, however, I started wondering if I shouldn't push her towards front-end, i.e. HTML/CSS and eventually JS and a respectable framework or two. I did some substantial AngularJS projects a while back, so I could support her if we chose this direction. She is quite inclined towards design and has a good sense of color palettes, fonts, arrangements, etc. (IMHO).
We are located in Germany, and, as far as I've seen, there are many more freelance jobs looking for JS/Angular/React or similar than anything with Python. That might not be a problem when looking for remote work, but some local customers might be interesting for building her portfolio. I could imagine getting some clients under my name and having her "on the team" for the beginning.
Does anybody have any experiences worth sharing? Any pointers, valuable lessons, must-do things?
70 comments
[ 2.7 ms ] story [ 134 ms ] threadBut she is quite interested and impressed by all the things one can do with programming and that's what's driving her in this direction.
This is probably what's lead to the rise of Electron, and using Javascript everywhere.
Which, sadly, explains a lot
Note that this does not make it a requirement for anyone to not care about coding. But not only getting into coding because it is so much fun but because, hey, it is actually being paid really well and you are flexible and it's future proof, that seems to me to be one of those good problems to have.
It sounds to me like an industry growing up.
As long as she is interested, she will learn.
I learned more about programming when I had a task in mind that I wanted to accomplish than I did just going through the motions with a book or for a class.
Took an evening, she wrote it in Python, and I had her look everything up (StackOverflow and other places), and just helped in explaining the rough concepts involved (here's what a variable is, then you need to read a website's entire content into a variable, see what that website actually looks like in code, spot the words..., here's how you can cut and slice text, and find word positions, etc.) — I then wrote her a tiny python library that only has one function, like a "send_email(to, subject, message)" and takes care of using my smtp setup. She was excited (and exhausted), but she was REALLY excited when she received an e-mail about a week later about a price-drop.
Stuff like that is gold, it takes time to spot those opportunities and find something that matches her interests, but working on things that she actually needs will make things incredibly easier.
Another issue is that most people don't know what they can actually 'do' with programs. A friend of mine lost his job and started studying programming, and when I asked him what projects he had in mind, he had no idea what's even in the realm of things possible. I helped him make a temperature reader with the Raspberry Pi, and a website. And he loved it. But he completely freaked out when I showed him that same website can be opened on his phone and stored as an "app-like" bookmark on his home screen. He showed all his friends, and I'm sure he didn't sleep much that night wanting to improve the website to make it even cooler.
The hardest part about programming isn't the language, it's learning all the technologies and concepts involved in how it all ties together, how to break any given project into its core components that need to be implemented, and what tool is right for the job.
Start with her own website ( no CMS)
I'm planning on going the JS route. She actually knows a tiny bit about HTML (BBCode from the MySpace days) so there will be something familiar to work with. Plus, it doesn't take much to get to the point where you're moving <div>s around, and I want her to actually see results so she stays interested.
dont force her to do something she doesnt what.
thats bad idea.
Always remember effective learning can be achieved by doing something like small project and stuff.
dont confuse her to make or clone something big. it's really hard to discern.
tell her about good learning trick like spaced repetition
https://www.cantikcan.tk
Now she is writing elm with me. I'm doing my best to keep her away from all the js "drama" (setting up webpack, dealing with npm...) and only into programming to avoid her being overwhelmed. And all this build stack/devops... part can be really frustrating.
Also, functional programming is somehow much easier to grasp when you start with it.
They see the world as "thing works" and "thing doesn't work" and never stop to wonder, "why?"
Someone with logical intuition might first think, "Well, it was working earlier, what's changed since then?" Even if they possess none of the knowledge to fix the problem themselves, they may be able to come up with some theories as to why it's not working.
HTML and CSS definitely have much more immediate "results" but don't offer the benefit of generally teaching CS thinking. Even if you are an expert in HTML and CSS, being declarative, they don't help you in any way with "traditional" programming.
I'd probably also suggest taking a look at WordPress. Barrier to entry is pretty low to start making things pretty and despite what you read, still very much in demand. It's easy to progress quickly, and just as easy to quickly get a portfolio of sites under your belt (for prospective employers or freelance work).
I don't think this can be understated. Python is a great language to start with since it's clear and fairly straightforward, but there's a nontrivial amount of overhead. It's peanuts to open up the editor in your browser and tweak HTML/CSS to immediately see a change. Creating a quick prime calculator or whatever as your first program is cool, but it's still hard to beat "I made a webpage!" It establishes the importance, provides immediate feedback and excitement, and you can easily establish the mindset/thought process needed before moving on to other languages.
Also, the project doesn't have to be a business - I think utilities that you would use, whether it's family communications or something funny, are perfect.
I've been thinking about this a bit so I thought I'd share: Two successful, but fairly tech illiterate, Women in my life have wanted websites built for their businesses. I put both of them in touch with a bunch of developers and they also searched on their own. They both ended up choosing a Woman freelance developer. They said the Woman made them feel most comfortable and seemed to empathize with their needs and many uncertainties. I wonder if there is untapped potential there.
Since I'm much more of a backend guy, that would also have the added benefit that, down the road, we could take projects that require significant work on both front and backend.
As a new coder even things like learning the tree-like structure of HTML, the brutality of an errant slash or missed closing tag, or the frustrations of bringing a visual idea to fruition with plain text are challenging enough. I wouldn't worry too much about HTML "not being real code".
If time is on your side (more than a year), I would gently nudge her into HTML and see what she comes up with. If she finds it tedious maybe try another route, but if it sticks I would segue into simple Javascript or CSS after that depending on what she wants. If she wants more control over how the page looks, naturally she'll want to learn CSS. If she wants more control over functionality and making the page "do" something, Javascript.
As a completely radical idea, you could show her LOGO. I remember that being incredibly inspirational when I was a kid and appealing to the artistic side.
If time is on your side, you are lucky in that she can afford to play around and not go down the bootcamp route which will inevitably lead to burnout. I say nurture the interest as gently as possible.
From there she learned some python and Ruby. It was a pretty naturual progression, she just wanted to "do stuff"
http://railsgirls.com/munich2018.html
Yeah I would do the same
>i.e. HTML/CSS and eventually JS and a respectable framework or two. I did some substantial AngularJS projects a while back, so I could support her if we chose this direction. She is quite inclined towards design and has a good sense of color palettes, fonts, arrangements, etc. (IMHO).
Go for Vue, it's way easier to learn and to build small things quickly, and the doc is really well made so it will not be as frustrating as it could with angular
I had significant CS and professional experience before getting to do a big Angularjs project and it still was, at times, unbelievably frustrating. I can see that whole drama killing all the joy and wonder of actually creating something, especially for beginners.
After that, you could try Flask[2] or Django[3] (Python web frameworks) and gradually introduce HTML, CSS, and JS.
JavaScript frontend development has more moving parts, so I think it's harder to pick up as a first technology. You have to explain asynchronous code earlier than with Python, and that's one more mental concept to juggle.
There are also a couple of online courses[4][5] that might be useful. I've only watched part of the first one -- it was good.
[1] http://automatetheboringstuff.com/
[2] http://flask.pocoo.org/docs/0.12/quickstart/
[3] https://tutorial.djangogirls.org/en/
[4] https://www.edx.org/course/introduction-computer-science-mit...
[5] https://www.edx.org/course/cs50s-introduction-computer-scien...