Hacker News new | past | comments | ask | show | jobs | submit login
How a blacksmith learned to code (joshuakemp.blogspot.com)
82 points by joshuakemp1 on Nov 9, 2013 | hide | past | favorite | 42 comments



@sherr Thanks for the kind words and encouragement. I guess I should have clarified that by NO MEANS do I consider myself a Software Engineer, I am still VERY much a junior developer who has the awesome opportunity to get to work on an awesome development team at ZipList! I love getting to learn and be mentored by the senior developers at ZipList. I only wrote this article and blog to show others not to give into the naysayers and that regardless of your prior experience or education you CAN learn, and get hired even if you don't have a CS degree or any degree for that matter. Everyday I am SO excited to get the opportunity to really start to learn this wonderful craft at a great company....keep coding peeps, you can do it! :-)


I always say that everyone can (and should) learn to program -- but by that I usually just mean that you can't be considered computer literate without being able to make the computer automate work for you. For most people picking up a powerful editor possibly combined with a scripting language or two (shell+awk+grep, perl, python and/or ruby for instance -- and maybe throw in R, Mathematica or something for crunching numbers (even SQL -- it depends on what you need)).

It's still fascinating (and maybe a little sad, re: the state of programming) that you could end up earning 70k after a year of part-time(?) (hard!) self-study. Maybe even more sad that you (as I understand it) made less as a (presumably) proficient blacksmith.

All that said, we've got few blacksmiths in Norway, so if you want to switch back, consider migrating here ;-)


I'm spreading this to everyone as a lesson in Applied Arse-Kicking.


Frankly, I'd be more interested in "How a developer learned to forge metal."


I don't think there's a much of a story to write about it, but I decided I don't want to waste a life employed in IT after all (as someone who's been coding all his life), and wanted to learn something new. Eventually I chose metal work; now I'm learning welding and machining. I'm also hoping to learn something about casting and forging and stuff.

Coding will remain a hobby so that I may focus on what I love about it, and stay true to my principles & avoid making any compromises due to commercial pressure.

It wasn't an easy decision to make and I still feel horribly uncertain about my life and all tha. On the other hand, learning something completely different is very very refreshing, and inspiring.


I'm currently learning how to weld as well (full time program). There's definitely something very satisfying in learning how to build things with your hands.


Indeed. Thinking back what once got me into programming as a kid (and what still keeps me interested) was the idea that with a reasonably powerful computer and some skill & time, I could create any software imaginable. It wasn't a special affection to software in particular, but to making things -- and computers made making things very accessible because once you had a computer, you had all the tools you needed.

Now the maker inside me must've realized that making physical objects we use and rely on all the time isn't impossible, and can indeed be quite accessible once you learn a few things and make some investments (or find a good hackerspace?).

I would recommend any coders out there who code out of the love of creation and the freedom that comes with it, to at least consider expanding their horizon and learning to manipulate more than just bits. It doesn't have to be metal, in fact with 3D printing and diy electronics you could end up with something really awesome. (But don't forget 3d-fad isn't the only way to deal with plastics; it can be machined too, for instance). Combined with your software knowledge, who knows what great new ideas a new skill might bring with it? It'll deepen the experience of making for sure.


I started as a kid as well. One of the wonderful things about computers being self-contained learning environments is that there's such a wide range of possibilities for expressing your intellectual curiosities and ideas.

Now that I'm a bit older though, I am enjoying the physicality of working with my hands, producing something tangible and having something that can outlast me, instead of code that most likely will just last some years.

After I'm done with my welding training, I'd like to do at least some introductory machining classes. Perhaps even a furniture making course. I have to good fortune of living very close my community college, and as long as I can work part time as a developer (albeit at odd hours) I want to keep learning how to build things with my hands.


My own story is pretty simple.

