Hacker News new | ask | show | jobs
by blackSnake 3020 days ago
I can relate to it through the lens of Karate. I've been studying just about 10 years and I'm just beginning to see the depth of the art. Its almost like you spend those 10 years building the foundation before you can start building the house.

One of the points in the article really jumps out and again, I use martial arts as a lens for comparison. Talking to other programmers extensively accelerates your growth. If I had tried to piece together the knowledge my Sensei taught me through "Youtube, books, & self-study", I would have not gotten as far as I have. There's something about having a mentor that can warp-speed your progress. Anyone who has mentored under a master in their field would attest to that.

The programming culture is one where you're encouraged to go out and figure it out. Yes, there are teams and pair programming but I don't see most companies emphasizing mentorship as much because its not directly tangible on the books. Its more of a long-term investment and they see employees jumping around every couple of years, so why bother?

It would be interesting to see master programmers (30+ years of exp) offer year-long intensives for serious students who wanted to accelerate their growth. I bet you would get some excellent programmers.

8 comments

Sal Khan has a good talk [0] about applying the methods of learning martial arts to education. That is it doesn't matter how many times you do a retake it matters that you get it correct. As opposed to setting the pass rate at 50% which means you never get a full foundation to build on learning the next level.

[0]: https://www.khanacademy.org/talks-and-interviews/conversatio...

Similar here. It's been 10 years since I started going on on my own. I've gotta say that about half a year before my life broke down back then that I got introduced to Linux. I joined IRC channels I was interested in; #python, ##C, #Bash, and of course the distro specific channels.

I basically built up my career around my code foo and the way I was taught on IRC. Even if it may seem like a harsh environment in the beginning, they proved to have a point with the semantic perfectionism, only through which one can convey all nuances of what one is trying to say - and do.

One advice upfront, look your stuff in the original technical documentation. The C Standard, the infamous Intel Developer's manual. Learn some assembly, be it on an old 1980ies personal computer.

It's one of the big lessons how you start organizing your code flow, function and data so that you can effectively get things done and make something more from something less with what compares to hammer and chisels. I find myself fixing python code under comparable viewpoints today; being thrifty of what types an object may take, being explicit with comparisons, etc.

The thing that lets this compare to training Karate I once heard in the context of chess; "It's you who is manufacturing your own checkmate". To have a comfortable, easy to modify codebase is infinite work, but the more intention you put into the detail, the less you need to care about the bigger picture. Good code is equivalent to but the intention behind it.

Reminds me of story of a local Taekwondo Great Grandmaster named Moo Young Yun. After well over 50 years of training and extremely high accomplishments, he walks into the gym one day and exclaims how he finally is starting to learn how to throw a good punch.
I agree. Christopher Wellons AKA skeeto from nullprogram.com (whose articles end up on the HN frontpage somewhat regularly) has mentored a high school student for two years:

http://nullprogram.com/blog/2016/09/02/

More importantly: the more perspective you have, the faster you can adapt it. You've learned a lot about body mechanics and the interactions of humans in those 10 years. But by learning different movement arts, you'd learn it even faster. Similarly, you have to study more than just "computer science" to gain an expansive perspective and be able to apply it faster than just studying the one thing.
That's an interesting comparison. As it was put to me by my sensei, black belt is when you have the basics down so that you can begin to learn.

So many "learn to code" sites, books, and programs lead people to believe that the journey essentially ends there when it's actually the beginning. Sure, people understand that further experience is needed, but without some kind of guidance it's very haphazard.

Google does have a strong mentoring culture that gets appropriately rewarded in perf cycle. It worked out well for them. People would generally jump to a different team within Google and thus the long term investment isn't really lost.
I believe Kent Beck does a mentorship program like this at Facebook.
The F# foundation also has a mentorship program for people that is free iirc.
Thank You a zillion!. I followed along, got a free membership and am chatting with their helpful community on slack. Their Feb Mentoring program is closed but they have another one coming up for September cohort. All in all looks promising.
More information can be found here http://fsharp.org/mentorship/index.html