
Ask HN: Teaching Code to Someone That Asked Me for a Job - sirrele
Yesterday I made a deal with an old high school friend that reached out to me about a job as well as a loan. In general, I don&#x27;t loan money to friends. It gets complicated quickly and risks the actual relationship. However, I made a deal with him where I would give him a little more money that what he asked for and he wouldn&#x27;t need to pay me if he committed to learning how to code (with my assistance).
I hypothesize that the growth that I will receive by teaching code and the potential positive impact that can result in his life will be worth the experience. Have any of you done something like this? I would love some pointers or thoughts :)
======
grardb
>However, I made a deal with him where I would give him a little more money
that what he asked for and he wouldn't need to pay me if he committed to
learning how to code (with my assistance).

I would highly recommend against this.

If you lend money to someone, expect to never get it back ever, regardless of
the deal you made. I know this from personal experience.

What I also know from personal experience is not to expect someone to learn
how to code because you want them to. I gave my old laptop (which was still
working well) to my cousin under the condition that he completed a single
Udacity course on programming. I will tell you right now that he did not even
come close to finishing the course.

I don't know you or your friend of course, but if I had to put my money on it,
your friend is not going to learn to code, and you're not going to get your
money back for a _long_ time, if ever.

~~~
laumars
I'm largely of the opinion that if an adult really wanted to learn to program
then they would already have made the effort to learn to program. Particularly
these days with the abundance of free resources online.

The key to learning any new skill is motivation and if an adult isn't
motivated enough to start the learning process themselves then they'll likely
always come up with excuses not to when another tries to instruct them.

~~~
emsal
Finding resources online is not incredibly easy. I remember that I very much
needed a teacher/class in my early high school years to get started to learn
to code because trying to google things often led down very disorganized
resources.

I think the main problem at that point is that I didn't exactly know what to
learn other than the fact that it was called "programming". Only after I was
taught how to code that I was able to see the power of being able to write
software and the applications that I could make.

Also, in general, I don't think college students (adults) would be motivated
to learn all of their field by themselves because when searching for the
information it'll be way too disorganized; it's not curated and sequenced by
instructors/professors. I recently took a hardware/architecture course and I
realized that I learned bits and pieces of that stuff beforehand but never
attained a holistic picture of how stuff worked at the OS level because I just
didn't really know what to look up, and learning from my professor also gave
me the ability to learn more things about the material by myself afterward.

~~~
laumars
I do agree with you to an extent but I wasn't talking about people mastering
the language themselves. I was talking about them starting the process (bear
in mind this is in relation to the GP comment about giving his cousin a
laptop).

Maybe I'm being unreasonable but 80% of what I know is self taught. Though I
accept that I'm an edge case here as I -stupidly- decided to go into full time
work instead of university. But that's a different topic entirely. However
much of what I learned predates the proliferation of the web. In fact the
first two languages I learned was in the 80s so literally do predate the web.
Yet I managed fine with books borrowed from the library and a lot of trial and
error.

Perhaps things are harder now because there is too much choice in languages
and too many blocks on the software stack you need to be aware of. I also
don't particularly consider web development a good starting place to learn
development because it's full of different technologies that work semi-
independently (server side code, SQL, Javascript, CSS, HTML, different browser
rendering engines, etc) and not to mention the complexities of writing
stateless and secure code.

One of the great things of being a child in the 80s was your personal computer
made a great introductory programming system. You got a simple language to
code in and instance results back. But I've now drifted way off topic so I
feel I should apologise for the soliloquy.

~~~
emsal
I was about 10 years old in the mid 2000s and much of what I knew about
computers at that point were just about the use of weird software (like
editing the config files of emulators) and some google-fu.

When I was first introduced to Python by my parents and left alone with it, I
didn't have any idea of how software was written and didn't even really know
the concept of saving code. I downloaded IDLE and it was really confusing that
the place where I put my code was also the interpreter by which I ran it, and
it really just didn't make sense to me at all and I never got around to doing
more with it. I lost a lot of motivation because of all this confusion.

It was really the first teacher I had in high school for programming that got
me on track to learn that stuff because he introduced me to the concept of
doing stuff on the Linux command line. That was the first time that everything
really clicked and I did so many stupid Python side projects that year just
because I liked how it felt to use a more bare-bones text editor and run
things on the command line, and accidentally became much better at writing
software because of this.

I went on a tangent but my main point is that it often takes even just a small
nudge from an external entity to even develop the desire to get started.
Perhaps the OP will be successful in nudging their friend into a valuable
activity and possibly career path. Perhaps it'll be a Sisyphean struggle --
many of my classmates in my first programming class learned the same material
but it never quite "clicked" for them and they ended up failing the class. But
I don't believe there are any inherent red flags from how OP described the
situation.

------
PaulStatezny
I can speak from experience.

TL/DR: Lessons from teaching a friend to code.

I have a friend who was looking for a career change. I've spent somewhere
between 75 and 150 hours helping him learn to code. (Web development.) Here's
what I learned in the process:

 _1\. I highly overestimated how quickly one could learn web development with
no prior programming experience._ I was too optimistic, and I told him if he
put serious time in, he could have the skills to build a simple web app in 6
months. He put in a more realistic amount of time than I'd suggested,
balancing other areas of life. It took him closer to 18 months, including
enrolling in a coding camp, which he's now about to complete.

 _2\. Charging money for a service helps people take it seriously._ At first I
didn't charge him, but then I took the advice of a friend who has that
philosophy. This isn't definitive evidence, but I think charging for the
training helped both him and myself to take it seriously and put effort into
it. He's now about to graduate from a code camp, and I'm not sure if he would
have done it if not for establishing that mindset that this training is
valuable. (I recognize the value of code camps is debatable.)

 _3\. Motivation is an important (and tricky) thing._ There were times where
he was spending more time on video games than programming. But I remember when
I was learning, and programming felt very hard and mysterious for years before
I began to feel comfortable making an entire project on my own. The difficulty
level was demotivating at times.

------
danso
I've tried to teach code to coworkers and friends for free. It doesn't really
work out. Teaching programming is significantly more difficult than doing it
(IMO). You'll definitely learn how hard programming is to learn, and that can
be helpful. But unless someone puts real skin in the game, and/or have a real
need to learn programming, they probably won't be able to muster the focus and
commitment needed to reach a satisfactory skill level.

~~~
andybest
I have also tried to teach people how to code, though mostly in the context of
them needing to do it in order to complete a specific project. I've found that
unless they are motivated to learn from the ground up, they won't tend to have
much understanding of what you're telling them, and at best will be able to
copy/paste snippets. I've found that it's actually surprisingly hard to get
across simple concepts like variables without starting from basics.

~~~
jameskegel
I'm curious sometimes what would have happened had I not learned these skills;
coding concepts apply to so many things in life, and help solve many problems
in pragmatic and efficient ways.

~~~
mynameisasecret
This is spot on. Since teaching myself to become a programmer I've also gotten
much better as a musician, as a mechanic, as an amateur woodworker and as as
learner of Spanish. The combination of dealing with logic, language and
abstraction stimulates the brain across all endeavors.

------
kazanz
I started a little full-stack bootcamp to give back to the community, I had
about a 50% success rate teaching people from all types of backgrounds,
economic and educational levels etc.

I typically charged a couple hundred bucks so that they would have "skin in
the game". 100% of the people, I or someone else funding, failed to finish the
course. Having skin in the game is absolutely critical to their success.

In this case, it seems they have nothing to lose, and I suspect if they are
willing to beg you for cash, they would have no problem going elsewhere.

I suggest some sort of deal where he has to put something in other than "time
and effort". Perhaps have him "pay" you in other ways, such as chores around
your house. Mowing the lawn, etc.

~~~
Grustaf
Good point, perhaps the poster shiuld only pay oit the loan in installments,
based on conpletion of modules, or similar.

------
aerovistae
I have helped many people learn to code.

I was teaching JS basics to a friend the other day who was interested, and he
said something that I thought was particularly well-worded. When he stumbled
across the idea of classes (as in OOP, that is), I said he should avoid them
for now because it's too advanced and it would just make things confusing. I
encouraged him to focus on basic functions and control flow.

He demurred, insisting that we do something "actually interesting" and had me
teach him how to create a class. He likened the motivation to learning
Brazilian jiu-jitsu:

> I don't want to spend hours practicing passing the guard, I want to learn to
> rip someone's fucking arm off.

And having learned some BJJ myself, and having experienced that exact same
desire and irritation, I couldn't help but sympathize. Passing the guard is a
crucial part of BJJ, but it feels quite basic and uninteresting in the
beginning, much like if statements and for loops.

