Fork me on GitHub

The collective bargaining model fits much better with low and medium skilled jobs where there is a large supply of mostly interchangeable commodity labor. These workers have to bargain collectively as any individual worker's value is relatively low. Programming is a very high-skilled job with a very small supply of mostly non-interchangeable labor where each worker's value is high to very high. In this case, individual outcomes work out better much of the time with individual negotiation, so there's little motive to collectivize.


Historically, collective bargaining (before it was really called that) started with the “high" skilled laborers, aka, the “skilled trades”. It could be argued that it didn’t really take off for “non” or “low” skilled workers in the U.S. until the 1930s (CIO formed in 1935 precisely over this division).


Programming is an "extremely, extremely high" skilled trade on that scale. The supply of programmers is far lower, and the difficulty in training new ones is far higher than "skilled trades" of the early 20th century.


In terms of labor supply and demand dynamics, being a programmer is a professional job, similar to doctor or lawyer, rather than a skilled trade.


There's little to no incentive for people who do professional jobs to unionize or to bargain collectively. They're far too difficult to replace. They already have plenty of negotiating leverage with employers. Collective bargaining is only desirable for the worker when they view worker replacement in their occupation as relatively easy, and so they feel they need to increase their bargaining leverage by collectivizing and thus making it more difficult for employers to replace workers on a whim.


It is a persistent problem in perception for our industry that software developers are perceived as swappable components, and it has devastating impact. This goes hand-in-hand with using construction analogies too closely for understanding software, perceiving software development as 'easy to learn' (great talk on this at the conj from Kim Crayton!;list=PLZdCLR02grLofiMKo0bCeLHZC0_2rpqsz&amp;index=17 ), the persistent lack of integrity / self-regulation of developers to define who is and is not fit for development, etc.


True...but it's way, way worse for carpenters, electricians, and other skilled trades


The problem with software is that the consequences aren't readily visible - there's often significant delay until consequences hit home, and the cause is not always easily traceable as it is in those industries.


We're nowhere near the threshold where collective bargaining becomes appealing to a significant percentage of programmers. And it only works if most / all workers in that trade are participating.


Mostly because we do not discipline ourselves to measure those consequences, good or bad 😛


Oh, I'm arguing against collective bargaining


Agree.. management won't budget for measuring consequences


Which means we receive blame when value is not provided.


It's especially bad in the SF startup world, which is driven by a "fail fast" churn-and-burn mentality that mainly benefits VCs, who just want an MVP "to test for market fit" in as little time as possible.


Doing things right is actively discouraged in cases where that takes longer than a hacked-together solution that sort of works.


A horrible bastardization of 'agile' that is all speed and no true agility.


A boulder rolling down a cliff and into a ravine is not agile, it cannot adapt and cannot change its course. 😛


Agile has largely become a management cargo cult. Do the Ritual of the Standup, perform the appointed Consultation of the Cards, and all will be well.


I've been touting Jeffries' little book, 'The Nature of Software Development', to help folks hit the reset button on what agile really boils down to. Being in a consulting firm, it is... very, very hard to convince our management team of that change in mentality.


Oh, I haven't seen that one yet. I'll add it to my list


If you're already familiar with 'real agile', it's nothing new


The problem is most people just don't care about the why. They want a recipe to follow, a procedure. Just do step A, B, and C.


But it does distill it for even the layman to understand.


'Magic recipe for success'


'add to enterprise -> mix for 5 minutes -> bake -> profit!!!'


Or lose your company to security defects, y'know. Same thing.


Yep. And they mistakenly assume that correlation implies causation: they point to Company X that did standups, etc., followed steps A, B, and C and had a great product come out of it.


Never mind the 99% of software companies that followed capital-A Agile™ and failed (just like 99% of companies that didn't)


A variant of the "nobody ever got fired for buying IBM" effect, I think.


If you're a manager and you get Scrum master certifications and use Agile and your team fails anyway, well, you did all you could. If you don't use some named management methodology, then it's on you.


Epiphenomena to the right and to the left. What's most amazing is that anything ever works.


Mmmmmhm. Sometimes wonder why I'm in this industry at all 😛


Then I remember I'm a masochist and the problems are still too interesting to avoid


Yeah, it could be a lot worse.


You folks should make a podcast or something. Greatly enjoyed reading this conversation :)


@paul.legato @fellshard I think there might be other reasons to unionize than work conditions, pay etc. These are probably non-issues for now. What I think might be interesting could be demands related to ethics, privacy, diversity etc.


Probably need a tighter definition of unionization, given those are conflated for several different purposes.


I personally have been leaning towards the 'craftsmanship' side of things - haven't trained or been recognized by a craftsman in the field? You're not accredited to work in the industry. But that's understandably a bit extreme and not going to happen 😛


But having some way to properly accredit developers is going to continue to be more and more important as software is continuing to expand.


