12 ms·
Ask HN: Do coding coaches exist?
When I used to play online poker, I had weekly coaching sessions over Skype with a pro who reviewed my play, or talked me through particularly difficult hands, and gave me things to work on. It was incredibly helpful.
I am wondering if any similar thing exists for programmers. I would love to have guidance to improve my programming by someone that is better at it than I am, and be able to get opinions and guidance on my thinking and decisions about particularly complex problems.
I do read a lot, and I have discussions with other programmers, but what I am looking for is something more in depth. I would like a situation where I can get regular, specific feedback.
I haven't heard of such a thing before, and would love to know if there are people out there doing this, or that would be interested in doing this.
- scottharveyco 14y agoMy local Ruby on Rails organisation, in Australia, has a list of mentors available for different topics. I've both given sessions and attended them and they are always educational. https://github.com/rails-oceania/roro/wiki/Available-mentors https://github.com/rails-oceania/roro/wiki/Available-mentors
- nlh 14y agoThis is a great idea. I'm not sure if others work the same way, but I know my coding-brain is much more receptive to learning and improvement when the feedback is on code that I've already (tried to have) thought through. I could read 100 books on Advanced Ruby Theories and "learn" a lot, but take a block of code I've already written and tell me how I could make it better and my synapses will go wild :)
- asher_ 14y agoI couldn't agree more. This is exactly the experience I had being coached with poker. Sometimes you get some insight or way of looking at a problem that you probably would have never worked out on your own no matter how much time you were given. Having an external person who is invested in your success is really powerful as a tool for learning.
- skrebbel 14y agoMy employer does this in-house, by pairing a programmer up with a more experienced programmer or architect in roughly the same field, and having them review the programmer's work on a regular basis. I bet there's many firms with a system somewhat like this. That said, if your team does peer code reviews, you get a lot of that coaching that you ask for, directly from your team members. In fact, if your workplace doesn't have any way by which you can regularly collect feedback on your work, I'd be very worried. If nobody cares about the quality you produce, chances are small they care much about what you do at all. In any sufficiently important team, code reviews are a must in order to guarantee a sufficient level of quality.
- asher_ 14y agoI work in a small psychology research lab in a university. I am one (the senior) of only two programmers. I work here because I am passionate about the problems I get to work on, as well as the freedoms afforded to me. Since I am in this situation, code reviews and pair programming are of limited value to me, although we do them so I can help my junior colleague.
- mgkimsal 14y agoI've been approached by 2 people to mentor them in coding, and neither worked very well, but it was primarily my fault. In one case, we just had a lot of communication problems for a few weeks (probably mostly my fault) but expectations weren't set on both sides early on (regular times to meet, goals, etc). In the other case, we ended up discussing things a bit more and decided that's not what he was really after. That said, feel free to reach out to me if you'd like to discuss it, and perhaps we might be a fit (or I might know someone who is for your needs). http://phpmentoring.org/ http://phpmentoring.org/ is a site set up to help people match up with each other, but I've no idea what sort of success any of them have had.
- asher_ 14y agoI will check out that site, PHP is one of the languages I work in regularly. Thanks!
- WayneDB 14y agoI would like for a site to exist where I can go and find an expert on whatever I need and consult with them over whatever communications method they prefer (Skype, Google Hangout, Phone, etc). The experts would work for tips/donations, an hourly/15 minute fee, wishlist items, credits, bitcoins, barter, etc. If anyone is interested, I have a more detailed roadmap for this idea, a couple of domain names that would work as well as technical and financial resources at my disposal. One of the domain names is ExpertHour.com, which I think is decent enough. I don't necessarily want to co-found this with you, but I might want to commission it or invest what I have for a very small return. Email me if you want to know more.
- mgkimsal 14y agothat was minutebox.com, but they seem to be acrossio.com, focusing on internal/enterprise (can't figure it out from the site too much).
- willaaye 14y agoAt LiveNinja we are doing exactly this and we are launching to the public next week. Check us out at http://www.liveninja.com http://www.liveninja.com If you'd like early access email me at will@liveninja.com Thanks!
- WayneDB 14y agoCan't wait to see what you've got!
- miles 14y agohttp://www.allexperts.com/ http://www.allexperts.com/ http://www.google.com/search?q=related:www.allexperts.com http://www.google.com/search?q=related:www.allexperts.com Google Answers was awesome: http://en.wikipedia.org/wiki/Google_Answers http://en.wikipedia.org/wiki/Google_Answers
- PieSquared 14y agoI've talked to some of the guys at Tutonic.com, and seems like they might be trying to do something similar. I can't tell if they're getting anywhere or have any users, though.
- ibgeek 14y agoThere's a company called Software Carpentry ( http://software-carpentry.org/ http://software-carpentry.org/ ) that runs workshops for scientists but they might do the same for other programmers or have an idea of who might.
- ComputerGuru 14y agoInternships. Find a great company w/ top-notch developers who aren't too stuck up or arrogant to give proper advice.
- huhtenberg 14y agoAmen to this. Tutors w/o industry experience are useless. And virtually no one with the experience will do the tutoring outside the work.
- thibaut_barrere 14y agoI can tell you it exists since I'm doing exactly what you describe: providing short sessions over Skype/shared-screens, on various topics including pure coding, freelancing, or ETL. I only do that on a lightweight volume (and I am paid for that since this year). I believe Avdi Grimm does something similar too. This is something I really enjoy doing, and I'm surprised that it's not more widespread.
- Kliment 14y agoDepending on your level, I might be interested in doing that for you. Contact me at kliment [at] 0xfb.com if interested.
- inglesp 14y agoThis is something I've offered informally before. Is it something you'd pay for?
- asher_ 14y agoThis is something I'd insist on paying for. Investment in a relationship like this goes both ways, and having a coach that was not incentivized to continue would be a deal-breaker for me.
- btilly 14y agoThe problem is this. Any coach who you want to listen to can make more programming for themselves than you can afford to pay them. Getting the incentives right is tricky. Money is often not going to be the right incentive here.
- asher_ 14y agoI agree, money isn't the only incentive. Some people (myself included) have a passion for teaching. Money is just an extra motivator. I don't think its true that they can necessarily make more programming themselves than I can afford to pay them either. Remember, I am not wanting to hire someone full time, but for only a few hours a week. If I have to pay multiple hours of wages for an hour of high quality coaching, that is perfectly fine with me.
- willaaye 14y agoWhen we launch LiveNinja ( http://www.liveninja.com http://www.liveninja.com ) in about a week, we will have coding experts/coaches available for you to hire and video chat/screenshare with. If you have any questions or would like to know more please email me at will@liveninja.com Please also email me if you'd like to be featured on the site as a Ninja/Expert for our launch. Thanks!
- breckinloggins 14y agoI've often thought about doing this. I have been coding for a LONG time, and during that time I, like most programmers, have learned through others and experience that the practical lessons that are difficult or impossible to teach in more formal settings (and that includes the usual training programs that companies put their new recruits through) are much easier explained in a one-on-one setting, often at the whiteboard or through pair programming. One of the things I've realized is that I love to teach this stuff. I'm not talking about syntax and "what is an object" and all that stuff; I'm talking about stuff like: - Programming is simultaneously much easier and much harder than you imagine. The trick is to determine what your mind and society just convinces you is hard (before the fact) versus what ACTUALLY separates average or beginner coders from the masters. - In anything but the smallest script or test application, architecture is EVERYTHING. But architecture is more of an art than a science. It takes more skill than most imagine to figure out what to name things, how few or how many "buckets" to construct such that current and future functionality fits in the right bucket, how to recognize when your current architecture needs to be amended or replaced, yet how to restrain yourself from designing a cathedral when all you need is a two bedroom apartment, and how to develop the discipline and leadership to keep other programmers (and yourself) within the architecture that you've laid out. - Along the same lines, how much easier it is to code something when you have thought through the overall concepts in your head, not in the world of your favorite programming language. - The skills you need to learn new programming languages in minutes or hours rather than days or weeks. - It is fun and enlightening to understand what's happening at the bits, bytes, and machine code level at the same time you understand what's happening behind the layers of abstraction that your programming environment provides. By connecting concepts "all the way down", I've seen many wonderful "a-ha!" moments. - The notion of "audience". Just as you must design your top level interface to the audience of your end-user, so must you design the layers of your code to the audience of the programmer-user who will use that layer to implement higher layers. Truly understanding that programming at each layer is about designing the best, most usable interface you can for the layer above you is, I've found, one of the quickest routes to respecting and appreciating architecture. - The true barriers to becoming a great programmer are not often the technical ones. Things like algorithms, idiomatic coding in a certain language, database design, performance analysis, and design patterns are challenging and are worthy to learn, but they are almost unlearnable in a vacuum. When you're just getting started, the same can be said for just learning how to program at all. In my experience, you MUST have a project in mind. You can read all the "21 days" books you can find, but in the end if you don't have an idea that you just can't wait to implement, you'll be sitting there with a blinking cursor and nothing to type but the examples in your books and tutorials. I don't care if it's Space Invaders, you have to have SOMETHING in mind. - Debugging is often a more important skill than coding. You must be able to shake all superstitions and approach problems from a rational basis. Just like an experimental physicist, you have to learn how to form reasonable hypothesis, understand what would falsify them, and then go about doing so in a methodical fashion (in a process that often looks a lot like binary search). I still occasionally make use of fancy graphical debuggers like those in Xcode and Visual Studio, but the more I studied and mastered the art and science of the debugging process, the less I relied on those things. Nowadays, it is often faster for me to debug a problem with nothing but print statements. I also find debugging to be extremely enjoyable rather than a necessary chore. I think it's because of the "gather evidence, hypothesize, test, iterate" cycle. - In the end, programming is the reification of "thought structures". I think this is what I find so appealing about the craft: it's the closest we have to magic. When you truly learn to create and reason about these structures in your mind and in your heart, and then learn to translate that into the magic words of your programming language, you will be on your way to becoming a master (or at least be able to create something useful of which you are proud).
- CesareBorgia 14y agoIt does exist! Check out Avdi Grimm's pair programming/coaching services: devblog.avdi.org/pair-programming-services/. If you're looking for a real reboot, consider Hacker School (hackerschool.com) or App Academy. Disclaimer: I'm one of the founders of App Academy. Read here (http://qr.ae/8QbUb http://qr.ae/8QbUb) for how experienced devs thought that App Academy helped them level up.
- abecedarius 14y agoI've done this for money a couple times, and informally for a few friends. (Plus, a bit more regularly lately as a student at Hacker School, which you ought to check out.) When I did it for money, both clients were appreciative, but I think it went better with the one I'd previously written a lot of their backend code for, who were also well-heeled. This gave me specific knowledge and more time to give them. (I could be available for some more of this after the Hacker School term is over, late December.)
- kami8845 14y agoIs there a HackerSchool alumni discount? :D
- abecedarius 14y agoIt's more like, that makes me more likely to do it. :) It's hard to justify much of it at the rates you can get programming instead.
- TallGuyShort 14y agoI'm sure there are online communities that would provide what you're looking for. I've been a member of cboard.cprogramming.com for over a decade and that community is exactly like what you're looking for. It's focussed on C/C++, but people who post their code either with specific questions or asking for general feedback will get a wealth of advice on how to avoid common pitfalls, how to do things better, and how to be more standards-compliant. For other languages, ask around for the good communities - they must be out there.
- asher_ 14y agoOnline communities are useful, but not what I am looking for. I already have access to online communities. Coaching is different - it is more personal, more focused, and is based on a longer term relationship.
- econner 14y agoCodeHS.com is an online introductory programming that offers feedback from engineers. The focus though is more on beginners.
- dmcg 14y agoSlightly off topic, but I've had a great learning experience by asking the right question on the Code Review Stackexchange http://codereview.stackexchange.com/ http://codereview.stackexchange.com/
- adriand 14y agoThere's Rails Mentors - http://www.railsmentors.org/ http://www.railsmentors.org/ I've been a mentor on there for ages and I've "mentored" several people - probably around 7 or 8. The reason I put quotation marks around "mentored" is because of all the people who have applied to be mentored with me, only one has actually applied themselves to the task at hand and consistently requested feedback and guidance. As a result, that was really the only rewarding mentorship interaction I've had via that site, which is a bit disappointing. One of my colleagues signed up too, years ago when that site launched, and I think he's had better luck; he has a postcard on the wall near his desk from someone he successfully mentored in China. The reason I bring this up is because I think anyone who wants to be mentored must realize that the relationship goes both ways: you want a good mentor, but your mentor in turn wants a good student - and anything less than that is disrespectful.
- saidinesh5 14y agoHow about contributing to a nice little opensource project? "I had weekly coaching sessions" - Pick/Create 1 Issue/Task every week :P "I would love to have guidance...." - Discuss your plans with the project maintainer/other contributors. "I am looking for is something more in depth......" - Heh you ll be writing code... don't you think that's enough depth :P "regular, specific feedback" - Every merge request you send..... you get a nice code review, and specific feedback... and a ton of suggestions for improvement. Since "coding" itself is a huge field, just be sure you pick a project that interests you and has a lot of scope instead of $random_famous_opensource_project. Good Luck :)
- sarhus 14y agoHi there, check Codersumo (http://codersumo.com http://codersumo.com). We're still in alpha stage, but the idea is to solve challenges and get feedback and reviews from more experienced programmers.
- logn 14y agoThey're called tutors. wyzant.com has a lot of tutors. But beware they take a large commission so prices are inflated.
- tekknolagi 14y agoI'm a coding coach. I'm only 16 but I am the programming captain of my school's robotics team and I teach a small class. I have to do just that to help the kids along, to learn, to fix small things and generally become more independent. I love it.
- michael_miller 14y agoWhat you're describing is very similar to a 1-1 with a lead/manager at a good company. Usually you'll meet once a week, talk about any problems you're having, and work through any hard design problems you're encountering. If the company is well managed, your lead will be very experienced and know how to help you become a better programmer.
- sophacles 14y agoIt's funny that this turned up today. Last week I was browsing craigslist for quick side gigs, and came across a post of someone wanting a Django/python tutor. I pinged the person - and decided to help her out. The problem is: I am not comfortable taking money to help someone learn something, since I am not a professional tutor or teacher. Fortunately in this case she was also about to apply for a job at the university I work at, so payment for the tutoring couldn't happen at all (due to potential conflict of interest issues). So instead we worked out a deal where I will help her learn if some of her learning projects are stuff we need to do at my local hackerspace, and helps me with some of the pages I do as volunteer work for charities. We were talking and have come to the conclusion that this arrangement might be somewhat scalable for learning - an apprentice model for coding, that benefits 3rd parties. It certainly gets around some of the weird power dynamics of traditional apprenticeship/mentoring and paid tutoring. Further it is a good way to get some needed talent to good non-profits that may not be able to otherwise arrange such a thing. Finally, and this is the kicker - it gives novices practice in real development, and it gives experienced people (who may be hiring) access to people to see how they are at problem solving in a real environment, rather than interview tests, potentially faked code samples, etc. (Not to mention, someone willing to go through the effort of something like this is probably already a great candidate on the strength of "wants to learn more and actually takes effort to do so", which I have found to be a strong indicator for a good employee). I don't know where you are located, but if you want to get into some more discussions about setting up something like I described above, feel free to email me: $HNUSERNAME at gmail.
- asher_ 14y agoThanks for your reply. It sounds like what you are doing is admirable but not along the lines of what I'm after. I don't think that there is really any weird power dynamics in this kind of coaching, at least not in my experience. On one hand we are dealing with a domain in which reason is the ultimate method of arbitration, and a good coach would not be presenting me with opinions or ideas that I could simply disagree with due to some difference in personal belief. Instead, they would be challenging me with different ways to think or different ways to approach a problem, and be able to explain its benefits if they weren't obvious to me. On the other hand, the trust that can be built in this type of relationship can be quite useful for the learning process. Having someone that I respect as a programmer as well as a coach allows me the comfort to know that I could come to them with either a specific problem of general deficiency and get the kind of response that will give me the most enlightenment in the long term, which is often different to what you'd get when asking a question online.
- martinced 14y agoI kinda like the idea but... Coaches for online poker had that convenient that you could get a coach whose prices would always been within your reach: if you were a regular winner (or break even) at, say, $25NL then you probably had a few $25 buy-ins you could use to pay a coach begin a regular winner at, say, $50 NL or $100 NL and both of you could find value in doing that. Then there was also this idea that you could learn from someone only a bit better than you: someone who was beating one or two levels above yours had already stuff to teach you and would be unlikely to give you bad habits. But for programming I'm not too sure: it's not really a good idea to learn from someone who's just "a bit better" than you. And if you want to learn from someone who can do $100/hour consulting then it may cost you an arm and a leg to learn anything from him.
- asher_ 14y agoWhen I played poker (at reasonably low-medium limits) I think I paid $100/hour for coaching if memory serves me correctly. I don't mind paying for quality coaching at all. I see it as a worthwhile investment in terms of both productivity and happiness (I love learning!). On the whole, I think high level education is very undervalued. When you think about it, how long is the payback on a $100 coaching session if you get just one really good insight that improves either the efficiency or quality of your code?
- blacksmythe 14y ago>> And if you want to learn from someone who can do $100/hour consulting then it may cost you an arm and a leg to learn anything from him. “The only thing more expensive than education is ignorance.” Benjamin Franklin quotes (American Statesman, Scientist, Philosopher, Printer, Writer and Inventor. 1706-1790)
- writeclick 14y agoPerhaps you should consider http://devbootcamp.com http://devbootcamp.com. I'll be graduating in a week, and it's been a good experience.
- amorphid 14y agoI've benefited from having coding tutors. My path was to pick a project I wanted ti work on, start coding it myself, and then find people who'd be willing to help me figure it out. The thing that took me a while to understand was that lessons tend to be much more effective when I ask the teacher for help with building a specific feature, including architecture, refactoring, and testing. Chris Pine's Learning to Program was a very helpful book, too.
- dkubb 14y agoThis is something I've done before, and I quite like it. I didn't realize how enjoyable it would be until I was a team lead in the early 2000's and I started doing code reviews and established peer reviews in my team. The team would review the code with someone else in the team, and when they couldn't find any issues they'd pass it to me for final review and deployment. The process was sort of gamified (without realizing it, I later found out their goal was to get it by me without me flagging anything). Since that experience I've been freelancing, I usually try to establish the same environment in the teams I work with. I sometimes do pure mentoring, where I'm not working on the day to day aspects of the project, and am just reviewing pull requests and offering suggestion; but this isn't quite as common yet. Lately I've been getting more gigs to act as a mentor, and that's pretty cool, but I don't think it's something I would want to do full time. I've found the mix of working with the team and mentoring feels perfect to me.
- YuriNiyazov 14y agoI have done this quite a bit over the last two years, and was paid for it. I love it.
- andreipop 14y agoI've thought a lot about this problem. Trying to remedy it I built http://coderook-beta.herokuapp.com http://coderook-beta.herokuapp.com Still just playing with it.
- andreipop 14y agoI've thought a lot about this problem. Trying to remedy it I built http://coderook-beta.herokuapp.com http://coderook-beta.herokuapp.com Still just playing with it.
- porter 14y agoI would pay for this. If anyone is interested please contact me to discuss.
- KentBeck 14y agoI coach full-time at Facebook, and I coached for various clients part-time for a decade before that. We work a bit on technical stuff like how to design, test, or refactor, but honestly the technical work is mostly to establish trust so we can work on more personal issues--time management, multi-level thinking, communication skills, principles of programming. For example, a couple of recent students had ADD. We worked on finishing one thing before starting the next, mostly using techniques that I developed for my own use. After a month of daily one-hour sessions the change was noticeable.
- shill 14y agoIs the word 'coach' in your title, or is coaching just something you do as a good manager? I really enjoyed your recent post about incrementally escaping local maxima. It would be cool to read some of your coaching tips and stories someday.
- david_vydra 14y agoUnless programming is a hobby for you, I would recommend you look for a job that has mentoring built in. I remember that at Google -- which hires pretty decent coders to begin with -- there were plenty of both educational and 1-1 opportunities to get better. In fact you had to pass a 'code readability review' with senior colleagues before you got access to check in any code. If changing jobs is not an option, then, yes, remote coaching/pairing works pretty well. Lately, I have been starting remote study groups to master new technologies with other developers. Take a look here for an example: http://scalafp.pbworks.com http://scalafp.pbworks.com and http://scalapro.pbworks.com http://scalapro.pbworks.com
- arikrak 14y agoI think this is something that could be very helpful. In college, I didn't get so much feedback on code, so I would be interested in having a "coding coach". In fact, I wonder if anyone would be interested in helping a small group get better at coding. The coach would provide feedback and answer their toughest questions. I guess it would be like a small independent coding bootcamp. I'm not sure how compensation would work, but I wonder if anyone would be interested in it?
- JackMorgan 14y agoI do this. My best success story? I started mentoring my little brother in July when he graduated with a B.A. in philosophy. I code reviewed, wrote assignments, helped him choose his own projects, gave advice on what study, and pair programmed with him on weekends. He worked hard; just started his first job as a software engineer last week. I used to be a schoolteacher before getting into development, mentoring combines my two favorite things: teaching and programming. Feel free to contact me, I'm open to take on one or two select individuals interested in working hard.
- andrewkkirk 14y ago@JackMorgan - what's the best way to contact you?
- bridgeyman 14y agoI am planning on creating a startup that would do something along these lines. This would be a great opportunity for me to learn about coaching through Skype. If you are interested, I would love to devote a few hours a week to code coaching. I wouldn't consider myself an expert, but I have been coding for 9 years or so now. What level are you at, and what level would you prefer your coach to be?
- keeptbluesideup 14y agoI've been thinking about something like this for awhile. As a developer who works mostly freelance from home, I do engage with some other developers when working on agency contract work, but these engagements are infrequent and I find most of the team to be on the same skill level as myself. The bulk of my other work is solo projects for smaller businesses. With that being said, for somebody like myself, I find it tough to meet other people who I would consider a mentor. The only mentor types I have met have been very short lived relationships due to the short term nature of our contracts. I have felt it would be unprofessional to contact them outside of the work and after the working relationship has ended. For the better part of this year, I have read something computer science related almost everyday. I have made it a day by day mission to better my skill set and understanding of everything computer science. Going at it alone isn't easy sometimes. I actually wouldn't be able to put into words how grateful and happy I would be, to able to meet and have a long term friendship with a "mentor", even somebody I checked in with just once a week through email, irc, telephone, etc. So hacker news, where can I find somebody like this?
- Inebas 14y agoWell, what I am doing right now, just trying out so can't say for sure how effective it is. I was working with a a freelancer who knows python and is more experienced than me so I say I'll pay for your time for pair programming, design review, etc... What I would do is to code the way I would and then go over it with him via teamviewer or something and we chat over skype. For me, the difficult part is creating the right classes and refactoring, making unit tests and making code scale. I also have design questions. Perhaps I'll make a post when I have more feedback.
- ashitvora 14y agoDid you try oDesk?