The point is, make sure your learner is working on something he finds
interesting, like trying to put together a basic calculator app or _anything_
concrete that he can relate to. Empty isolated exercises that aren't leading
to building anything are detrimental to interest and motivation.

------
jrochkind1
If you don't loan money to friends, this sounds like the worst loan conditions
ever, don't do it. It's like loaning money to friends but worse. "A commitment
to learning how to code" is a pretty subjective loan repayment/forgiveness
condition, now you're in the position of judging whether he _really_
demonstrated that commitment. This is even _more_ complicated to your
friendship than a straight loan.

Who knows if he really has motivation to learn to code at all, or is just
doing it to get your money. Without his own internal motivation, learning is
not gonna work. But even if he has internal motivation, this is still like
loaning money to friends but worse.

~~~
brookside
Completely agree. I think the mistake with this arrangement is OP assuming
friend is exactly like him - enthusiastic about coding. As the whole idea was
OP's I'd severely doubt this is the case. This deal is 99% assured to end with
disappointment and possible bad blood.

------
stevedt
Just my anecdotal experience: the people who should be coding will find a way
to start coding.

The barrier to entry is so low -- talking about learning to code, not
necessarily finding employment. I have tried with coworkers and family members
who wanted to do it for the money and their heart just wasn't in it.

~~~
agjacobson
Exactly.

------
tbirrell
I assume the job is about coding, otherwise this would be a very interesting
situation and will likely backfire as your friend will have no motivation to
actually learn.

That said, here are some tips. Note that I have never taught someone to code,
but I am familiar with mentoring someone through a skill set I already have.
Consider all languages as placeholder terms for whatever stack you are going
to teach, they are what I started my career in, so I'm using them here.

\- Beware the curse of knowledge. Yeah, I know XYZ the most obvious thing in
the world, but if you think back to the dawn of time, you'll remember when you
didn't understand how a function worked.

\- Start slow. This builds off the last one. Start with the basics. I
personally learned to code in the following order. HTML > CSS > JS > jQuery >
PHP > MySQL > PHP. Start easy and lay a solid foundation, then build on that.

\- Teach the language before the framework. Okay, this is based off my
learning experience rather than my teaching experience. However, if you want
your friend to fully grasp and be able to keep going, teach them JS before
jQuery and PHP before Laravel. Show them how the magic works. It will make it
so much easier for them (and you) down the road.

\- Have fun. I know that's a cliche ending to every list ever. But remember to
make the process enjoyable. Presumably, you are a programer, and if you are
anything like me, you love what you do. Try to instill that in your teaching.
It'll make your friend more likely to stay and learn without fighting the
process.

Good luck!

~~~
auggierose
> HTML > CSS > JS > jQuery > PHP > MySQL > PHP

I apologise in advance for the snarky comment, but it seems you have not
reached solid foundations yet :-)

~~~
goshdarnheck
If you find yourself starting a statement with "I apologise [sic] in advance"
then maybe consider not posting it.

~~~
Stratoscope
That is excellent advice!

I just want to mention that the "[sic]" is not necessary. "Apologise" may be
uncommon in the US and Canada, but it is the preferred spelling outside North
America.

------
gorpomon
Here's my two cents as someone who's taught coding and also taught literacy
for adults.

My gut feeling is that it will be hard to make work. Learning to code takes a
long time (a bootcamp is 11 - 17 weeks at 60hrs a week, so 660 - 1020hrs).
However keep in mind that's entry level proficiency.

I think the best outcome would be that this person learns enough to get into a
bootcamp. You'd be shocked how many people apply who just aren't ready to even
start. They could learn enough with you that they find out if they like it or
not, and if so from there they can take out a private loan to attend one. Keep
in mind, I'm not sure how predatory (or not) the companies giving private
loans to bootcamp grads are, but it is an option, and at ~$17k in cost, it's
steep but not life derailing if doesn't work out (my guess is it's about the
cost of a broken bone if you're not insured, just a guess there).

If you make the expectation they learn to code to get a job, it probably won't
happen, if you level set that they learn enough to get into a program and OWN
IT, then perhaps you'll have some success.

Just my two cents, hope this helps!

------
RankingMember
I think wanting to teach him to code is admirable, but I hope he actually
WANTS to learn, given the difficulty and need for perseverance.

I do question the lending money thing but maybe there's some aspect of his
character that makes you trust him enough to risk the relationship that we're
not aware of.

