
A Site That Teaches You to Code Well Enough to Get a Job - cyphersanctus
http://www.wired.com/2014/09/exercism/
======
embwbam
Last year, I tried something new. One of my friends, a Mathematician, and the
smartest guy I know, was working at the library. I told him he should get into
programming, and hired him as my "Apprentice".

I was mentoring him directly. He was working right next to me. He was learning
a lot, I was enjoying the teaching, but I could also hand him boring stuff
(CSS) and he would love to do it. I paid him peanuts ($12/hr) at first, then I
got him a job for a company making around $60k after about 8 months.

This is how apprentices used to work: the master (mentor is a better word :)
would find the work because of his reputation, would handle the most
interesting and difficult work, and the apprentice would do the routine stuff
and slowly get more and more competent.

Has anyone else tried this? I think it would be cool to try it at larger
scale, with a whole team of skilled senior devs adopting apprentices to help
them with their work.

~~~
jiggy2011
How much were you teaching him personally vs pointing him at the right
resources and letting him mostly learn himself?

The biggest concern I think that a lot of people have about this approach is
that your own productivity would suffer if you have to spend too much time
handholding the apprentice with their own work. If the person is already a
mathematician then they obviously have an advantage because a lot of the
logical parts of programming will already make sense to them. I wonder how
well this would work if you applied it to someone with only a basic education.
Also people are used to school learning where they are micromanaged so might
have problems shifting to this model.

This approach seems to work well in fields like plumbing where an
apprenticeship will consist of 4 working days a week and 1 day of classroom
learning at a technical college. The difference between plumbing and
programming though is that plumbing is a far more standardised set of skills.

~~~
FLUX-YOU
Until there are widely accepted competencies, the hiring process will continue
to be murky. That may not be solvable just because technology has such a huge
scope.

Ideally you'd want someone to be able to take a test and have it spit back
"Okay, this guy's a good enough junior programmer" and then have some
certificate so that the job connections and interviews only are for
personality. This would reduce the burden on companies having to do their own
technical filtering and hopefully get more deserving butts-in-seats to get
work done.

Right now it's all guesstimation, voodoo, and a few things that seem to work
on both sides of the table.

~~~
jiggy2011
The issue is teaching them in the first place, a real apprenticeship program
should be able to take someone with no knowledge of programming and convert
them into a competent developer without taking up too much of the time of a
senior dev who is billing $50/hr+.

The best way to do this is to outsource at least some of the learning to a
classroom setting and ideally have the government subsidise this, but the
government can't possibly subsidise courses in every single type of software
development,

------
MrJagil
Excellent how this problem is continuously attempted to be solved.

As a wannabe programmer, one thing I always lacked from these sites was the
ability to somehow see my code live. I.e. it's fun to write html and css on
codecademy or python from LPTHW or whatever but how on earth do I get it on
the web or assembled into .app? In actuality, the complexity that surrounds
DNS providers, server apps (or whatever you call filezilla etc), server
providers (here i mean heroku, AWS, Cloudflare etc), those weird githubs and
repos that people chat about etc etc, is way more deterring than actually
learning what a "class" is.

Learning is fun; endless googling is not.

~~~
GuiA
And this is why I always use PHP as an introductory language if I have to
teach web dev; the setup part is much more straightforward than it is for
Rails/Django/etc., and you don't have to spend a ton of time teaching dozens
of concepts (MVC, routes, templating, git, unit tests, ORMs, etc.) before the
students can have mini web apps written.

Some programmers balk at the idea of teaching PHP with plain HTML/CSS instead
of teaching using Rails + Angular + all the fancy crap they like, but I've
taught web dev to over 500+ students in the past 7+ years (and programming/CS
to about twice that), and it's worked like a charm (and the people who get the
most upset by that notion are often those who have taught 0 students).

My girlfriend is an art teacher, and when they teach new students they don't
start right away with watercolor or oil paints; rather, they start with
materials that are easier to handle for beginners (e.g. plain pencil), so they
can focus on the basics before tackling the more subtle and advanced
techniques. Why are we trying to teach programming using all the fancy tools
and technologies used in production systems?