These ridiculous 'coding camps' that promise 12 weeks and an instant dive into the industry isn't doing anyone any favors. Not being taught more than academics in most computer science programs ensures that you still need experience writing real applications before you pick up the other practices. etc.


Yeah using unionization as umbrella term for any profession wide org representing members of that profession.


I'm not sure I see the need for a certificate (what's the noun of accredit?) as much. Aren't the hard programming skills much easier to gauge than the - often more important - human interaction abilities?


I'm self trained and I think it's awesome that our field is open for others without many hurdles. As a lead you have to strike a balance between junior and senior but when someone did a 12week bootcamp 6months ago and not much before that it probably is easy to judge their experience level. @fellshard


Heh, thanks, I enjoyed writing it!




I really like that it is possible to get a decent paying job as a programmer based only on your ability, not on having some kind of formal qualification. It's about the only middle class level job left where that's possible.


I majored in history and philosophy in college. Turns out there are essentially zero jobs in either of those fields, even if you have a PhD. Luckily, I knew how to program, so I have made a career out of that instead.


Lots of private firms have created lots of certifications in particular technologies over the years, usually big enterprisey type places - Microsoft, Sun, Oracle, IBM. Those are very important if you want to work at a huge multinational corporation, not so much otherwise


> Aren't the hard programming skills much easier to gauge than the - often more important - human interaction abilities? Actually, no. And it's been posited as one of the big problems in the industry right now - we are very, very bad at software interviewing.


And many companies simply don't hire people with proper technical skillsets, simply because they can pass a fizz-buzz and be on their merry way


There are ways to differentiate those skills, but usually it involves actually working alongside people for a period. Is this individual capable? Do they interact well in a team? Are they self-sufficient enough to solve problems we give them? etc.


Whiteboarding arbitrary software problems might show their problem-solving skill, but that's only one facet of what you do day-to-day on a codebase, or in working with the business on solving business needs.


To be fair, there are sectors in which accredidation is needed less than others. But most companies don't think about things like that. "Hey, we need a new billing system that supports credit cards, let's have our usual devs do it." --> Have fun dealing with an audit in a couple years!


In laxer areas, okay, whatever. You can play it loosy-goosy and the only people you hurt are yourselves. But there's too many companies that don't recognize when they've crossed a line, an ethical boundary that requires engineering rigor. Most developers don't recognize the attributes of software that can be tuned and tailored to those engineering needs - security, reliability, etc., so when the line is crossed, the business doesn't know it, the devs don't cry foul, and... well, you get a Volkswagen.


The analogy I would make - would you trust an untrained structural engineer to design and construct a bridge? Then why would you trust an unaccredited software developer to design and construct applications with sensitive attributes?


What makes our field so amazing isn't that it's easy for anyone to get into. That simply speaks to the ease to which programming can be started, not the ease to which it can be matured.


Anyone can hack together a Python script, sure. But that ignores all the other knowledge and qualities you must grow if you are going to be able to pull your weight and not cause great harm in the software you write, whether through maintenance costs or possibly ethical costs.


And sadly, businesses are still very, very bad at understanding that and building those necessities into their hiring process, or building teams in such a way that younger developers can mature under senior ones.


So if anyone is going to begin that process, it will have to be us.


I wouldn't look at traditional unions as a model. But rather ones like IWW. Then the vision's clear: not about collective bargaining, but workplace (participatory) democracy.


That means we could look at cooperatives as part of the vision.


Once nice thing about Co-op Source is they're apparently in the Clojure/script community.


(Sorry, fixed that last link to point to Twitter.)


Hmm. The profit-sharing bit bugs me - could cause weird dynamics between the co-op's members - but it does make sense as a group that is self-regulating, with common goals and values. There's certainly enough camps within the software world to warrant individual groups with their own philosophies. Hmm.


@tjg I recently learned that IWW has a department for developers:


Whoa, haha cool, thanks!


I suppose one big issue hereabouts is remote work.


Some developers are already in unions. I talked to one fellow at the Conj last year who was.


An over-reliance on individual bargaining leads to some perverse outcomes. Lower compensation for historically marginalized people notably. The revealed illegal collusion between the Big Firms on the west coast a few years back re: not poaching each others talent. The shockingly awful working conditions you read about from (former) Amazon folk.


And yet almost all software engineers are (empirically) not even slightly interested in collective bargaining; this demonstrates that, despite all that, they consider their own conditions pretty good, and their own individual leverage sufficient.


I suggest that the tiny fraction of software engineers who are interested at all in collective bargaining are interested out of nothing more than a romanticization of the historic labor movement, and a desire to identify themselves socially as socialists or leftists -- not because it makes any sort of economic sense, and not because their conditions are actually bad in an objective evaluation.


Amazon's conditions are "shockingly awful" only by the pampered standards of the first world bourgeois elite. Conditions in, say, Chinese electronics factories are much, much worse and not even remotely comparable.


Chinese factory workers would love to unionize, and would benefit greatly from doing so, but this is illegal. Amazon engineers are perfectly free to unionize if they want, yet they are apparently not interested in doing so.


To be fair, Amazon drives a competitive environment between its devs, so cooperation is not the first thing that they would pursue.


So do Chinese factories. Did you solder as many circuit boards as your quota? OK, you won't be fired. Did you solder more? Are you the #1 solderer on the floor? OK, you get a bonus.


> the pampered standards of the first world bourgeois elite


You could be more dismissive if you tried, I think


I'm going to ignore the ad hominem personal insult aspect of that.


Sitting in a nice office in Seattle and drinking free coffee while you tap on a keyboard all day is "shockingly bad" only to people who grew up in spoiled middle class conditions.


The main objection to conditions at Amazon is "but they are really mean to people!"


Anyone capable of getting an engineering job at Amazon is also capable of getting a similar job at a thousand other places, even without moving out of Seattle; and thousands more if they're willing to relocate.


People don't feel trapped at Amazon, usually not underpaid, etc. They work for a few years, and if they don't burn out, then they likely stick around for much longer.


Thus, not interested in unionizing. Those who don't like it can very easily leave and get a similar job somewhere else with conditions more to their liking.


That was not true for, say, early 20th century factory workers


This is also a knowledge worker field, which has very different characteristics from physical labor


Again, noting the non-equivalence of developers.


I think you’re correct to assert that many, probably most developers don’t think it’s in the interest to bargain collectively. I also think you’re significantly underestimating the power of capital, particularly in these times, to make it difficult or undesirable to consider collective bargaining, or what such a revised balance of power could mean for developer labor.


We are not swappable components. Unions are constructed around the idea that its people are.


If you are a coal miner in 1910, there are 100,000 immigrants lined up around the block to take your job. Your boss tells you you must work 14 hours a day breathing coal dust, or your family will starve. That's when unions make sense.


donald, have you been reading Dietrich's 'Developer Hegemony'? 😛


I have not, is it worthy?


I haven't either, it's still in draft on leanpub


I agree that capital is making it undesirable for knowledge workers to engage in collective bargaining. They do that by paying their workers well and giving them cushy conditions to work in.


And then making sure the actual work they do is... painfully poor.


I also agree that traditional labor unions are probably a poor model for, well, just about everyone in the 21st century considering the state of labor, but particularly for developers on account of the reasons y’all mention. I am not at all convinced that collective bargaining in some form wouldn’t be a welcome change though.


I don't think the bargaining aspect is the aspect that needs to be tackled, but rather the way we fit into corporate structures. And that's not exactly something that can be negotiated.


It's gonna take a mindset shift in corporate leaderships to better structure business units in such a way that developers have both autonomy and better cohesion with the problems they're solving.


The only reason collective bargaining is useful is when individual workers have close to zero negotiating leverage with an employer, because they are easily replacable. That is not at all the case with knowledge workers, who are rare and difficult to replace, and thus already enjoy significant leverage.


Do most companies view those knowledge workers and their intellectual capital that way, though?


Mostly comes down to dissonance.


Moreover, collective bargaining is a way of equalizing employee outcomes -- the worst performing employee gets the same deal as the best performing employee, by definition. That is desirable only among employees that are easily replaceable, even the high performers. That is not desirable at all in the case of knowledge workers, where high performers can already obtain significantly better compensation than the (already good) compensation of the low performers. The best performing segment of knowledge workers would actually be harmed by collective bargaining.


A really good coal miner is nice, but worth only slightly more than an average one. A really good programmer is worth a lot more than an average one.


You’re assuming that compensation is the only thing being negotiated; that the outcome of such negotiations is the same deal for everyone; and that the only motive of those receiving the highest compensation to negotiate would be to maximize their compensation, not e.g. seek fairness for traditionally marginalized workers


"traditionally marginalized" is highly controversial and only interesting to those steeped in leftist academia


What else would you negotiate under those circumstances?


It's bad form to set us up as victims when I'd say that's pretty blatantly not the case.


An entry level PHP coder in a second tier city might make 40k a year. A top principal engineer at Google might make millions; even an ordinary Google engineer is getting something like 200k. They have zero motivation to collectivize their outcomes with the entry level PHP programmer.


> only interesting to those steeped in leftist academia


The issue is more that we've been maturing our understanding of how software works over the past decades, at a relatively rapid pace, and yet companies are very slow to move and immature at adapting to those maturing understandings.


Yes, @donaldball, let me just say it so we can stop dancing around it: I categorically reject the postmodernist academic leftist worldview.


It is fatally flawed on multiple levels. It is irrational, a belief system based on non-falsifiable propositions and internal contradictions, a belief system akin to religious faith.


People generally adhere to it because of the mass social shaming that occurs at many universities; those who do not agree are ostracized and denounced as evil oppressor imperialists.


And no, I am not a conservative.


Enjoy engaging straw men then. Honest debate doesn’t maximally mispresent the positions of their interlocutors.


Your repeated reference to social justice themes ("historically marginalized") is enough to place you in that bucket.


Call it by whatever name you like; I'm not married to "postmodernist academic leftist"


"Progressive" also seems to be pretty common


If developers were indeed a 'historically marginalized' group, the world must be much more utopian than I'd thought.


If we prefer a positive formulation: I categorically reject unscientific worldviews based on non-falsifiable premises.


I believe his point was that every developer ought to engage in collective bargaining to force employers to hire more developers from minority groups


Why stop there? The union can become a general purpose tool for any sort of social engineering


Well, maybe it could, if you could convince substantially every member of the profession that your particular views on how that ought to work are correct. That has never happened historically and it seems unlikely to work now


The whole proposition is based on the premise that one's own particular interpretation of 'social justice' is correct, beyond debate, and therefore everyone else ought to agree.


Indeed, the original name for postmodernism was "fascism". It's based on the philosophical theories of Martin Heidegger, a Nazi, whose ideas of what constituted "social justice" were a bit different than what people imagine today when they hear that term.


(No, bringing up Godwin's Law is not adding anything substantial to the discussion.)


The general theme is that there is no such thing as objective reality, only social narrative and discourse, and therefore no propositions are objectively true, but always constructed intersubjectively, contingent on the speaker's own social position. (This is already a self-contradictory paradox, since it is itself a proposition of a supposedly objective and universal truth.)


One party's views are just as good as any other's, in this system. It is then considered perfectly fine to attempt to coerce others into adhering to your views by any means.


And indeed, the very possibility that one's own views could be wrong ceases to exist.


Under such a perspective, any view that makes any proposition must be silenced, because such a proposition would necessarily affect those both inside and outside those who hold the view.


There's another option in the postmodernist system: you can make any proposition you like, and then attempt to force others to comply.


Heidegger's friends in the Nazi Party used physical violence to do this. Postmodernists today typically use social shaming.


Ironically, by ensuring the group sharing their view hold as dogmatically to the objectivity of their subjective view as possible.


Donald's theory on unions seems to be that they are good since they can be used as a coercive tool to advance a particular conception of social justice in society.


"Normal" people under fascism / postmodernism are considered incapable of grasping such philosophical subtleties, and therefore are to be herded along by the Ubermensch who run things.


(Which are self-considered to be the academic elites, in our society)


That was a key point that caused Mussolini to break away from socialism and begin the fascist / postmodernist thought paradigm: he loved Nietzsche, and could not stomach the idea that everyone ought to be considered totally equal, as traditional socialism preached.


You might consider moving to a #philosophy or #off-topic to continue discussing the fascinating premise that liberals are the real fascists


Straw man pot calling the kettle black, eh


Liberals were traditionally rationalist, not postmodernists, and many still are


This is related to job discussion insofar as we are considering it in terms of the unionization of software engineers


Bringing it back around - unionization for the purpose of social structural change is a direct extension of that mindset.


Ergo is harmful.


Claims to be for the bettering of people, but is in fact greatly damaging to them.


In any case, almost all software engineers are empirically uninterested in aggregating themselves to such a group.


Which is most likely because they already enjoy pretty good working conditions, relative to almost all other jobs.


We're still one of the higher paid entry level positions in corporate America.


And - despite my wariness of using this as their sole means - it is entirely possible to do so without even racking up educational debt.


Not easy, simply possible.


Any perspective that tries to claim we are social victims is being disingenuous, at best.


@donaldball The premise that postmodernism (which does not necessarily correlate with leftist political views) is a philosophical extension of fascism is well known and not remotely controversial.


In the late 50s/early 60s, the horrors of Stalinism became widely known, causing many traditional rationalist (i.e. not postmodernist) Marxists to give up on their theory. At the same time, traditional fascist thought was generally discredited by the fascists' loss in the war. The two groups then merged, particularly in France and the US, forming the basis of the modern "progressive" movement.


Unionization is better for some people in some circumstances


Most software developers are not such people


An entry level 18 year old PHP programmer in a secondary city who is making 30k or 40k a year would probably be paid more if all programming were compensated according to a collective bargaining agreement.


If the union were controlled by people who threatend to withhold programming services as a tool to advance a particular vision of social justice, then the people who happened to benefit from that specific version of social justice would undoubtedly benefit


The dynamic of companies would change, at that point. The cost of technical labor would be too prohibitive, the big companies who can afford it would only swell bigger, and smaller companies would be completely demolished under their competitive advantage.


The details are totally dependant on the whims / coercive ability of those in charge. Martin Heidegger, for example, would probably demand that employers stop hiring Jews and Communists and gays and Gypsies [sic] if he were in charge.


(Watch that happen to conservative Christians in coming years)


It's already happening in San Francisco.


I'm not even a conservative nor am I Christian, and most people here are vastly put off by my views.


Moreover, they assume that I must be some sort of retrograde Republican conservative Christian, simply because I don't adhere to the progressive paradigm which is locally popular


"Either you're one of us, or you're Richard Nixon"


The net effect of unions would be to sharpen that divide, not heal it.


For the record, I don't care at all if gays get married. Gay marry all you like. I also don't care at all whether you have an abortion. Abort away.


It depends on who runs the union


And who tends to run unions?


The most motivated members of the workers. They are usually motivated initially by ideology, and then later flip to cynicism and stealing money from the union for their own benefit


One can imagine a conservative union that is plenty bad


Unions in Germany in the 30s were government-run and promoted Nazi practices, for example


Ordinary workers tend to not care about the ideology part much, except insofar as it benefits them and their own economic condition


"You deserve more pay because you are being exploited" can work, if it's true that the workers consider themselves to be exploited. "You should go on strike to promote this specific vision of social justice for all, even though you're being paid a lot" is empirically not working as an organizing principle, though.


"your friend got fired the other day just for mouthing off to the foreman, that's horrible, now his family will starve, let's all go on strike to get him his job back" is a great motivator for ordinary workers. "your company doesn't have enough employees from minority group X, let's all unite and go on strike to force them to hire more Xes" is apparently not


(Irrespective of my personal views on whether it would be good)


The question of whether a union-like group could be organized to promote a standard of crafstmanship is interesting. Other forms of engineering indeed do something like that. For example, you can't just call yourself a civil engineer and begin constructing bridges.


Software engineering is just about the only open-entry engineering


Probably because other forms of engineering have strong and obvious safety implications


I think the upshot is that if nobody actually dies or gets horribly injured from an engineering failure, capital doesn't care


They'll just deal with the failure and its costs, even though this is often irrational on their part. In many cases, it'd be cheaper to spend a little more upfront to design the system properly.


Many engineers also strongly tend to overengineering, building out redundancies and such that are not actually worth the cost of building them. To get around that, management often just goes with "dont' build anything but the base functionality"


This does imply that a company that can selectively build only those secondary systems / features that are actually important to correct operation (in a financial and technical sense) will have an advantage.


But, there's no (easy) way to systematize that.


And there's often little window given by developers to the tradeoffs involved.


Again, because they often do not have a sufficient engineering mindset to build those windows.


Most management treats the programming as a minor technician-level act, and budgets appropriately


Like you'd hire a plumber to install a toilet or something in a new house


Because developers themselves trivialize themselves.


Sure, some do


And the ones who don't are simply told, "we don't have time/money for that, just do the basics"


Have you seen the JS-obsessed side of the industry?


Evidence enough.


Ah, another whole topic area 🙂


Programming is being promoted as "the path to a middle class life" now, The industry is flooded with entry level programmers trying to get in on the next hot thing.


At the same time, venture capital has honed its "lean startup" methodology to the point of stripping away ALL secondary features


Which isn't necessarily a problem, until 'secondary features' cuts into the actual quality needed to sustain long-term development


This cohort is not from the old school geek subculture that we old (30s!) people know and love. They're here for the money. They want to learn as little as possible to get to the money. Javascript on the server? Great, that way you don't have to learn two programmign languages.


Compounding the problem, investment banks began hiring far fewer people after the 2008 crisis and the new banking regulations it brought. Now ambitious young alpha male fratboy types from elite schools who would've gone into banking 10 years ago are now all going into software.


The 'brogrammer' phenomenon


They are often smart, but don't care much about craft or the technology per se. They'll study it if they have to do so to get ahead, nothing more.


In the same way that 10 years ago they would've studied options pricing


(nobody howled in protest, even though I just promoted an unflattering stereotype of a demgraphic minority...)


I think the other party in the conversation has dismissed your chain of thought and departed.


Yep, so it seems


Would recommend writing blog posts on this sort of thing, though. Need vocal insight into historical context like this where we can get it.


That usually happens with postmodernists presented with that information, which they are typically totally unaware of. Leaving is easier than processing it


postmodernist Ethnic Studies 101 professors usually gloss over the whole Heidegger bit


'We are the thinking people, the intellectuals. Except when we don't want to, because we've already got it figured out.'


or are unaware of it themselves


And yes, the professors have fixed agendas or are not fit for such educational leadership.


I wrote some blog posts alpng these lines a few years ago. Almost nobody read them.


Gotta promote more. 🙂


Find folks who will promote for you, too


Yeah... I'm not a marketer

paul.legato19:12:49 seems nice as a way to get readers


Though it means giving up control of your content to a large degree


Maybe it's worth it


It does seem to be a fairly well-respected platform, good for this type of thing but harder if you're trying to curate many posts.


Each post basically has to stand on its own to some extent.


I was just amazed that thousands of people actually read something that I wrote there


with my personal blog on my own domain it was dozens


who trickled in from random google searches


Things like that, you need hooks and individuals to point people there for long-term readers


So having a talk at a conf, say, and saying 'you can find out more about this and other topics at my blog', etc.


The tweet-space is probably best used as a 'my blog posts are up here' stream more than an actual discussion stream, e.g.


I'm not good at self promotion


It's always seemed used car salesmany


I know 🙂 So build on opportunities you already have day-to-day. Pitch it as 'if you're interested in what I'm saying, there's more thoughts here you may want to read.' Not a pitch for you, but rather the ideas you carry.


For a blog, that's easier than, say, getting a job, which always feels a bit scummy


Ha. Yes, the whole job finding system is indeed scummy


First you deal with a non-technical HR person who is just scanning for keywords im your resume


You have to call them and convince them you are a proper team player who also has decades of experience not only in the general area of engineering, but also in the specific libraries the company uses...


But not too many decades of experience, because then you're old -- not a good 'culture fit'


Your new boss is 23 and has never had a non-intern level job before. But he knows all about how to run a software team. Your suggestions are old school,


Yes, "he," because women are rarely that pigheaded and arrogant


And that's why we're using Node.js for everything.


> Are we dinging people for trivia questions, for not remembering, “Oh, I need this third option flag, or an obscure method from a core library.” Yes.


I've personally seen engineers assigned to interview someone prepare by reading Wikipedia for an hour and a half first, so they can go in and tell the candidate to implement some obscure algorithm from scratch on the whiteboard, and fail their whole application when they can't.


So I've interviewed 100's of ppl for technical roles and probably hired 80-90 ppl. I don't think I've a perfect system but I tend to review CVs myself or have another developer help me filter. I then usually do a phone or video conference interview looking for someone to explain their previous role(s), what interests them, etc. and probe for technical details (I can usually tell those who are pretending they did something). If they are junior and have no or little experience I look for enthusiasm and whether they've had a go in their free time (caveat: be careful for gender and cultural bias as some groups don't have much free time). I then invite them to a face to face pairing session. I often hold these outside office hours as not everyone is free during those times. Assuming they have some programming experience I set a simple programming task and we work on it as a pair (except I usually act as navigator the whole time instead of taking a turn driving). During this I don't just look for whether they can solve the problem or the elegance/readability,etc of the solution. I also ask open questions about what they are thinking, how they've tackled problems in the past, etc. I also look for people who admit when they need help or don't know. I look for how they communicate and think about how they might fit in the team or challenge the status quo. This pairing often lasts up to 2 hours and some of the best hires I've made didn't finish the problem as we got into other interesting side conversations but it was obvious they could. I sometimes find asking experienced developers who are not used to pairing to pair weeds out some who are not receptive to the idea and disqualify themselves. This is good thing as although I don't use pairing all the time I really want to know if people are open to new approaches they're not used to, regardless of what they are. This process definitely doesn't account for my biases but I try to be mindful of them. It's been reasonably successful but it's not really easy to scale.


Anyone here read 'Peopleware'?


If having more free time means they are materially better at doing the job than otherwise, is that not highly relevant? Certain groups should get a free pass on having lower skills due to a correlation (which does not imply causation)


Suppose a member of one of these groups worked extra hard to gain those "free time" skills despite having a similar level of free time as others in the group. Should that person not be the one who is hired over the others?


If one were hiring, say, a lifeguard, and there are 9 candidates who practice swimming 5 hours a day and one who doesn't have the free time to practice swimming more than 1 hour a week (for whatever reason), who should be hired?


Who would you want attempting to save your life if you were drowning in the pool?


If you require surgery, do you want the surgeon who has done the operation 100 times a year, or the one who doesn't have time to do it more than once a month?


That’s a recipe for perpetuating unequal distributions of privilege and companies lacking in diversity. The data are increasingly clear that diverse companies are more successful so you can hang your hat on that even if you’re unconcerned with equal access to opportunity.


This hiring process also inherently discriminates against those who do not work well in pair programming, for any reason.


Define the metrics by which you measure diversity.


That's fine if that's what you're after, but it's something to be aware of. If your company always does pair programming, that's probably better.


If diversity were inherently more successful economically, there would be no controversy. Diverse companies would have out-competed non-diverse ones long ago.


Companies are by definition amoral, disinterested sociopaths.


This is, again, an attempt to promote a very particular vision of what constitutes social justice as though it were uncontroversial and universally accepted as correct.


In that sense, it's not materially different than religious missionary work.


It’s almost as if the naive free market model of the economy were too simple to meaningfully describe the real world


The missionary arrives, assumes without discussion that his own views of morally correct behavior are obviously correct and proper, and begins scolding everyone for not behaving in that way.


Indeed , the modern progressive movement is also rooted in late 19th century Protestant social improvement societies. The postmodern version ditches the Jesus part and replaces it with Chomsky or Said.


The sarcasm is not necessary


Which is crushing to the people being reached out to. Insisting on moral reform without providing any hope beyond 'change or else'


Much less any reasoning in this case


Yes, it deprives the supposed victims of any form of agency. They are merely passive victims of forces beyond their control, too stupid and weak to do anything about it, and thus they need a wise, well-educated missionary to come in and set things right on their behalf.


This being precisely the "Ubermensch" aspect of fascism / postmodernism I referred to earlier


It's incredibly patronizing and condescending, at the very least


Oh, awesome, we’re back to the bad philosophy and rhetoric wall of text. Enjoy yourself.


I have no issue holding a discussion others whose viewpoints differ from mine. Apparently Donald Ball does.


'It's bad. No, I'm not going to discuss why. Goodbye'. This is why we have our current political situation.


Thus tons of people shocked -- shocked -- to find out that Donald Trump won, because the Facebook and Google News algorithms learned to only show them stories that conform precisely to their own views


For the record, I think Trump is entirely unfit to be president on multiple levels, and I didn't vote for him.


This is what political correctness has brought this country to. That jerk in the White House.


Anyone who disagrees with the PC line in any way is simply evil, and not worth talking to.


They have turned rational discussion into a moral mandate.


Rather, turned from rational discussion to moral mandate


Since their ideas would not hold up under critical scrutiny, it's simpler to just batter it home by 'social persuasion'.


Hmm, where had I seen something discussing similar recently...


(having only skimmed it and not read it in full)


Postmodernism holds that rationality and logic are merely another form of intersubjective discourse, in no sense different than any other, and therefore not worth bothering about except to the extent that it supports your own personal narrative. Some leftist variants promote the idea that the effort to be logical in thinking is some sort of tool of white male oppression.


Yes, a moral mandate. No different than any overzealous missionary.


Anyway, back to jobs discussion, there was an article going around a month or two ago about how the only effective way to do interviewing is to have candidates do an actual paid work sample, as nothing else can test for what they will actually be doing. I agree.


I've heard that. Would love to interview that way, especially if I'm working with a team during that time.


IIRC it suggested having the work sample be totally decoupled from the candidate's name or other identifying info, to remove any possibility of bias and ensure they are evaluated solely on the quality of their work.


Gives both sides an idea of what you're getting into.


That sounds great to me.


I think most companies won't do this as a false economy. You have to pay people to do that, and it takes time. I suggest this is actually far cheaper in the long run than dealing with the pitfalls of the conventional hiring process.


Peopleware tugs on the idea of having teams select their own members - the caveat I'd have is that, yeah, you are going to tend to reinforce any bias unless your team rigorously seeks to complement their own views.


For a huge company like Google that gets thousands of applicants a day, it's not practical


Most people seem to be ahem pretty bad at seeking out any views that are not identical to their own


Mmhm. Which is where Peopleware might be getting a bit... idealistic. I think the idea was to ensure there aren't going to be any scathing problems, rather than total conformity/compatibility.


But I can see it swinging towards the latter if left to its own devices.


Maybe "avoiding scathing problems" is as good as it realistically ever gets


@paul.legato You are right it discriminates against people who can't pair well or can't communicate to some extend. As these are important to me I think that's a fair discriminatory factor. I would say the free time thing is not a fair discriminator. For example, if I have a family and I'm busy looking after them I may not have as much time to teach myself coding. However, once I have the job I may be able to afford child care and learn more on the job. So it depends. I did say there are biases.


If you don't have as much free time to teach yourself coding, then you're going to be objectively worse at coding than someone who does. Isn't that material to doing the job?


I'd like to be a math professor, but I don't have the time to study advanced math.


You think the job is all about coding...I don't


No, I don't think the job is all about coding. But a very significant part of it is.


I know some brilliant coder's who can't deliver a working system because they can't elicit the requirement from a user


It is a significant part but a better communicator who hasn't had the coding practice may end up being the better developer


That may be so. But then, you are introducing a judgement call, and scope for any unconscious biases to work.


A lot depends on whether your recruiting for jnr or snr roles too


Also keep in mind that you can still choose to hire someone junior without those skills, with an aim to place them under someone who can help them cultivate those skills.


... That's what you just said, hah


Also relevant is the firm's goal in the hire: are things going so well that the firm can afford to speculatively employ someone who may (or may not) become a good coder in the future, but is not now? If you have the budget for that kind of thing, great


Job selection processes are inherently 'judgemental' as they are 'selective' in some way. I just think you need to be mindful of bias to the extent that's possible.


False negatives, basically.


If I were getting surgery, I wouldn't want the surgeon who was hired for on-the-job training. I want the expert who's done it a thousand times before and can do the operation in their sleep.


Pragmatically, no-one comes out of school prepared to do surgery.


Again, the craftsmanship tendendcy would point you in the direction of apprenticeship / journeymanship


But that's completely different from a corporate hiring process


@paul.legato but you wouldn't want the entire surgery team to be surgeons


There is also the question of "reverse bias": whether sympathy for a candidate personally is inducing you to relax qualifications that would be required of other candidates. That's rather condescending towards that candidate, and unfair to the others, no?


Well, the metaphor isn't exact. Surgeons are trained as apprentices.


I wouldn't relax anything


I judge on balance


You just said if someone e.g. has a family, you would require less coding practice than someone who doesn't


Even asking whether a candidate has a family is illegal in the US


If a fair coder brings other skills and a brilliant coder only codes I might choose the fair coder


Then how can you possibly know?


It's illegal in UK too


I judge coding and other softer skills


That's not at all what you said initially


I was using the family thing as an example of why


If you can't possibly know that as an interviewer, how does it matter


Many / most coding roles don't actually require a brilliant coder; a fair coder is good enough. In that case, I see no issue with hiring a fair coder who is a good communicator


I simply said that I would not completely rule someone out just because they couldn't get in during office hours or their coding skills might not be quite as good if they bring other qualities I want


Think the family bit was just being used as an explaining example for why someone may have a specific skillset.


Also a Jnr role may not need someone with much coding experience


Not necessarily as something weighed in the interview 🙂


The original formulation was more like: one ought to be aware of biases against certain genders or minority groups who may not have as much free time to practice coding, and therefore have weaker coding skills


That, to me, is patronizing and condescending


Anyway my point was my job selection process is about a number of factors not just the ability to solve an algorithm


@paul.legato it wasn't intended that way.


I know. But it is


It's saying certain groups ought to have lower standards because they are inherently worse


However, if I'm looking for a more junior role, regardless of gender or minority group, I can take weaker coding skills


A junior role implies weak coding skills in general


not just for certain groups


I think that's what he's saying


But once more I would place someone in a more senior role even if they were not a great coder if they have other skills that would make a good addition to the team. E.g. knowledge of the business domain, soft skills around requirements gathering, etc reagardless of gender or minority status.


It's the mix in the team I want


That all sounds good, so I'm not sure what it has to do with gender or minority status at all


Junior roles go to weaker coders. Senior roles to better coders who also have good soft skills.


Gender or minority status is irrelevant (and it's illegal to even consider it one way or another in the US)


I don't think gender or minority status got brought up at all in this thread


I would say some junior roles might go to good coders with really poor soft skills too. Depending on the team and biz context


> If they are junior and have no or little experience I look for enthusiasm and whether they've had a go in their free time (caveat: be careful for gender and cultural bias as some groups don't have much free time).


Note Junior and experience


Ahh. Seems a tangential supporting point to the main one, 'reasons why you might have a different skill set'


It sounds more like saying the bar ought to be placed lower for those deemed to not have much free time


Should we also place the bar higher for those minority groups we deem to be really good at studying?


If you are a great communicator and have little time to build coding skills I might hire you instead of someone who had slightly better coding skills (due to more spare time) but poor communication skills


I agree with that.


Because gender and minority status doesn't enter into it there


I am absolutely not saying gender differences or minorties have an effect on the ability to learn


I simply meant that if you haven't had time to learn but show aptitude to figure stuff out and bring other skills you may still get hired...depending on other candidates abilities


I personally think the best way is to hire to job requirements: code at level X or better, communicate at level Y or better, and you're in. I don't care one way or another about your gender or ethnicity.


Suggesting that one ought to be aware of gender and ethnicity when evaluating coding skill is not that.


Not what I said


My ideal hiring process would be double blind. Their code sample will be assigned a serial number and evaluated by someone who has no idea of any personal attributes of the candidate.


Think what you said and what you meant got tangled a bit, I think you're both on the same page


I disagree about double blind but only because coding is not the only factor


I am not a great coder


Communication skills can also be evaluated double blind... here are some high level business requirements, type up a set of technical requirements. Something like that


I am a good communicator, designer, architect and have a lot of experience in lots of secotr


Maybe do an IM chat session with no names or personally identifying info


If I was only judged on coding I would probably not get a many obs as I do


That's fine, I agree that non-coding skills are also very important


I have done the IM thing


Can work quite well


Slack as a platform would provide quite well for that.


But the final choice is always a little subjective as you need to know how someone will fit in the team (and that doesn't mean they have to be homogenous or think like everyone)


Yes, there has to be a "jerk filter"


at the very least!


I suspect I may have failed your "jerk filter" initially...and I'm sorry if I came across like that 😄


I don't think you're a jerk, no worries


Also typing on a moving train makes for interesting typos!


My stop coming up so bye for now


Thanks for the interesting chat. If you're ever in SF, I'm happy to buy you a beer or two