------
eof
I have tried to teach people to code. More often than not it does not work
out. It appears to me there is something intrinsic or developed at a very
young age which sets a mind up to be both able and willing to think like a
programmer.

Most people simply don't think that way, end of story. Some do though, I hope
you picked one of them.

I wouldn't worry too much about teaching him to "code" as there are a lot of
ways to be valuable in the industry in general, and helping your friend is a
very good thing to do.

In any case, I think you will probably get a lot out of this . Just don't try
and force a square peg down a round hole.

~~~
ryandrake
Totally disagree. Like any skill, all that's required is motivation and
practice. You don't need some genetic trait or in-born talent to become a
programmer, any more than you need it to learn a foreign language, play the
piano or build furniture. As the saying goes: You don't need talent to
practice.

~~~
eof
As someone who has spent nearly 6 months in spanish speaking countries, trying
to learn spanish; I think language acquisition is a similar-but-different
aptitude type thing.

I am just bad at parsing audio basically, I also have a hard time picking out
lyrics in songs and whatnot. My spanish is terrible to this day.

I definitely learned some, and can stumble around by myself without english,
but no one is going to mistake me for a spanish speaker.

I think programming aptitude is similar; for sure just about anyone could
learn to use a loop and if statement to solve fizzbuzz type problems; but are
they going to be able to modularize those control structures and come up with
solutions for "real" problems?

I am pretty sure not.