~~~
roywiggins
Flask. Flask Flask Flask. It's well-documented, in Python, and you can push it
to Heroku easy as pie.

You can add things like templates (they're built in, and can be really simple)
or just concatenate HTML the old-fashioned way. You can program very
imperatively and work up to abstractions. It's very friendly.

I haven't seen it used as an introductory "language" but I feel like it would
work well.

~~~
vegggdor
> and the people who get the most upset by that notion are often those who
> have taught 0 students

Does that apply to you?

~~~
roywiggins
To me? Yes and no. Yes I've taught precisely 0 students. No, I'm not at all
upset with teaching PHP, I coded up my fair share of awful PHP web apps. My
first favorite language was ActionScript which everyone loves to hate! But at
the time, nothing beat PHP and ActionScript/Flash for simple, fun web
development for beginners.

I think something like Flask might be a worthy successor. Heck it even
includes a webserver, no need to fiddle with installing Apache to test stuff
locally. And with services like Heroku the barrier to getting it online is
almost as low as PHP.

~~~
vegggdor
I somehow missed your actual arguments for flask, so my impression of you
over-enthusiastically praising flask was all wrong, sorry. Still, if Flask
does everything for you, what are students left to learn? A lot, i guess :)

------
terryp
As someone who has taught himself how to program - badly at times - I applaud
these kinds of efforts, but I wonder if they're subverting the actual problem.

See, companies - I think - need more technology people. And the pool of
technology people is limited. The laws of supply and demand say that limited
supply and increased demand will drive up the cost.

This is great for individuals, but a losing proposition for companies unless
they have limitless resources.

The one thing that Starter League, Code Academy and every other site is that
they teach individuals the real rudimentary elements of programming. And while
vital, these are not a substitute for battle hardened experiences of crappy
code, terrible mistakes or the ability to work as an apprentice.

I think it's more incumbent on organizations to figure out how to build talent
from within which is really a more holistic and basically an amalgamation of
everything.

\- Find motivated individuals. \- Validate that they have the skills to be an
apprentice. \- Accept that they're a beginner and commit to training them. \-
Learn their strengths and weaknesses and tailor a development plan for them.
\- Promote the shit out of them and make them your next generation of
software, test and system engineers. \- When they eventually leave - say to
yourself 'Mission Accomplished' and hopefully rely on a talent pipeline.

I don't know if this is a teaching hospital methodology or developmental
leagues in sports. It's probably somewhere in-between.

So these sites are great. The organizations are great. But transforming people
into functional experts in the field can only come about with BOTH training
and experience. I feel like Exercism only deals with the training aspect, not
the experience aspect.

My $.02.

~~~
cm2012
I think these courses are the step right before "\- Validate that they have
the skills to be an apprentice.". If I were going to train someone, I would
want it to be someone with the chutzpah to do self directed learning for a
period of time.

~~~
terryp
Totally agree. It's the great 'sword in the stone' methodology that shows if
someone has the skill and ability to become a developer. But this is why I
think you need both these kinds of sites/programs but also compliment them
with some of your own organization's ethos of developing talent.

------
Tyrannosaurs
Based on many of the people I've worked with "well enough to get a job" is a
pretty low bar to clear.

~~~
mmcru
these comments are always discouraging to me. i work in a different field
(sysadmin), and i've been struggling to get a job programming. am i that bad
at programming? or that bad at finding work?

i feel like i know the basics of several languages as well as html, css, sql
and git. i wrote an IT-ticket system for a healthcare clinic in python
consisting of a basic html form and a SQL database backend (i know this isn't
terribly impressive to adept programmers, but i've been applying to the most
entry-level programming positions). i also specialize in powershell, which is
object-oriented, even if it isn't used for enterprise level web apps. and that
hasn't been nearly enough to get a job, at least in pittsburgh.

~~~
nogridbag
Since you don't have a background in software, I would suggest specializing in
the language/framework/utility of the day - something like Angular, React,
etc. You will have a leg up on the vast majority of developers (the ones who
don't read HN).

I work for a small startup in the NYC metro area and of course I agree with
the parent post. We have a fairly terrible interviewing process. Candidates
are phone screened by our non-technical manager and are usually selected for
interviews based on domain experience. Nearly all of the people I'm forced to
interview have the same background (bachelors in India, sole language is Java,
5-20 years experience in finance industry most coming from big banks
Citigroup, BoA, etc). My interview process consists of an onsite coding
problem, which is of course controversial. But when none of the people you
interview have a github account (some have not even heard of github) or have
any sample work, I believe it's important. The vast majority of the candidates
sadly cannot create a List and populate it with integers in their language of
choice.

~~~
mmcru
thanks a lot for your post. input from active professionals is invaluable to
me.

i've actually been working on learning angular for the past few weeks. i've
stopped updating my github in that time since i'm just doing basic stuff, but
once i finish some more tutorials and documentation i plan on building an
angular project to display on my github. are there any particular features
that would really catch your eye as someone who hires programmers?

any suggestions regarding the coding interview problem? i see
[http://www.amazon.com/Cracking-Coding-Interview-
Programming-...](http://www.amazon.com/Cracking-Coding-Interview-Programming-
Questions/dp/098478280X) recommended a lot.

~~~
Bahamut
I wouldn't worry too much about coding interview questions, especially if
you're looking to just enter the profession. The most important aspects are
showing a willingness to learn and an ability to think critically about
problems.

~~~
nogridbag
Exactly. My previous comment may have been misleading. I don't think it's
imperative to have a github account or a showcase of your work (it definitely
would not hurt). I only have one public github project and I'm not exactly
proud of it.

I normally start all of my interviews by trying to engage in a conversation
about programming topics. But as most of the people I interview have little
experience outside of Java and seemingly no interest in programming, the
conversations are usually very brief. "I like Java." And the occasional "I
have heard of something called JQuery. I may learn that."

~~~
memonkey
Is Java frowned upon nowadays? I'm learning it as my first "real" language,
especially for Android & Spring, however I've been playing with
Javascript/JQuery and have a web/design background. I've also attempted
deploying websites to AWS and CloudBees and failed deploying to Heroku
multiple times. In any case, my original question still stands and what would
it take for me to get a job with you if I don't have a degree and only the
above projects to show you? What would you want to see in those projects and
at the interview?

~~~
nogridbag
Java itself is not frowned upon - I'm a big Java fan. What is a big red flag,
in my opinion, is when someone has multiple years of experience but is only
familiar with a single language and has absolutely zero exposure to any other
tools or languages. To me it shows that person has no interest in improving
his/her craft. It just so happens that in the finance industry, Java is used
heavily. Those who list JavaScript on their resume believe it's only purpose
is for HTML form validation. I get a bit frustrated when I'm interviewing
someone who has used Java exclusively for 15 years and is still making basic
syntax errors, like mixing up angle and square brackets. It's not a one time
occurrence, I may interview 4-5 people in a row making these same mistakes.

As to your main question, it's difficult to answer. Since we have a very small
company with only a few developers, I personally am nervous hiring someone
with little experience.

------
lorddoig
Without a reason to attract (relative) experts beyond philanthropy I think
there's a risk that a ballooning amateur/expert ratio could soon cripple this,
as happened to the way Matasano Crypto Challenges used to be run.

I hate to be critical as I like the idea, and obviously there's _some_ utility
in it for experts as it is but it's much, much less so than for amateurs, and
there's no reason to think that this imbalance won't manifest itself sooner or
later. I feel this stands a much better chance of solving (or contributing to
solving) the education problem _and_ getting good traction if it was
positioned to solve a much more general problem - like snippet management - in
a really, really good way, and tacked these features on the side.

~~~
mattetti
I see that as a good problem to have, if Exercism gets big enough that it's an
issue Katrina will be able to adapt her product to respond to the request.

Remember that this is a side, open source project, run by one person ;)

