I'd rather save those terms for people working on real high-tech, like fundamental physics or medicine, rather than use them on people who churn out CSS all day.
Which is ironic, because as far as I can tell, the most common way to become a "10x" programmer is to keep doing similar things with the same tech stack (i.e. not really challenging yourself). It's amazing how quickly you can crank out yet another Bootstrap CRUD app after you've done it a handful of times.
You know what would be an awesome title? "Professional". I'd rather work with adults instead of people that think they can trick 22 year olds into working overtime by feeding into their narcissistic fantasies.
I like "creative problem solver"; honestly I don't even enjoy coding that much, it's just the most powerful tool for solving problems (along with math) I've come across. Since HR drones don't grok "creative problem solver", I usually sell myself as a software architect and data scientist - that pretty much sums it up.
"Creative problem solver" is only a valuable label if you are well-read and understand existing solutions to problems. Which is not creative. In fact, most problems can be solved perfectly adequately by applying tried-and-true boring, uncreative methods.
That's not really true. The creativity comes in seeing the parallels between disparate areas, and being able to use things in unintended ways to good effect.
As a random example, I was able to take a road pollution model that was meticulously optimized, written in Fortran, and approximate its results in Javascript, with almost an order of magnitude performance INCREASE, to the point that pollution models can be computed in near realtime in the browser (road network density permitting).
I did this by using optimization to approximate the model's pollution distribution about road segments using Bezier surfaces, which are fast to compute and have the nice property of being completely contained within the convex hull of their control points. That containment property let me leverage an R*-Tree to quickly determine which sources could contribute an appreciable amount of pollution to a given pixel, and only compute those.
None of the algorithms or data structures I used were original, but the circumstances where I applied them are somewhat novel and the results are fantastic.
Agreed. Techies use names like these [1] ;-). Granted, these are not from the professional world, but we would never be so boring as to choose ninja or even hacker
And completely ignored by serious programmers/engineers. You want a rockstar, sure let's sign that million dollar contract and we'll be on our way. You want a ninja, sure I will assassinate anyone, that will be again be a million dollar contract. You want a engineering with a very specific set of skills, okay maybe we can work something out.
"But what if, like me, you don’t relate to these labels at all?"
My personal hypothesis is I think these labels are just meant to attract and appeal to a certain demographic. The demographic that skews young, male, and single. The demographic that prioritizes work above all other pursuits. The demographic that is naive and easy to manipulate into seeking life fulfillment by staying at the office from 7am-9pm.
This is the sort of employee they are seeking so they do what they can to attract them. They aren't looking for people who "coder ninja" doesn't appeal to. It's by design.
I think it actually works since I'm totally turned off by those job ads.
My point is that they are trying to attract those that identify with the programming subculture. Many fantastic programmers don't identify with that subculture but they aren't looking to hire them.
Well exactly. The concepts of 10x programmer, ninja, rockstar, etc... appeal to narcissistic people that really believe they're above average or at the top.
I know I am not Donald Knuth or Linus Torvalds or John Carmack or Woz. I am not a rockstar.
LAZINESS: The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.
IMPATIENCE: The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer.
HUBRIS: Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer.
> The concepts of 10x programmer, ninja, rockstar, etc... appeal to narcissistic people that really believe they're above average or at the top
I think 10x programmers are what programmer should be. In the end, we should have people with all of "10x programmers" -- which mean all people will eventually end with the same great skill of coding.
Unfortunately, 10x programmers are real. There are real programmers who can do the same job with less time. 10x teams are real, too. It is mentioned by Tom DeMarco in Peopleware book. Personally, they might not be called "Ninja" nor "Rockstar", but the fact is their skill is higher than average.
But well....
I really agree with Dan Kim here. I think programming is a continuous improvement. You may not end up like Torvalds, but if you are really want to self improve yourself (e.g. Knowing your code yesterday is worst than today and really want to know how to make the code better), then it is good enough.
IMHO, to reach this summit ("10x"), it is very-very hard. You can improve your skill by doing one of these way:
* By volume. Just do so much thing in your field and voila, you will mastery that skill. Just like pilot. Or,
* By supervisioned learning. This is what we know by "mentorship". You may don't know "how to start" if you learn by volume. With supervisioned learning, you can make the learning faster and enjoy the outcome earlier.
You're entirely right, but it's a stupid plan. You know what happens when you get a bunch of college kids to build things? You get something that, uh, looks and acts like a thing built by a bunch of college kids. IE, a dumpster fire. It turns out experience matters. I can't even get mad at the people that perpetuate this, because they're going to get what they deserve.
Seriously though, that's what many of these people /will/ get. Worse, they'll actually believe it was their own talent that got them there. The world is a cruel and unfair place.
Many of the most valuable tech properties today were built by college kids, or better yet college dropouts. It turns out that having your whole life ahead of you matters, because you're more willing to take risks.
My point isn't that young people are incapable (some of them are great), rather, that the people that think they can build something by taking advantage of naivete are going to quickly discover that for every young brilliant programmer, there's 10 people that will some day be good, but at the moment they're inexperienced and they'll create junk if they're not mentored.
But it's true, many of these companies are designed to be flipped, technical excellence might be a secondary concern. Ninjas beware.
I think you severely underestimate the amount of serious work put into all these "tech properties" (I'm guessing you mean Facebook/Dropbox) by very experienced, in-demand engineers.
There's a survival bias at play here. We remember the (very) few companies that survive to become tech giants. We don't remember - haven't even heard of, really - the vastly greater number of ventures that crash shortly after liftoff.
Started, as in MVP. Additionally, some of those properties were built while in college by brilliant developers who dropped out to run their then growing companies. There have been many many many more companies started by kids who have failed miserably.
It was not built by college kids. A prototype was built by college kids which was then commercialized by billionaires. The college kids got the credit, and some dough, and the billionaires got 70%+ of the profit. The stuff was built by a team of engineers, some young and some old.
Yet, if a young company built by collage kids is bought out the parent company generally dumps the source code as worthless. That might tell you something. The same thing happens at successful company's you just don't see it. Twitters Fail Whale did not end because they brought on more collage kids.
Agree. Where I work we recently dropped all labels across the whole company - so no more juniors, seniors, frontend, backend, full-stack etc. Just software engineers. We still use 'CEO' and 'CTO' but only externally.
Labels aren't completely valueless. HR at some large corporations are actually anal enough to check that your official job title at a company matched the description you put on your resume, and will red-flag you if there is a significant discrepancy.
Possibly, but that has nothing to do with rewarding folks for labels. Instead, you're rewarded with pay, respect and opportunities for your constant effort to perform, learn and teach.
Engineering is rigour, understanding, accountability, the balance of competing concerns, communication and cowork with other people, the application of ethics, and continuous improvement. If your occupation strives to include these properties, and you strive to learn and improve your own skills and your field in general, I don't see why the particular language you use should prevent you from being an engineer.
Being an engineer of X is like being a Doctor of X. It's a general descriptor about your experience, and the way you approach the work.
Granted the state has stepped in and in someplaces you can't call yourself an engineer or doctor without certification, but the fact remains that the word has a meaning in common parlance.
I think it depends on the context, and that context has shifted a lot over the past ten years. I can deploy an app to Heroku that scales tremendously well (if expensively) and have almost zero knowledge of configuring a web server or the tools it uses.
I think it's probably more accurate to define "full stack" as being able to make and launch a web application on your own. Servers and databases are just tremendously easier than they used to be, so the bar has been lowered a lot.
Knowing the steps of what happens after typing in "google.com" in your browser is only relevant to people working on projects of massive size, in which there is no need for a "full stack developer" in many cases, or you're doing something completely removed from just a web application.
Moreover, we should avoid the general attitude of 'cleverness' in programming. We've all spent hours dealing with a needlessly intricate piece of code someone else, or a younger us, wrote in a moment of meta-programming / monadic delusion. To me it's telling, that I'm sometimes even more frustrated after I fully comprehend the mental model. Especially if it's apparent, that the person employing the complexities is a junior, or a superficial expert. Be a boring programmer. It won't exactly make your peers 'adore you', but you'll save yourself and your team a lot of time and effort.
Pretensions of cleverness, sure---but sometimes there really are free lunches. Just as a change in perspective is worth about 80 IQ points, using the right abstraction can make coder cleaner, shorter, more efficient, and more understandable. No, typing `defmacro` doesn't make that automatically happen, but it is, sometimes, necessary.
The author describes how he feels that hacker/ninja/wizard descriptions are arrogant, then says that he prefers more “humble” terms for himself, like scientist and artist.
Sorry, but ninja and wizard probably advertise that you watched too much tv when younger, or played RPG. A scientist on the other hand is someone who worked hard to get a degree and tries to advance his/her science. An artist is someone who puts his/her art before anything. They aren't humble roles at all.
It's interesting how programmers want to be called anything but "programmer". Whether it's "ninja", "scientist", "artisan", or "craftsman" IMO all are BS—what's wrong with just being a programmer?
You don't see a scientist say he's a "science artisan" or an artist saying he's a "canvas ninja".
It is a complex issue and there are a few different reasons for this.
In the old days, there were analysts (the people who wrote programs) and programmers (the people who translated these programs to punchcards). We kept only the programmer title.
Our field is vast, yet everyone is a programmer as far as people outside our field are concerned. Scientists could be physicists or astronomers, artists could be painters or actors, doctors may be pathologists or heart surgeons for example.
A programmer can be self-tought, thus the title programmer doesn't imply any kind of official degree or a discipline. You could have a MIT diploma or just be a high schooler.
I think the field developed (and keeps at it) too quickly and the social adjustments that should take place can't catch up. A job not only provides for you, but gives you a place in society. The title “programmer” is as generic as it gets.
I think a lot of the cause of talking about "rockstars" is that in America, we idealize pioneers. This tendency isn't all good or all bad (at least, until you apply it to a particular context), But sometimes it falls on its face because life is not a Walt Whitman poem.
Much as I hate the rockstar and ninja tags, this article itself is pretty arrogant. It makes some fairly unfounded assumptions about other professions like librarianship, while really doing them down a bit.
The only assumption about librarians is that they "enjoy quiet and order". While this may be an oversimplification (although if you didn't, wouldn't this affect your chances of becoming a librarian?), but what's so arrogant about it?
This oversimplification, or stererotypization, is justified by the context anyway; obviously it doesn't refer to real-life librarians. It's metaphorical language, just as the ninja analogy has nothing to do with actual ninjas, only their image in (pop)culture
Basically it seems to say "I'm not a ninja, but I'm all these other things". It still seems to have the attitude of programmers as being better generalists than anybody else is a specialist without spending any time trying to understand their jobs. The librarian reference particularly annoyed me because it just plays into the cheap stereotype of librarians as little old ladies who put the books away and tell you to shush.
I think terms like "DevOps" and "full stack" are as meaningless if you've been programming for more than 3-4 years, as you likely fulfilled those roles before they had a cool label.
Am I the only one bothered by the implication that "prying your way into an unauthorized system" is a thing that "hackers" do? Call me sceptical, but I don't think that the author really understands hacker culture.
There are only two productive behaviors: minimizing risk, maximizing reward. Three if you include the Buddhist solution, roughly "learn not to car about risk and reward." This post is by a risk minimizer expressing incomprehension at the reward maximizers.
I love that someone came out and admitted this. I'm in the same boat. Not a rockstar ninja code shepherd wizard. I'm just a developer who enjoys getting stuff done. At 38 years old if I were a Torvalds, Woz, or Knuth I'd know it, and you'd already know my name. I'm not, and I'm ok with that. I've stayed in this industry through tenacity, passion, and the ability to get stuff done.
I do like to call myself a "hacker" because I feel I fit that definition like so many in our field. But to me hacker defines someone with a strong passion for discovery and curiosity, breaking the rules and learning new things. It's not a magician, genius, or hot shot that others should bow to when we enter a room. A hacker could be anything from Woz to a five year old kid who figured out how to build something different with Legos. It's not a resume bullet point.
I too am growing a little tired of these labels in job ads, asking for some "ninja" who's fresh out of school willing to work 90 hours a week for founder bros because profitability is "just around the corner". At this point in my career I'm looking for fast paced, exciting work but I'm not going to drink 10 red bulls a day to get your platform as a service app finished while drinking IPAs and coding between ping pong rounds. I'm not going to sacrifice 99% of my free time for your baby just to be thrown to the street when you sell out to a bigger company or (more likely) run out of funding. That's the image that those keywords conjure up for me.
I'm the boring middle aged programmer that will work his butt off to get stuff done. I'll exercise due diligence to build things to the best of my abilities and work hard to make sure my skills get better and better as time progresses. I'll get stuff done. I'll ship, and ship good stuff. That's what the kind of companies I seek out are looking for anyway.
88 comments
[ 2.7 ms ] story [ 152 ms ] thread[0]https://i.imgur.com/gyU0me4.png
As a random example, I was able to take a road pollution model that was meticulously optimized, written in Fortran, and approximate its results in Javascript, with almost an order of magnitude performance INCREASE, to the point that pollution models can be computed in near realtime in the browser (road network density permitting).
I did this by using optimization to approximate the model's pollution distribution about road segments using Bezier surfaces, which are fast to compute and have the nice property of being completely contained within the convex hull of their control points. That containment property let me leverage an R*-Tree to quickly determine which sources could contribute an appreciable amount of pollution to a given pixel, and only compute those.
None of the algorithms or data structures I used were original, but the circumstances where I applied them are somewhat novel and the results are fantastic.
[1] http://robhawkins.info/nicknames.html
My personal hypothesis is I think these labels are just meant to attract and appeal to a certain demographic. The demographic that skews young, male, and single. The demographic that prioritizes work above all other pursuits. The demographic that is naive and easy to manipulate into seeking life fulfillment by staying at the office from 7am-9pm.
This is the sort of employee they are seeking so they do what they can to attract them. They aren't looking for people who "coder ninja" doesn't appeal to. It's by design.
I think it actually works since I'm totally turned off by those job ads.
I know I am not Donald Knuth or Linus Torvalds or John Carmack or Woz. I am not a rockstar.
"I’m not a big visionary. I’m a very plodding pedestrian engineer, and I try to keep my eyes firmly on the ground."
"We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris" (Larry Wall)
You don't need to be Donald Knuth - or Larry Wall - to be above average :)
IMPATIENCE: The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer.
HUBRIS: Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer.
http://c2.com/cgi/wiki?LazinessImpatienceHubris
I think 10x programmers are what programmer should be. In the end, we should have people with all of "10x programmers" -- which mean all people will eventually end with the same great skill of coding.
Unfortunately, 10x programmers are real. There are real programmers who can do the same job with less time. 10x teams are real, too. It is mentioned by Tom DeMarco in Peopleware book. Personally, they might not be called "Ninja" nor "Rockstar", but the fact is their skill is higher than average.
But well....
I really agree with Dan Kim here. I think programming is a continuous improvement. You may not end up like Torvalds, but if you are really want to self improve yourself (e.g. Knowing your code yesterday is worst than today and really want to know how to make the code better), then it is good enough.
IMHO, to reach this summit ("10x"), it is very-very hard. You can improve your skill by doing one of these way:
* By volume. Just do so much thing in your field and voila, you will mastery that skill. Just like pilot. Or,
* By supervisioned learning. This is what we know by "mentorship". You may don't know "how to start" if you learn by volume. With supervisioned learning, you can make the learning faster and enjoy the outcome earlier.
Seriously though, that's what many of these people /will/ get. Worse, they'll actually believe it was their own talent that got them there. The world is a cruel and unfair place.
But it's true, many of these companies are designed to be flipped, technical excellence might be a secondary concern. Ninjas beware.
Probably building something in grad school helps.
Indeed it is.
Granted the state has stepped in and in someplaces you can't call yourself an engineer or doctor without certification, but the fact remains that the word has a meaning in common parlance.
Also, if someone cannot answer the question: "what happens when you type 'google.com' in your browser" then you are definitively NOT full stack.
I think it's probably more accurate to define "full stack" as being able to make and launch a web application on your own. Servers and databases are just tremendously easier than they used to be, so the bar has been lowered a lot.
Knowing the steps of what happens after typing in "google.com" in your browser is only relevant to people working on projects of massive size, in which there is no need for a "full stack developer" in many cases, or you're doing something completely removed from just a web application.
Sorry, but ninja and wizard probably advertise that you watched too much tv when younger, or played RPG. A scientist on the other hand is someone who worked hard to get a degree and tries to advance his/her science. An artist is someone who puts his/her art before anything. They aren't humble roles at all.
You don't see a scientist say he's a "science artisan" or an artist saying he's a "canvas ninja".
In the old days, there were analysts (the people who wrote programs) and programmers (the people who translated these programs to punchcards). We kept only the programmer title.
Our field is vast, yet everyone is a programmer as far as people outside our field are concerned. Scientists could be physicists or astronomers, artists could be painters or actors, doctors may be pathologists or heart surgeons for example.
A programmer can be self-tought, thus the title programmer doesn't imply any kind of official degree or a discipline. You could have a MIT diploma or just be a high schooler.
I think the field developed (and keeps at it) too quickly and the social adjustments that should take place can't catch up. A job not only provides for you, but gives you a place in society. The title “programmer” is as generic as it gets.
- 'Pioneers' - hackers that pave the way, create amazing prototypes and whose code you can't use in production
- 'Architects' - who see the work of pioneers and see the bigger picture and build the structure that is needed
- 'dogmatists' - who see beauty in the art and educate their peers and don't create much code, and act as cult(ural) leaders
- 'Workers' - who implement, work 9 to 5 and go home and implement solidly and don't need passion, but have lots of discipline.
The last group is really important and is rarely talked about.
- Implementation (anabolic process): Create complex things from simple things.
- Maintenance (catabolic process): Create simple things from complex things.
The only assumption about librarians is that they "enjoy quiet and order". While this may be an oversimplification (although if you didn't, wouldn't this affect your chances of becoming a librarian?), but what's so arrogant about it?
This oversimplification, or stererotypization, is justified by the context anyway; obviously it doesn't refer to real-life librarians. It's metaphorical language, just as the ninja analogy has nothing to do with actual ninjas, only their image in (pop)culture
The labels are rejected because they are wrong, not because they are labels.
Such is life.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it."
-Brian Kernighan
I do like to call myself a "hacker" because I feel I fit that definition like so many in our field. But to me hacker defines someone with a strong passion for discovery and curiosity, breaking the rules and learning new things. It's not a magician, genius, or hot shot that others should bow to when we enter a room. A hacker could be anything from Woz to a five year old kid who figured out how to build something different with Legos. It's not a resume bullet point.
I too am growing a little tired of these labels in job ads, asking for some "ninja" who's fresh out of school willing to work 90 hours a week for founder bros because profitability is "just around the corner". At this point in my career I'm looking for fast paced, exciting work but I'm not going to drink 10 red bulls a day to get your platform as a service app finished while drinking IPAs and coding between ping pong rounds. I'm not going to sacrifice 99% of my free time for your baby just to be thrown to the street when you sell out to a bigger company or (more likely) run out of funding. That's the image that those keywords conjure up for me.
I'm the boring middle aged programmer that will work his butt off to get stuff done. I'll exercise due diligence to build things to the best of my abilities and work hard to make sure my skills get better and better as time progresses. I'll get stuff done. I'll ship, and ship good stuff. That's what the kind of companies I seek out are looking for anyway.