------
hackermailman
The best intro I've found is the edx course HtDP which is now a micromasters
track [https://www.edx.org/micromasters/software-
development](https://www.edx.org/micromasters/software-development) it's free
to audit instead of paying for the verified track (which gets you TA help). He
could conceivably do the first 2 courses in that track then learn whatever
you're doing or finish the whole track by next year.

------
quaunaut
I sorta did something like this.

A friend of mine[1] pushed and pushed and pushed me to learn Python, and at
one point even paid me a small amount to make two plugins for Anki(a flashcard
dekstop app), which was really difficult, but are still on my Github today[2].

That was enough of a push that then, I pushed as hard as I could into Django,
got my first gig, and a year later switched to Ruby/Rails, and have been
growing ever since.

I highly recommend this course of action. It absolutely changed my life, and
brought me from barely being able to scrounge out a minimum wage job after
crossing the country, to making more money than my Father and being able to
live effectively wherever I want, and in just 5 years. It's been incredible,
and it's all thanks to his kindness toward me.

1\. [https://twitter.com/kfdm](https://twitter.com/kfdm)

2a. [https://github.com/bravely/Anki-Reset-
Leech](https://github.com/bravely/Anki-Reset-Leech)

2b. [https://github.com/bravely/Anki-Priority-
Switcher](https://github.com/bravely/Anki-Priority-Switcher)

~~~
GuiA
Did the friend pay you before, or after, you made the Anki plugins?

~~~
quaunaut
After. Like, it was literally a pay-for-code thing. Soon as he confirmed they
worked, he sent me a check in the mail.

------
franciscop
I have been using codementor.io and I love it. It is similar, except that you
get _paid_ to teaching instead of having to pay to teach. That one is for you
in case you are interested to keep growing (and get some money).

For your friend I think that is great as you avoided any kind of conflict of
interests for him.

------
Grustaf
Really great initiative, I hope it works out well! I haven't taught anyone
like this, but in other contexts.

I would say since money is involved and he doesn't necessarily have the same
strong motivation that self learners usually do that it's important to lay
down clear rules, i.e. what does it mean to learn to code. Ideally this should
be output based rathe than input oriented, like building a certain simple app.
That's also extremely rewarding.

I always tell people to follow the stanford course on swift (from itunes u),
it's absolutely brilliant. Depending on his background something else might be
more suitable, but in any case you could act as the TA checking his homework,
but also as a classmate/teacher that can answer questions. The bulk of the
presentation of new material you ca safely leave to a mooc i think.

Good luck!

~~~
foota
As someone who isn't very well motivated, I think required time inputs are
useful, although not past the point of boredom.

------
avdicius
A personal account of perhaps an old timer already. Entirely based on personal
experience so probably less than representative.

People are either able to code or not. Teaching does not work. Those who are
able to code almost entirely pick all the skills by themseves. If a 'natural
born' coder gets into some formal environment, such as university or
something, suсh a person in two months surpasses the level of all the peers
and the direct instructor as well.

In the university I was trained for automatics. But I quickly learned that
coding takes me no effort at all, as opposed to, say, understanding
electronics. After reading Wirth, Kernighan & Ritchie, and Stroustrup I often
found myselfs hinting students from the programming department how to perform
their tasks as they were scratching their heads and I was just passing by.

This has nothing to do with inteligence. I'm perhaps not very smart. When I
starred at some scheme I had no idea if this an amplifier or something else,
what is the role of one resistor or another. At the same time mates from my
group read it as it was written in plain English (err, in plain Russian to be
precise). But the very same persons were totally unable to code. It's very
strange. For me coding is trivial and takes no inteligence. This is why I do
it for living. The path of the least resistance. I'm kind of puzzled why
persons smarter than me cannot code.

Anyway, after reading some foundational books the only thing that helps is
reading other people's good code. For me it was reading pieces of the old
(around 90's) BSD and GNU code.

I never met a person I'd appreciate for directy handing me over any useful
coding skill. YMMV.

------
nyxtom
Make sure you set project oriented goals, this might help eliminate the issue
of him asking you to fix things for him all the time and also create some
foundational skills. Also, there are some wonderful classes online that go
from basic logic to coding skills all the way up the stack. Check out
[http://www.nand2tetris.org/](http://www.nand2tetris.org/)

------
kreeWall
I was hired a year ago without a computer science background into a position
as a data analyst (I know data), but needed to learn how to code. I've been
using a lot of online resources on my journey of coding. Feel free to reach
out if you'd like some of these, I can help you figure out what would work
best for the languages and concepts you'll need help with!

------
agjacobson
Coding is a very complex skill. The success probability in going from zero
coding experience to being a self-starting coder is a bet I wouldn't take
except out of pure friendship or charity.

There are two problems. If you substitute "gardening" above for "coding," my
statement is still true. The second is the nature of learning exercises. We
all know that a real problem to solve generates motivation that is much more
valuable than, and can self-generate syntax and algorithm knowledge.

With all the free tools, free courses, and free pdfs around, I wouldn't try to
train someone who is not already brimming with questions generated by real
frustration.

------
gedrap
This is a noble effort but your post is missing one key answer: is this person
motivated enough to do it? Or just needs some money right now and maybe for
the next month or two?

Coding is hard, and takes a lot of hours (like, a thousand or two) to get to
basic proficiency. So yeah, you need a lot of will power and motivation to get
it done. Especially outside formal setting like university, where you are
pretty much forced to do it.

I know plenty of smart people who have uninspiring jobs with low salaries, and
they keep talking how they will learn to code, but they don't manage to go
past hello world.

------
obstinate
It would have to be a very close friend indeed for me to offer to do a bunch
of free labor (in the form of teaching) in addition to giving money, and I'd
have to be satisfied that the circumstances were not reasonably within the
person's control. It's not that I think people don't deserve help up when they
screw things up that are within their control. It's that I don't want to
"throw good money after bad," and from my experience and what I've heard from
others, that's the majority outcome for situations like this.

------
hluska
What if you flipped it around a little? You aren't so much lending him money
and teaching him to code as it is hiring him to help you with a side project.

If you judiciously assign him tasks to work on, help him get started but
encourage him to use solid Google/Stack Overflow skills to solve his own
problems, you may end up truly helping him.

The alternative, which scares me a little, is that he will start working on
tutorials, get bored, start to doubt himself and then completely disappear
from your life because he failed and can't pay you back.

------
meerab
One common mistake is to assume that 'only way to solve his job problem is to
teach him to program'. If your goal is to make the man stand on his own feet,
there are more than one way to do so. High schoolers have career counselors.
Their job is to match student's interest and available careers. You are
overwriting career counseling step.

You are saying 'Learn to code, that career path worked for me, it will work
for you'.

------
oblib
I did something similar with my daughter's fiancé, but I didn't really teach
him how to code. I taught him how to learn how to code and he picked it up
fast and was very productive.

Unfortunately my daughter broke off the engagement so we didn't get a chance
to work on much together but he went on to a career in coding so it worked out
pretty good just the same.

------
brador
Lend only money you can lose and ask them to learn programming. But don't
sweat if they don't and walk away if it starts risking the friendship.

------
zappo2938
1\. Learn Microsoft Excel. 2. Take test at temp agency. It's all they care
about. 3. Profit. Quickest way to earn a living with a computer.

