Skip to content

Comment on Jack Of No Trade

Comments

I've noticed that there are two kinds of "makers" who get stuff done.

The first kind learns and learns deep. They are spooky good at it. They'll latch on to something and then follow it all the way down to its roots, learning it in tremendous depth to the point that their skill in it seems almost supernatural. After all of this, they say to themselves "now what can I build with this?" (Or find a place where an employer tells them this).

The second kind decides what they want to build up front and then pursues wide and varied avenues of technology on the path to this destination. They often have fascinating slivers of depth in certain areas but lack that magical seeming deep domain knowledge. These are the people more likely to identify as "self taught" with all of the downsides that come with that. They make up for this with ridiculous determination and a kind of sixth sense for what is possible if you try hard enough. Everything they know, they learn on the path to the destination.

Both can accomplish amazing things. You'll never hire one of the second kind. The second just isn't going to be able to show you pointer arithmetic on your whiteboard in your pet language.

You say it like these things are mutually exclusive. I know of several people who fall into both categories.

For instance, one of my good friends is one of the smartest programmers I have ever met. I've been bothering him to come down to our hackerspace (shameless plug: http://heatsynclabs.org) for YEARS, and he recently started obliging.

I came in one day and saw him sitting at a workbench hovering over a microscope.

Me: "Hey, Trav, what are you doing?"

Him: "Sharpening knives."

---

Ah, yes, of course. Because most people who want to sharpen a knife head down to the lab with a bottle of aluminum oxide because they want to use the microscope.

In the month since then, he has become an encyclopedia of knives. Every material, every manufacturer, every sharpening technique. I was at his house the other day picking him up for a road trip to Colorado, and his workshop is filled with sharpening stones (and rods) and different knives. On the ~9hr drive to CO, we went back and forth, me soaking up seemingly everything I could about knives.

Next month he's going to present at our little Tedx style event at the lab. (Members present on a topic they're knowledgable about).

But this obsessive learning technique isn't limited to knives. Back when we were roomates, he decided that he wanted to build a stepper motor controller, and I don't mean "assemble the kit from adafruit". He wanted to build a controller for the type of ultra-high-performance DC stepper motors found in hobby airplanes and helicopters because he wanted to build a quadcopter, but didn't want to use somebody else's electronics design. I spent that summer learning, by proxy, about control theory, what is back EMF, what do "closed loop" and "open loop" mean? How do motor controllers work, and why?

--

Examples of my friend aside, I think that your #2 is enabled by the traits that make up your #1, or that they can at least feedback into each other. You get the super broad domain knowledge because you've gone really, really deep into a few subjects, and can intuit most of the rest of the domain because of it.

I can relate to the author. I had a hard time passing exams in university due to undiagnosed concentration issues. I knew I was smart, but failing standardized tests left me feeling like an imposter. Regardless of finishing projects and tasks in the 95th percentile.

I am multilingual, an autodidact and I love programming. I also have a gift (your 6th sense) for engineering in that I am able to visualize and analyze machines/systems by glancing over the designs or watching them work. Combined with soft skills and programming experience this has proven of great value in industrial settings where I am able to relate and connect the mechanical, software and other engineering departments.

A couple of years back I started working at a start-up doing robotics and machine vision. Due to lack of time and personal I had to teach myself everything from inverse kinematics, path planning to a solid knowledge of 2D and 3D machine vision. In less than a year I was developing and integrating 3D vision systems and steering industrial robots. Only after delivering that first project on my own did I allow myself to internalize my accomplishments.

I might not have a formal engineering degree, but being a jack of all trades has proven to be a high value asset. It's about finding an environment where your (broad) skills pay off.

Generalizations as the one above make it harder for people like me to start a career as I very much belong to the second group.

Also, I can show you pointer arithmetic in my pet language.

Both can accomplish amazing things. You'll never hire one of the second kind. The second just isn't going to be able to show you pointer arithmetic on your whiteboard in your pet language.

Maybe you won't hire the 2nd kind (as you say). Doesn't mean someone else will see the value in such background. Though there is an implicit message in your post. That all college trained programmers are the same. Which is downright wrong, due to there being a lot of different types of programmers. There are people who I wouldn't let near a database, but can really write some awesome C++. Or those who are awesome at writing web crawlers, but suck at making effective CRUD apps. Or maybe that guy who is a genius at VB.NET, and carries the weight of a whole company on his back (maybe he taught himself). You wouldn't hire those? Then you wouldn't hire yourself.

Hmm. I didn't specifically mention college education, but you've got something at the end there.

I am a college trained programmer, but I do identify strongly as the second type. When I really think about it, I'm forced to admit that if I was in charge of a large company's HR policy, that policy would probably prevent hiring someone like me for all but the most junior of positions.

A smaller company might have a lot more freedom in this regard. "You'll never hire one of the second kind" might better have been said as "big companies never hire the second kind".

Doesn't it make you think? Given the ratio of bad programmers vs good ones, should we even bother with degrees? From my experience, there are more bad programmers with degrees than there are without them. Like this project I just took over. It involves fixing the whole stack of a company, because some guys who had Masters degrees and had worked in IBM and NASA (two guys) managed to build a system so bad, that SQL injection is the worst of my worries (they never sanitize or check the contents of the GET or POST array (PHP)). But I, who lack a degree, much less a master's, am going in to get them set up with nginx, Python/Django and Mongo. Plus write re-write some custom systems because the geniuses used global variables everywhere.

But any big company HR dept. would hire them in a heartbeat.

Disclosure: I don't have a college degree. But I don't want to work on your big company either. (:

Self-taught programmer here and wholeheartedly agree. I've seen a lot of bad code from developers with high-level degrees and supposedly aeons worth of experience over me and yet it is I who goes out my way to write decent code and fix the professionals mistakes, I'm not exactly the first choice for a lot of companies because I wouldn't look as good as Tommy G with a masters degree would on a proposal document tendering for a big project as opposed to I who hasn't got any sort of showy trophy degree for a company to parade around.

Too many companies place emphasis on degrees instead of capabilities. I might not have a degree but that's because I thrive and learn a lot easier when I'm teaching myself as opposed to absorbing and listening to someone else drone on about things that might not interest me. At least when you're self-taught you only learn the parts that matter to you and so, you're more likely to learn them correctly.

I completely agree with you, and I find myself in the 2nd camp.

I'm curious about why you say "You'll never hire one of the second kind"?

How does one of the second kind fit into the world as an employed developer? This is something I'm struggling with currently.

I am also a jack-of-all-trades and master of none. It's not that you won't get hired. It's that you won't get a nice salary, as you will have 'junior'-level skills for any field you apply for.

There are some positions where this obviously does work in your favour, but in general, you can be a junior in a bunch of jobs rather than a senior in one.

The point was that current interview processes have no mechanism for measuring the second sort of individual. They don't have a way to measure tenacity and the uncanny knack of discovering the best way to do something when starting from ignorance(1).

tl;dr: A Google-like company would not have hired (someone like) Woz.

(1) Its double-hard because there are no shortage of people with tenacity who have the knack for doing things in a terrible way over and over. They all think they're in the former category.

I find Github has helped with this problem a lot.

I actually think this is the solution. Nothing would be more impressive than a python project that started out as a "c++ witten in python" project that barely worked but then evolved into a well managed project full of best practices in a matter of weeks.

I'd hire that person to do nearly anything. Sadly, not many interview processes are hip to github yet.

There are good companies that will hire people like us. Just keep searching. Hint: they are not startups, but boring, regular (but stable!) companies in boring industries. But you can go crazy getting them up to date with awesome software because they appreciate someone who knows what they are doing.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.