I lived in California, and found Ardenwood Forge nearby. The blacksmith there (who you've likely seen before if you watch Mythbusters) was willing to teach people for what felt like a tiny amount of money, and Scott was a great teacher.

The biggest thing that I had to learn was "how to know when its done" - which can range from when it's functional to when it's functional and form is beautiful as well, or anywhere in between. There's some of that in programming as well, but "it works" and "the tests pass" are hard and fast stopping points compared to "Do I add another twist to this, or should I add a scroll instead?"

The biggest thing I miss from smithing is creating something physical. Watching a program form and execute perfectly is fun, but there's something simply magical about taking a letter punch and turning it into a elegant scribe.

Sadly, I have not continued beyond learning the basics, but I still look on the craft with a smile, and hope that some day I can spend the time to do it again.


It's still far too early for me to write much about it, but maybe I'll have more to say in the future. So far, I've taken a single-session introductory class at a smithy a couple towns over and gone back a few times since then for some self-directed practice. My range of techniques is very limited, and even without straying too far from what I know, I am still frequently surprised by what turns out to be easy and what turns out to be hard. I don't remember going through such a stage with coding. I was not exposed to the notion of algorithms or programming techniques or commonly-encountered sub-problems until long after I started, so I couldn't really think about difficulty in those terms.



This made me laugh hard because I couldn't agree more.


Software development, metalwork, carpentry, all have the same base skills, of planning, patience, and perseverance.

I do all, and many more such engineering/mechanical/creative type things, and I know many developers who are as adept at hacking in the real as in the aether.

Anyway, my point I guess is that it's all the same domain, and the skills are eminently transferable, and the internet fills in the knowledge blanks to a large extent.


I really liked this post, is full of good advice on how to implement big changes, like having small, bite-sized goals where performance is easy to evaluate. The networking part was very well done, forcing himself to engage the community, it puts him out there and provides positive value. And finally, building a very simple website for someone was a great idea, there's nothing like getting experience from a real world project. Joshua, congratulations!


Yes, small bite-sized goals is so important for keeping going in long-term discouraging projects - as let's face it, programming can be infuriating and tedious! lukeprog calls the focus on small bite-sized goal "success spirals" http://lesswrong.com/lw/58m/build_small_skills_in_the_right_... and I think it's definitely important.


I just noticed your username, and I have to say thank you for your detailed articles and specially for your melatonin study. It personally helped me in improving my sleeping habits when I was having a lot of stress-induced sleeping issues. Thanks again!


You're welcome. I think the melatonin suggestion is particularly valuable for HNers as we all tend to spend so many hours staring at bright white/blue lightbulbs called screens...

(I think my recently finished Redshift self-experiment will show this effect dramatically.)


OTOH, taking up with the Scientologists is probably not the ideal part of that to emulate.


I love this story (and have read his book), but this sure isn't happening in the Valley or San Francisco.

As someone who's a similar skill level to Josh and applied to tons of jobs here in the Valley, I've found that this is an isolated story on the other coast. In SV/SF you have 5/6 developer bootcamps cranking out developers each month applying for a handful of junior jobs. I'm sure the blogging helped, but I doubt any companies would have offered the same salary here (60-80k) when they could have had their pick of developers that just worked 80 hours a week for 12 weeks.


I wonder if the knowledge transfers to bare-metal programming.


As someone over 30 with two degrees and programming for 7 months now (JS and now Objective C), I found this story quite interesting. I mentioned my two degrees because they are worth about as much as his no degree. My masters was from Georgia Tech in city planning (land development) and got me decent jobs in real estate development until the Great Recession. Now, I am unemployable in my field because I am more nerd than marketing mouth-piece.

That said, it is a little disheartening to learn than I chose to learn technical skills (I love just learning about the differences between all the syntactically-similar C-based languages) only to be in the same stupid predicament of needing to rely on marketing and gimmicks to get a job.

Maybe if I did not live in the Hollywood of the programming world, that might not be the case but I do. It was a nice story nonetheless. I see he benefited from having friends who code to tell him exactly how to get the most out of his code 9 months. I spent three months doing a @"Code Year" += 2 at Codecademy --before --I formally even learned how to type (big mistake) and 6 months before I started commits to Github (bigger mistake?)... and I still have not been to a JS event. Not even Hacker Dojo.

Anyway, good for you for getting there. I will put down the text books and text editor and start networking...right after I finish this Objective C app.


Fools, this is just marketing dressed up as an "inspiring story".

This guy sounds like a self-help guru, he doesn't sound like a programmer. Oh look, there's a book he has written which is available on Amazon.

He also suggests Zed Shaw's Ruby tutorial a couple of paragraphs after mentioning Rails. What the hell is this guy smoking?

The road to success he describes is linear, with no branching points. A complete lack of flexibility or discovery, the exact opposite of learning programming.


Fantastic show Joshua. Very useful post and I passed it along to some friends, who wanted to get into coding. To state an obvious and pervasive point, on why I would want to hire someone like Josh, is his persistence and hard work, which will be as important an asset as his coding skills (even more so, at current point where his coding skills are accretive).

A point to note - The one-month rails course is now 99$, as opposed to $49 you had paid.


I read "month" as "day" and thought holy crap this guy is destroying it!

I only saw two sites he made in his resume(two including the blog itself) and I'm surprised that's all it takes for $70k job. A lot of it is probably due to strong self-promotion and initiative rather than raw programming prowess.


Salary is also strongly dependent on location and industry.


everybody is learning howto code but when will people learn how to solve hard problems. I would rather see people learning complex math and physics before learning how to code. creating various crud applications is not really that hard.


You learn to solve hard problems just like you learn to do anything else: by working on them. The problem is that there isn't a "List of Hard Problems" posted anywhere. Aside from a few well-publicized ones (e.g. cure for cancer), being able to recognize a Hard Problem requires years if not decades of domain expertise, which most programmers don't have (since software engineering is a relatively young profession).


It's harder than it looks. To make an average CRUD app the current state of the art, you need to know a very large number of tools, each of which has its own ecosystem of alternatives, each of which has a different philosophy. This makes it all but impossible to offer a course on the subject that meets any standard of exhaustiveness. So the would-be web developer has to wade through a morass of conflicting ideas on best-practices and will inevitably screw something important up, like authorization.

Then you have the constantly-shifting nature of the field, forcing you to continuously study to stay on top. It's much more difficult than it looks to an insider who already put in the hours learning.


You're right, but making CRUD apps pays a lot better (and more quickly) than complex math/physics.



I don't want to downplay learning complex math and physics, but there are other "hard problems" that programmers (and hence products) aren't solving that don't invoke math or physics. One of the things I harp on in product development is "if we only solve the easy problems, what's to keep someone else from coming along and solving the easy problems better than we do?"

Just a different perspective on the same topic ;)