~~~
lorddoig
Totally agree. A completely off-topic aside (sorry) - I creeped your profile
and was wondering, did you create your blog template yourself? It's pretty
much exactly what I've been looking for for ages but haven't been bothered to
make from scratch.

------
jiggy2011
The landing page for this site could stand to be improved, especially if it's
target is absolute beginners.

* The instructions provided are very Unix specific and assume a reasonable level of familiarity with the command line. Lots of beginners are probably on Windows and not used to using the shell. Much as devs shun them, installable GUI clients have their advantages in this area.

* The language used on the first page is still fairly technical, "test suite" for example.

* How it works is not made clear, "practice problems" is only mentioned once at the top of the page in a hard to read colour and small font.

~~~
akavel
In fact, the article ends in mostly the same sentiment expressed by the site's
creator:

 _" But she would like to raise money to pay people to improve it. For
example, she admits that the site is a bit lack in the usability department.
“It’s hard to tell what it is just by looking at it,” she says. “It’s
remarkable to me that people have figured out how to use it.”"_

------
orjan
The site in question is [http://exercism.io/](http://exercism.io/)

------
mikeleeorg
_She admits that the site is a bit lack in the usability department. “It’s
hard to tell what it is just by looking at it,” she says. “It’s remarkable to
me that people have figured out how to use it.”_

This. I love the fact that people have come to use her site despite its
usability problems. To me, it shows there's a real need out there.

Admittedly, I also believe having a great UI from the start can be a
differentiator (especially in a young market), but products that get used
despite a poor UI mean current alternatives were even worse (or non-existent)
for these users.

I hope she's able to turn this into something to works out for her.

------
krosaen
I wonder if a new position will emerge to help with freshly trained
programmers out of programs / curriculum like this. For instance, if a company
is willing to pay 100k for an experienced programmer with years of training
and experience, what is a fair rate for fresh grads out of a coding boot camp?
The trouble, to me, seems that freshly boot camp trained folks apply to the
same jobs and it just doesn't make sense. However, if there was an established
route, like, coding apprentice that paid 60k and had strong upside at perhaps
10-20k raises per year as they reach the equivalent of junior programmer, that
could really open up the market on both sides merely by clarifying
expectations.

Say a lawyer wants to become a programmer, and he/she goes through a program
at The Flatiron School [http://flatironschool.com](http://flatironschool.com)
\- and the flat iron school can go out to companies to help get them placed,
_but_ instead of trying to get them placed at the same jobs / salaries fit for
4 year university grads or programmers with years of experience, it's into
positions like I described above - I just think it'd be a much more honest
path on both sides.

------
mbubb
Great site even with the lack of polish. Conceptually I like it. It makes you
think more about the full process of writing code than most similar sites. I
think what this does well is try to get folks to think about writing something
that QA will then test. That is good for me as I come from an operations
background and this part of programming is not natural to me. For me it is
crank out Bash or Python and keep trying until something works... This is
different it is more like "look at this framework, build the piece that is
missing"

As I am a sysadmin I tend to write tools that only I would look at. Writing
something fro a test suite is a great idea. A howto page detailing testing
process and a testing 'hello world' would be a good addition.

I was surprised that the install didn't involve a github repo install, ie that
the install script would not be part of a repo that you clone and then chmod
X+ and then install. The benefit of this is that I can keep track of the cli
repo and update when needed by watching the repo.

------
mattmanser
It's a nice site and everything, but who is this aimed at?

It doesn't seem to be non-coders as far as I can tell.

1\. You need to already have a github account

2\. The setup assumes you have CLI experience

3\. The setup assumes you use linux or a mac (because all non-programmers do
that)

So has wired misunderstood the target audience, or is the site comically
anti-n00b?

~~~
mbubb
You should have a github account if you are learning to program. In my
experience interviewers expect it.

~~~
umanwizard
I work at a huge company named after a big river in South America. I don't
know of anybody in my org that has a GitHub, and maybe like 1/10 of the
resumes I see for interview candidates have one. Is this "expectation" a San
Francisco thing?

~~~
yen223
I find that if you're not in Silicon Valley, 50% of the stuff on HN won't
matter to you.

~~~
fillskills
Very off topic, and I dont completely agree with you. But you had me laughing
out loud in a coffee shop.

HN has a suprisingly vast and interesting topic base. My mom (a complete non
techie) and my sister (Bio Medical engineer) read it on a regular basis.

------
mendelk
After spending a few minutes checking out the site, I thought I'd bookmark it
for later, only to realize I'd already bookmarked it in the past. I don't
remember ever seeing the site before.

Sigh. I clearly need to spend less time on HN proper, and more on the sites it
promotes :).

------
lutusp
Article title: "Out in the Open: The Site That Teaches You to Code Well Enough
to Get a Job"

It's a good thing the site's originator didn't make this claim. Even a first-
rate site with an enviable effect on students wouldn't want to say this.

Maybe there should be a rating system for article titles, one that measures
how far the title deviates from the article itself. In many cases such a title
hurts the credibility of the article. In this case, it's obviously a well-
intentioned and likely effective teaching method, one that shouldn't have to
live down its hyped title.

~~~
mattetti
You are totally right, Katrina never ever said anything about exercism being a
place to help you land a job. As far as I know, this has never been her goal
not does she intend to make it a future goal. Articles are rated based on page
views, education doesn't attract tons of reads, so journalists try to be smart
and come up with "catchy headlines"

------
koevet
I find it interesting that the list of supported languages doesn't include
Java, which is one of the most, if not the most, requested language - at least
in the enterprise space.

~~~
lutusp
I don't know anything specific about the site, but that might reflect an
aesthetic bias overcoming the realization that Java is ubiquitous. It all
depends on the degree to which a site's operators care about teaching what's
being used in real-world projects.

If I ran such a site, I might want to suppress my own aesthetic preferences,
but even I would probably exclude PHP, as one example, only because it doesn't
represent an easy way to create reliable, understandable programs.

~~~
LLWM
It's a conspicious omission for something that's being sold as "The Site That
Teaches You to Code Well Enough to Get a Job".

~~~
djur
I've been on exercism for a while and this is the first time I've ever heard
such a claim. The headline seems to be based on this weaker remark in the
article: "it could help the legions of people out there trying to learn to
code well enough to land a job in this fast-growing field". And even that
isn't directly based on any quote from anyone related to the site.

exercism is definitely a volunteer-driven, open-source operation, and the
exercises come from people willing to contribute them. I was going through the
OCaml exercises and found that one of them had an error[1]; I submitted a pull
request and it was accepted within hours.

I think this is a case of a clickbait headline that doesn't do justice to the
article nor the subject.

[1] Unlike some similar sites, exercism doesn't actually build and test your
submissions. This makes the site much simpler and cheaper to run, but also
makes a point that simply passing the included test suite is only the first
step. But it also sometimes results in sloppily-written exercises for the more
marginal languages.

------
redmattred
We're actually conducting a survey aimed at measuring the effectiveness of
code bootcamps (as far as job placement rates, average salary, etc.)

If you're recently graduated from a code bootcamp, take the survey and share
your experiences:
[http://www.codejobs.io/surveys/codebootcamp/student](http://www.codejobs.io/surveys/codebootcamp/student)

------
jschulenklopper
Interesting idea - and great that so many are helping in contributing
exercises.

    
    
      To solve the problem, she created a site last year that presents the
      practice problems and prevents students from being able to move on to the
      next ones without submitting a solution to the previous problem.
    

I think that Project Euler,
[https://projecteuler.net/](https://projecteuler.net/), has a better
implementation of this. All problems are available, but they become harder and
harder (at least in the beginning - they might level out now). That already is
a stimulus to solve the problems in the intended order, in addition to the
'level degrees' awarded after solving a batch of problems.

Additionally, the Project Euler forum in which solutions are shared and
discussed is only available once you've submitted the correct solution.

OK, back to Euler. I'm close to a next level award...

------
ilaksh
Moving on to the next topic in a class before an individual masters a more
fundamental one is a core structural problem with traditional classroom-based
instruction. Individual, self-paced computer assisted instruction makes that
go away by verifying that foundational skills and knowledge are gained before
moving to the next level. This is not limited in any way to programming or any
particular skill or knowledge area.

Having a mentor or tutor adds another level of enhancement. But don't
undervalue the ability of a computer to objectively measure an individuals
performance and tailor the learning material to their own pace.

------
hliyan
I like the concept, but the very first Javascript problem statement starts
this way:

    
    
      Bob is a lackadaisical teenager. In conversation, his responses are very limited.
    
      Bob answers 'Sure.' if you ask him a question.
    
      He answers 'Woah, chill out!' if you yell at him.
    
      He says 'Fine. Be that way!' if you address him without actually saying anything.
    

I'm sure this is my personal biases (and possibly age) showing, but this
caused me to walk away shaking my head.

~~~
sebular
I agree, it is your age and personal bias. The content of the response strings
(I can only assume that's what you're complaining about) has nothing to do
with the validity of the challenge.

Furthermore, the programming world has always had a goofy and awkward sense of
humor.

------
pekk
In that case, then maybe people who are refused jobs in this industry due to
some superficial reason like age can simply take the course and instantly get
a job, right?

------
FlyingLawnmower
[https://github.com/exercism/cli/releases/tag/v1.7.1](https://github.com/exercism/cli/releases/tag/v1.7.1)

Looks like there _is_ a Command Prompt executable for windows, but man, it is
not easy to find or use for beginners. Hell, I'm still a little confused about
how to actually interface with it, (although I am far from an expert on
anything).

------
kbajorin
I've had fun doing the haskell challenges. I really like the peer review
aspect of it and the git style terminal submissions. But these are just small
practice problems and are not geared towards "Teaching you to code well enough
to get a job". It's just one of many helpful ways to learn the ins and outs of
a particular language.

~~~
watty
> It's just one of many helpful ways to learn the ins and outs of a particular
> language.

That's actually all it takes to get a job programming. Maybe not any job, but
certainly a job.

------
lubaru
I myself am in a position where I'm treated like an apprentice, and it's
great. I've only been programming for a couple of years and the rate at which
I'm learning, and the broad swath of knowledge I feel like I'm getting from
the senior developers is great.

------
mhurron
" Exercises consisting of a test suite and a README are available in Clojure,
CoffeeScript, C#, C++, Elixir, Erlang, F#, Go, Haskell, JavaScript, Lua,
Objective-C, OCaml, Perl5, Python, Ruby, Scala, and Swift."

I wonder why no plain C?

~~~
cschneid
Probably just that nobody has sat down and done it. Maybe that could be you...
:)

[https://github.com/exercism/x-api/blob/master/CONTRIBUTING.m...](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#implementing-
a-new-language)

~~~
mhurron
> Maybe that could be you... :)

I was wondering why no C because that is one I could use, and would like, the
practice on. So for everyone else's sake, I won't.

------
simi_
I maintain a list of resources that also can help programmers get a job:
[https://github.com/andreis/interview](https://github.com/andreis/interview)

------
samuell
Reminds me of [http://rosalind.info](http://rosalind.info), although that is
for bioinformatics (but including a basic python introduction part).

------
Thirdegree
I'm actually having a decent bit of fun with this. The problems aren't
challenging by a long shot (at least not yet), but I'm enjoying myself.

------
lazyant
Good but the title had nothing to do with the content (no mentions of jobs or
employability)

------
gaius
A hipster Project Euler

------
eglover
Major fail to me. I've been working on a similar project for 2 years and this
may work in a classroom but going through the exercises it's tremendously
underdone for the general public. I don't think this is going to go anywhere
which is disheartening because I was so excited when I saw the title of the
post and read the article. The actual program is a huge let down.

