The Moderately Enthusiastic Programmer
devblog.avdi.org
devblog.avdi.org
Software recruiting seems designed to produce one of two goals:
1. Repeatedly break your heart, or
2. Turn you into a psychopath you can fake the passion and interest and dedication that companies demand at the very first step of the interview, when they know they flush out 90% of the people at that stage.
And, remember, this is what it's like when the market is good for employees.
* Companies don't have a good idea what they want or need
* Which leads to awful, tone-deaf, nonpredictive interviews
* And every startup founded is a net loss in filled jobs, which means hiring intensifies while people who the founders want to hire—people like them—get spread out ever thinner and would rather take investment to start companies than get back on the market. When eventually they need to hire too, their contribution to the problem grows.
In _Disciplined Minds_, I read that power systems are fine with people faking. It's a kind of obedience. You know exactly what's happening, yet you conform. And that's all they want.
The reality is there are actually plenty of programming positions that are perfectly suited for a career programmer who doesn't particularly love it and just wants a steady paycheck and a decent home life. But these positions aren't at Google or Facebook or the hottest Silicon Valley startup, and they're not going to ever pay $150k+ or even $100k+ (they might start at half that). You don't need to know what a suffix tree is. You don't need to have ever heard of bloom filters. These positions probably aren't at many of the companies posting in the 37signals job board, because that board is naturally going to attract job seekers who are more enthusiastic about programming as both a craft and a means to a paycheck.
I think a lot of posters here seem to be wanting too much in exchange for too little. In every industry, it's always been the case that the top companies have tried to hire the most "passionate" employees--and yes, that means employees who might work overtime while smiling about it. I don't think this is so evil when there are plenty of other choices.
I do think it's a bit disingenuous, though, to want to be part of the next explosively successful company while still putting in the minimum effort to get a steady paycheck. This forum is disproportionately full of people wanting to get at least somewhat wealthy off of software development, people who want the same compensation as big firm attorneys and doctors. Those lawyers probably work more than the average over-worked programmer at a top company, and the doctors almost certainly do. The attorneys and doctors also all necessarily went to graduate school and probably took on a lot of debt that the average programmer doesn't have. The fact is that, across all industries, jobs with this level of compensation are rarely 30-40 hour a week lifestyle jobs.
Many of the really "hot" startups we see are actually quite boring from a technology standpoint. Snapchat? Uber? Airbnb? They're all variations on a dull web app that sends messages to [mobile] clients. Even at someplace like Square, I'd bet most of the code is cumbersome kludges connecting legacy banking infrastructure with their slick API.
Conversely, someplace like Enterprise is probably trying to solve more interesting problems than you might think: How do you balance supply and demand for your fleet across hundreds of locations? How do you optimize maintenance costs? Can you use GPS and in-car diagnostics to monitor cars in the field?
I know everyone here likes to imagine that startups are filled with super-genius Stanford CS grads implementing cutting-edge algorithms, but I think that's pretty far from reality. Whether it's a startup or a BigCorp, most of the work is going to be boring LOB applications.
In real life there isn't a dichotomy between getting a so-called career job at some stodgy company and frat-house crazy-hours fake-"passion" startups in the Valley.
Perpetuating that dichotomy is dishonest and helps keep startup employee diversity, treatment, and compensation down.
The people I work with aren't "career programmers who don't particularly love it." They're not putting in a "minimum effort." They certainly know about suffix trees and bloom filters. They're years-of-experience, extremely talented people who put in unbelievable effort to achieve our goals at work, but they also go home to families and other passions.
To me, it means exactly what you described: people who put in unbelievable effort at work, who probably love what they do, and who are extremely talented and take pride in that talent. None of that necessarily translates to extra hours. None of that translates into loving work more than family. None of that translates into not going home home to a family and the rest of life after work. But, to me, it does translate to passion.
Also, for what it's worth, "lifestyle businesses" are often tied directly to having lower hours.
I am not in that category. Above average, keen to learn and a decent bit of background. Not earning anywhere near 200k+, but I am living inn Barcelona which is pretty cool. Don't do more than 40hours per week usually either.
They recruit right out of college, targeting especially athletes and fraternity/sorority members. They almost exclusively promote from within. They tie compensation very strongly to unit performance, in a competitive zero sum way. From trainees through regional vice presidents everyone works long hours with no extra compensation. They use an up or out system for promotions. Then if you thrive and preserve in the system you might make six figures after a decade or so -- at least when and if your numbers are good.
While I certainly wouldn't tell anyone not to point out problematic employer actions in the development industries, but it can be instructive to see what it's like out there for some of your peers.
The people who puzzle me are those who fetishize programming so much that they don't demand proportionate cold hard cash to do it well.
Regardless, words like "passionate" are a problem with job postings in general, across all industries. Usage of such words in job postings is not even remotely peculiar to software development. The fact is that there are plenty of software jobs that do not require passion, even if they put that word in the job advertisement.
That's why you chose your job, but plenty of people choose a career because it will make them good money.
As someone who has put passion(ate) in job listings, I absolutely wanted people who were passionate about this field. I was less interested in the people who did comp. sci because their guidance counselor told them it was going to be a hot field, instead targeting those who were probably programming as a child.
People who have an internal drive that you simply can't fake. Who build great stuff, and keep up on trends and technologies, because they feed on it. There is no faking it, and many simply don't fit this mold at all.
But it isn't all upside. Those same people will seldom write documentation. They'll gloss over things they think aren't important. If you have to build something that you know is wrong, or that will go unused, they will have so much inner turmoil they'll almost certainly sabotage the project. They'll probably pull your projects in directions you don't want, and might use techniques and technologies that are interesting and fun but aren't necessary if even appropriate for the current need.
You need to balance it all. But anyone saying that there is no such thing as passion in this field, or that there is set that has it and another that doesn't, is living with delusion. It is very, very real.
I agree with whoever it was who said that it's not so much about actually getting passionate people, but more a test of how ready you are to eat shit and be compliant. So when you say:
> As someone who has put passion(ate) in job listings, I absolutely wanted people who were passionate about this field.
I have to ask: well, did you actually get more of that kind of person when you put 'passionate' in the job ad than you would otherwise? I'm genuinely curious, because - having spent some time in the dole queue in recent years - I can't imagine anyone responding sincerely to a clause like that in a job ad.
Most ads list educational requirements, a list of required technologies, and give you a contact number.
But those ads that do...boy do they burn the asses of people who feel excluded. Those people are the ones who'll declare bombastically that those employers will never get candidates, it's a warning sign, etc.
It's just self-comforting blather.
Can I say whether I got "more" of those types of people by putting it in an ad? No, I can't, as I didn't do controls so I have no basis of comparison. But essentially it was an attempt to save everyone some time -- include the unsuitable candidates -- and to exclude those people who, when asked how they keep on top of emerging trends and techniques, have no answer (shockingly common, and an immediate no hire). The same is true of various other seemingly decorative words that so offend so many: If an ad says that you need to be a JavaScript "ninja", and you know just enough to kind of decorate up an ASP.NET page, you know maybe save everyone some time and don't apply? Yet some people still do, and then they write the "Your JavaScript tests are bullshit!" blog post that sees a million seal claps on social media.
Another thing I notice: the more I mature as a person and a developer, the fewer job ads actually interest me. I suppose that's inevitable, however, as I continue to hone in on what domain I want to work in.
If "fast-paced" means running around like chickens with their heads cut off, I'm not interested. I agree it's hard to distinguish what they mean from "fast-paced" just from a job ad, but it can be a positive attribute.
That seems quite true for the video game industry.
Employers are strongly incentivized to actively seek out the most exploitable of potential hires. It's deeply unfortunate.
No, it just means the system is broken.
And when things are broken, we fix them.
No I won't be a passionate evangelist about spreadsheets, but I could get happily lost in the codebase for Google Docs. People code for 48 hours when lost in the happy delirium of discovering some new problem, that's passion. However it might have nothing to do with their personal investment for the finished product. In fact they likely really enjoy the challenge of fixing something broken more than seeing it run once fixed.
Putting passion on a job spec is really quite unreasonable, but it seems easier than saying single minded to a fault and willing to sacrifice personal health to do a bit more hacking.
But I limit my professional work hours because it demands a long-term quality. Some other poor guy might come by and need to figure out what I did.
On the plus side, it means that the class of employers who advertise their vacancies in this fashion become easier to identify and avoid. Or exploit.
He's implying the whole thing is meaningless buzzwords while you seem to imply they actually have a ranking or something (and no they do not).
Fixed that for you
People who have "paid their dues" by going to school and learning one language, and then never update their skills unless forced to do exist, and working with them sucks. You're always fighting a "but such and such already works!" attitude. Programming by flipping switches on computers made using vacuum tubes worked. Thankfully someone wasn't satisfied and wanted something better.
Every place I have worked, I have consistently been among the most performant. I am relied upon to solve many of the hardest problems, despite my age, because I have a track record of learning enough to solve them very, very quickly. I will find myself thinking about the current problems my team faces, as well as odds and ends and interesting behavior in the languages, frameworks, etc, that we use, even outside of work hours. I love learning and teaching new technologies, and am frequently the one to introduce new tech into projects at work (along with giving talks to teammates about how it works).
However, I have never worked more than 40 hours a week.
If there was a dire emergency due to things failing in production, and I had hit my 40 hour limit, I'd not -mind- spending time investigating/fixing it, but I would not tolerate a workplace that expected it outside of that kind of issue.
When I play with code outside of work, it's usually to learn something, not write something useful. I have almost nothing on Github because most of what I've done outside of it has been things that already have solutions out there; I just want to learn more about the problem, rather than seeing some deficiency in the existing solution.
I don't consider myself 'passionate', as such. Coding is something I try to keep compartmentalized; I may allow it to come up in conversation when it's contextually relevant, but I actively try and avoid talking about it, and I don't feel any need to spend inordinate amounts of time on it outside of working hours.
And yet there's this demand for passionate programmers. Which, yes, seems to come from companies that expect you to put the code above all else. You see it in their perks; food and gyms and doctors and sleeping pods, why do you even need to go home, you can stay here! No, I want work/life balance, and to have that balance I need separation.
This definitely feels like a bind; I have to cross companies out like Google and such, because I don't want to work at a place that seems to have the expectation I should stay at work beyond 8 hours. And I likely wouldn't be hired even if I pretended to ignore that feeling, as I don't feel any inclination to fake interviews any more. "How would you solve (algorithm question typical of interviews, but which I don't remember offhand how to solve)?" "I would Google it, as that sounds like the kind of thing others have solved, and there's no way I'll be able to come up with as good a solution in 20 minutes, on a whiteboard, as I'd find online in 5" "But what if you didn't have the internet available to you?" "I would work on constructing the internet, then, nevermind your problem, because I've apparently time traveled to before it existed and there's money to be made". "Fine, but just, how would you solve -this- problem, if it wasn't already solved?" "Probably go sit by myself to mull it over a while." "But I want you to solve it right now." "Why? It's research material; no one else has ever solved it, apparently, I can't just write out how to do it in such a case." "Well, we really think you ought to be able to." "Yeah? I guess we're done here."
This is what gets me. Yes, hirer, I have a github profile, and yes, you'll probably be disappointed. I occasionally do bug fixes and file issues, but 99% of what I do is on private repos. And no, I can't show them to you. I've open sourced a grand total of 1 repo, but that doesn't mean I don't like coding. I just find my brain spent after a 40 hour work week of programming.
I once went for an interview for a PhD where The interview was just a load of puzzles. You either knew the answers or you didn't, and I'm not the sort of person that remembers trivia.
I mentioned Google only because it's famous for the amenities provided at the Mountain View facility.
Strange that people keep harping on the 40 hours a week thing. Passion != long hours. Everyone can read into it all they want to try to eek out their own hidden meanings, but my experience has been exactly the opposite -- the passionate people are the ones who usually have the greatest flexibility and put in the least hours.
You will also note I excluded coding outside of work (sort of); that really seems like the same metric, a measurement of how much time you're spending on coding.
That's really it; 'passion' is not a job requirement for a good developer, and it's ill-defined. If you -mean- it to be someone who is good at what they do, takes responsibility, is able to strike a balance between quick coding and quality coding, etc etc, then POST that.
When you use the word "passionate", I don't know what you mean; the only metric I can think to measure it objectively is how much time you -choose- to spend writing code.
I don’t have a problem with the word “passionate” and I could understand an employer who genuinely desires that.
Problem is, I don’t think most people actually want anything of the sort. More likely, I think they’re just following the fad of grandiose overblown adjectives and mimicking the motions of “only the best” interviewing of companies whose trajectories they’d love to emulate.
The typical 201X boilerplate sums it up nicely:
“Are you passionate about technology? Do you write beautiful code? Come help us change the world.”
I’d wager most organizations shouldn’t want much less need someone with passion in more than a handful of positions - more like competent, hard workers who will execute the vision put before them.
In my experience, unless the stars have aligned, passionate people are a horrible choice for most roles. Their passion is not some simple resource that can be redirected efficiently into whatever management cares about, it’s an intense, consuming, emotional drive with all the massive potential negatives those words suggest.
Good luck getting even average performance out that passionate someone on a project they don’t believe in and duck for cover when they deem the CTO / founder is a fool driving the organization in the wrong direction.
Too often it is used for greenhorn with no skills, while veterans with deep knowledge are branded in negative way. Someone who is 'passionate' is usually badly treated and works for peanuts.
Maybe this is just a UK thing - where perfection is appreciated for a nanosecond and then everyone's back to looking for risqué jokes in everything (hence, the 'soggy bottom' meme in that baking show - which btw is hosted by a a well known satirical comedienne whose apparently mild comments have an undercurrent of loathing).
We have different teams in my company. Some require people who chose to become a programmer for the pay, who may not care so much if they write the same code day in and day out, who uses the computer only at work and cares more for Facebook than hackernews.
Some teams require passionate programmers - the kind who finds good solutions, that makes sure that the code is better when they commit, not worse and who prefers to read about technology rather than gossip in their spare time.
It's not about putting 80 hours a week into the job, it's about being an expert in programming. It's not about being passionate for the product neither, because the job they will do is often product agnostic.
He may indeed be "overanalyzing" it. But a lot of developers to that. How many people have to agree with you on a subjective matter before "overanalyzing" becomes "seeing the obvious?"
Developers and their hysterics, I tell you! Why, the simple creatures are simply unfit for the business world at large! Hush dear, you've been overanalyzing again.
The problem with "passionate" is that it's a leap of faith for the developer to make, that the company hasn't earned. What if they come in, "passionately" develop the product with no thought of personal health or career risk, and then see the company shed it when it becomes advantageous to do so? Passion, it seems, only flows one way.
I am personally NOT passionate about programming.
I am passionate about creating things!
It seems counter to evolution and human nature to be passionate about staring at a computer monitor all day long in sensory deprivation.
The problem with tech is that it encourages unbalanced people and unhealthy lifestyles due to the unreasonable expectations of knowledge acquisition placed on your average programmer.
And you get bizzare mole people in China who just program all day and google cultures where you live at the office and code.
I don't know what the solution is. We seem to be good at making other peoples lives more efficient but we can't make our own lives more efficient.
Literally no one ever who has written "passion" in a programming job description has demanded an uncontrollable, foaming-at-the-mouth desire to to work on their project lest ye be fired at once.
If I were this guy and I was looking for a job, I'd be less worried about not having enough passion. I'd be sweating the fact that I can't parse the meaning of a word based on the context it's used in. That's a pretty valuable skill to have as a programmer. I'd be worried about being overly pedantic about things - most people don't want to work with a pedant who can't see beyond strict definitions.
The language we use is part of establishing a culture that can have a meaningful effect. Drilling into employees that a good programmer is passionate about his job breaks down work/non-work boundaries over time.
Another similar example of this is startup founders using the pressure they are under and fear of company failure to "inspire" the salaried+options employees to work harder. When in reality most salaried employees at startups have much less at stake than the founders and can usually find another job if things go south.
I don't think getting developers to bust their ass is something you can recruit. I think it's something you can cultivate by making it clear that the developers' product is valued.
I would say that's _exactly_ what he's doing. He's considering what companies might actually mean by throwing the word "passionate" into job postings.
Plus, it's hardly "that one word". The terminology and job description copy for startups and modern companies in general revolve around lots of similar words and notions (from "passionate" to "ninja") and the pressure he describes is very much a part of corporate culture.
Heck, it's an industry where "addicted to caffeine" is taken as a good thing.
But calling him a "pedant" is not accurate or fair.
"Passionate about programming" I could probably fit myself into at a stretch.
Passionate about fixing dub users excel errors (depsite telling them a million times we shouldn't be using Excel for importing data), definetely not.
My job is a mix of both.
I also don't think "passion" means either that you're Jesus Christ (where the term "the Passion" means "to suffer", not that he was really into it), or that you must love the code more than your child. But many of us have written or encountered code that feels so elegant and perfect that we get giddy with enthusiasm about it. We've used tools and technologies that seem so game changing that we evangelize them enthusiastically.
That is passion, and it is absolutely real. Some people have it, and many people don't.
None of that says anything about whether it's a good hire trait or not, and it's possible if not probable that many positions do not need, and may even suffer from, a passionate developer.
For all the companies out there who say they want a passionate programmer, I doubt many of them are really prepared to actually manage one. People with this kind of passion are not motivated by anything you can give them and it takes a lot of coaxing to get their activities to line up with your business requirements.
They could knock out your entire application in a week, and spend the next six months doing absolutely nothing of importance. And there's nothing you can do about it.
* They want an 'amazing' developer, but they don't want to pay them above average.
* They want a 'passionate' developer, but they don't want someone who will call them on their shit.
* They want a 'productive' developer, but they'll require 9 hours of butt in seat.
* They want a developer who keeps atop of cutting-edge tech, but they require you to use Java.
* They want a 'smart' developer, but require 10 years of one tech.
* They want someone active in open-source, but refuse to sponsor any sort of open source work, instead preferring to be a taker.
Then negotiate. The job offer is your leverage. It says, directly and to the point, that you're an undervalued asset, and the fact that you're in their office states that you're willing to deal with them to make sure all parties are satisfied.
Until you bring this document to them, then there's no reality anywhere in the equation and all that matters is what's being perceived. Since they're paying you, they will rightly believe that their take on the situation should be considered the correct one. Right not because it better reflects reality, but right because the balance of power at the moment favors them.
I'm a passionate programmer but I've felt kind of like a fish out of water for most of my career.
I feel as though I could run at least 100% more effectively if I found the right organisation that harnessed this passion. The work wouldn't even need to be mega exciting - just the right combination of process, tools, culture etc.
I think I do OK for my clients, but the high notes I hit are on my own projects and freelancing work.
The stakes are small, but I get a lot of free time because prior poor business decisions are forcing them to keep a full-time guy for a workload that really could be handled by a part-time contractor. I can spend lots of time being cautious and focusing on implementation details. Also screwing around and browsing HN.
I don't get paid what a full time Rails dev should be getting paid in this job market, but the intangibles I've managed to wring out of the arrangement make it worth it.
Eventually I'd like to find/train a sales guy to line up deals and another code guy like you to help me implement them. But for now I like where I am.
I work for a lifestyle company with a lot of smart people, and I feel at home for the first time in my career. They get that I care, and they get that I have a life outside of work. Exactly what I'm looking for!
Every company can absolutely benefit from such people if used right, but woefully few know how.
That is, compared to most of those around me when it comes to coding, I am passionate. Compared to how I feel about everything else (i.e. the love of my wife/child), I'm not as passionate.