so very, very little of day-to-day coding is what I bucket as CS problems. It's mostly turn the crank part assembly that's needed.

Not that CS problems aren't out there, but your architects should be decomposing those for more junior people.


Why junior people?


I guess we are still at a stage where there are many problems that can be solved by building 'simple' CRUD apps.

Once these problems are considered as solved and as frameworks/tools evolve further to get the CRUD out of the way really quickly, we'll see more people learning to solve complex problems.


Sure, it's not hard, but there are some things that are challenging, like controlling customer expectations without upsetting them, making deadlines, or moving deadlines.


This was an amazingly inspiring article. Thank you for writing it. It was astounding to see the degree to which you threw yourself in. Your points about marketing and joining meetups EARLY seemed especially insightful. And, you top it off with, "And then go build at least two awesome things that solve people's problems".

That is awesome. Well done!


Congratulations Joshua. Great reading about your experience learning how to code, sticking at it and getting the job you wanted. Your post was short on details (I assume your book will have more) but still inspirational. Definitely good reading something positive like this at the weekend! Good luck.


I'm an erstwhile (amateur) blacksmith, now a programmer. Funny to see the two together. Blacksmithing and programming are both areas where practitioners make their own tools. Compilers and tongs can be bootstrapped.


So basically it was more how to market yourself and get a job to "learn how to code".


Actually that was pretty important advice and a huge part of the picture/story. You can learn through non-traditional pathways just fine, but if you want to turn that learning into a career you're going to have to know a lot more about marketing and put it into practice than someone who has taken the traditional route, with a familiar story, and traditional access to employment opportunities.

This could have easily been a story about someone who spent a year learning to code and reporting how it was a waste of time because no one wanted to hire them. I bet a lot of folks run into that and just don't bother to write about it or make it to the top of Hacker News. Marketing matters, and if you're going to put in 20 hours a week as an investment in yourself you better be thinking about how to get a return.


No, it's both - note that Josh marketed the hell out of himself (and that he provided a concise and easily-followed how-to for that is why this page is brilliant) and hit the tutorials really hard and do one real-world project so he did in fact have the chops to say "I am a junior developer who is worth his salary."


I've a friend who principally for a living shoots things - pigeons, rabbits, and other such pains-in-asses for farmers.

In the UK, there's a fairly complex framework as to where you can shoot, how much you can shoot, and when you can do it. To this end, he's developed, single-handedly, iOS and Android apps for hunters to manage such and record their kills, principally for compliance purposes but also for their own edification.

Either way, it's been fascinating watching him learn - his approach has been to learn on the go, and iterate. He's gone from hacked-together PHP obscenity to android/iOS APIs and frameworks in about two years.




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

Search: