Hacker News new | past | comments | ask | show | jobs | submit login

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.




This is what a properly managed internship (Or Jr. Developer's first 3-6 months) should look like.


Reading this kind of "experiences" always make me wonder if there's something wrong with me. As it seems, I am the only person in the world that can't find a mentor willing to invest a tiny bit of his/her time for teaching. And I didn't even ever asked for "peanuts".

It would be amazing to have the chance to learn from and improve my skill with an expert developer, and I'm sure a lot of people will agree with me.

Doing this at large scale would end up creating a "generation" of highly capable developers - and you will know that because you trained them yourself - who will eventually become the mentors and, in turn, teach to the next generation.


One way to read your comment is as a request for help, but there's no way to contact you directly from your profile here on Hacker News (in case you weren't aware, the email field is not public).

It's worth noting that some open source projects are noted for fostering a community that accomplishes what you describe... perhaps all that is lacking is the initiative to seek out such an opportunity!


> One way to read your comment is as a request for help

Well, actually, yes. I'm sorry, these are my first comments on HN.

> perhaps all that is lacking is the initiative to seek out such an opportunity!

Not really. I tried the open source way more than once both trying to collaborate on open source projects directly and through GSOC, but it failed. Turns out that GSOC seems to be exclusively for people already collaborating on the projects who partecipate in GSOC, so I got rejected (with harshness). The same happened (with even more harshness) on the copule of projects where I tried to collaborate directly (and I can guarantee I've been polite). For this reason I got discouraged, but not enough to give up. I already decided to try on a new project (NeoVim), but until now I didn't because of a lack of time.


Definitely don't give up!

I'd guess GSoC brings a lot of 'random internet strangers' to projects whose maintainers are highly motivated to reward known-quantity existing contributors (previously working for free) with the stipends.

Dealing with the personalities involved in open source can be the toughest part of the process; I recommend reviewing how previous contributions from others have been rejected before deciding to contribute yourself. Also, be sure to interact with the developers and community a bit (IRC, forums/issues, etc.) to get a feel for how well you fit in.


Can you please point me towards said open source projects?


I think the first step is to decide what you're interested in learning and reaching out to a project closely aligned with your goals. It is possible you will be rejected, but still worth making the initial effort to find one that would hold your interest. See the following blog post (and comments) explaining the ideal mindset needed when going into this: http://www.hanselman.com/blog/OpenSourceIsAThanklessJobWeDoI...

The specific group that I had in mind was Python; they have implemented a mentorship program at http://pythonmentors.com -- I'd recommend starting there and asking for pointers to other Python projects. With resources like http://learnpythonthehardway.org/ available you should be able to hit the ground running.

Apache maintains a similar process here: https://community.apache.org/mentoringprogramme.html and Debian does too for their package maintainers: https://www.debian.org/doc/manuals/developers-reference/new-...

Google and Facebook both run programs offering opportunity primarily to university students (Summer of Code and Open Academy). You can find a recent study of the Facebook approach here: http://www.sserg.org/the-role-of-mentoring-and-project-chara...

There is also some older info aggregating projects that were looking for help: http://teachingopensource.org/index.php/FOSS_Mentor_Projects

The Outreach Program for Women might not be applicable to you, but there is a lot of good info on their page too: https://wiki.gnome.org/OutreachProgramForWomen


Has anyone else tried this?

I've tried it with several people with varying degrees of success. The only real insight I've had from the process is that there are some people that just can't be taught programming because they have no interest in computers.

They're only making a half-hearted attempt to learn because they "hear you can make a lot of money programming."

Even junior level web programmers need to know a lot of non-programming topics to get their foot in the door. They need to know what a domain name is, what an IP address is, what a web browser is, what a file is, what a folder is, what a hard drive is and how to access it, how to back up files, how to copy files, the difference between http and https, the impact of various browsers and versions, etc, etc. All sounds great until you really try to teach a complete computer novice how to program. They just have incredible gaps in their basic computer knowledge that are not easily overcome.


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.


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.


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,


I was an apprentice to a screenwriter and it worked exactly the same way. Best learning experience I had. And also the most efficient. I learned a lot, met influential people, got familiar with some tricks of the business and eventually got myself a show. All that in just two years.


We have this apprenticeships in Switzerland for all kind of jobs including IT. Those apprenticeships do always end in an official degree which is controlled by the government and is the same for all professions (e.g. mechanic, electrician, nurse, construction and so on).

For IT there is one apprenticeship with Software Development focus which takes 4 years and is split between school and working in the company. The content is defined by an IT company association and all companies providing those apprenticeship need to stick to this defined content. Those apprenticeships are usually done when people get 16, so they have this degree when they turn 19/20. After that they can go to university to do a Bsc or Msc if they want. I think its quite a good system because people get introduced early but slowly to the working world and also have a lot of time to learn other job related things like project management or office politics.


Doesn't this restrict the technology choices of the companies who are employing these apprentices?


The content of an apprenticeship is defined on a higher level and not by technology. So it doesn't really matter what kind of technology the company uses. Examples would be: Can read&write a spec, can develop a program based on a spec and so on. The more theoretical part is usually done in school wich all apprentice from the different companies attend.


How does the student learn the actual programming language in this case? Is that the responsibility of the employer to teach?


It has changed a lot how this is organized in the last 10 years so I`m not really up to date anymore. I think currently besides weekly school the apprentice will go to multiple week long sessions at the school where all the fundamental things will be thought. But besides that the rest needs to be done by the employer.


I know that there's some cross-over in the Python/Scientific community with http://software-carpentry.org/ - which is interesting.

I also know that in Chicago 'apprenticeship' is a word that is thrown out there a lot.

http://www.8thlight.com/apprenticeship

https://engineering.groupon.com/2012/software-apprenticeship...

https://www.devmynd.com/jobs/apprenticeship


What distinguishes an apprenticeship from just a standard junior developer job?


Lower pay.


I taught myself to code up to a 65/hr job in 2 years and trained a friend to a 25/hr job in half a year.

Very glad to see others doing the same, I can't wait until online education mixed with mentorship proves to be a viable education option.


What did you teach yourself in those 2 years, if you don't mind me asking?


I would have loved an internship like that! I'm afraid that some would accuse you of oppressing your friend by exploiting his labor at the unlivable wage of $12/hr though :)


...I make $12/hr...

... :(


You should flesh out your HN profile a bit; who knows who might be able to help you out. (Specifically, the email field is not publicly visible so no one can contact you right now even if you entered something there.)

Point to your GitHub or some other demonstration that you deserve better!


If $12 an hour is unlivable, are the Mcdonalds and Walmart employees working $7 an hour just zombies?


In many cities for many of them, with the hours they have to work, the split shifts they are forced into, and the wage theft management is guilty of, yes, many of them are essentially zombies.


Nope, they just accrue debt because there's no other way to live in this society at that pay scale unless someone has very convenient living conditions (such as not needing a car).


It also depends where you live. Every day I pass a Wendy's in Redwood City with a big sign advertising a $10.15 starting pay (which is still only $1.15 over CA minimum wage).


I did this years ago. Hired a 16 year old kid who was about to be homeless, and trained him, and then he got a good job as a programmer a year later. Felt good and will do it again.


What tools did you use? Was any of the time spent working together remotely? I would love to help people out but I don't see it fitting into my schedule easily. (It sounds like you did this as a freelancer, but I would be doing this outside of my full-time job.)

The tool I am looking into next is http://bigbluebutton.org/


I did something similar. Two friends of mine were unhappy with their jobs. One was a writer, and the other worked as a wordpress administrator. I started a somewhat informal weekly class, and six months later they both work as software developers.

It absolutely works, and it's certainly more efficient than a four year degree.


I've heard that this is what Germany still does.

For every profession, there is an apprenticeship you can enter for it. You get paid (unlike an internship). Apprenticeships start after highschool or college.

I heard this years ago, so I can't remember the exact details, but maybe and German can speak up about it.


I have many pupils like this, all over Israel -- two small business owners, and the rest hold high-paying design, tech and programming jobs.

I got to experience the joy of accepting my own student's invitation to join a startup where he has been employed as programming lead.


Great idea.

Are there any websites for finding people like you who are in a position to mentor?

I guess I'll start asking around because I'm in a position where I could really benefit from working on more projects but I'm not skilled enough to take on the responsibility myself.


I'm doing that, but I'm paying more than $12/hr (more like $20)


Did exactly this and now he's earning market rate as a Rails developer.


It worked for me (an apprentice).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: