Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The dispassionate developer (ploeh.dk)
286 points by algui91 on March 24, 2021 | hide | past | favorite | 255 comments


Maybe it's the jobs that I've worked, or the country I'm in ( UK ). But I've really not seen this shift towards looking at portfolios of open source work rather than CV's. Every company I've worked for has requested a CV, and often does some form of test or in person interview centred around programming problems. The tests vary in quality and depth.

I wouldn't think of myself as a passionate developer. I have a family, I value my free time. I spend work time growing my skill set as it's required, anything else I do is rarely related.

I have a feeling that there's a silent majority of developers such as myself, that do enjoy programming and have a "passion" for it, but do not let this passion dissuade them from family time, or having more varied down time.

I think for a lot of people it's a dangerous game to be spending every waking moment working for a company, then spending your down time scraping together stuff for open source contributions etc.

I salute those that can and do though.


On the hiring side, it’s rare to see someone come through with significant OSS contributions. A small bug fix here or there is about the most I see from 90% of resumes.

Every once in a while we see someone with a lot of open source contributions, or even full leadership of a popular project. These people would really prefer if we believed that OSS contributions and GitHub profiles replaced resumes or CVs, because it’s where they shine. Unfortunately, doing so would exclude many great hires who have done a lot of great work at private companies that doesn’t show up on their GitHub. We’ve also had trouble hiring prolific OSS contributors who spent their days working on OSS contributions instead of doing their job. One candidate wanted their contract to state that they could spend half of their paid time working on their OSS project. We passed.

In my experience, anyone claiming to have a single dimension credential preference for hiring (usually GitHub portfolio, Ivy League education, ex-FAANG) is simply hiring for people who look like themselves. They’re not a good fit for unbiased hiring.


Taking that a step further, we often actively discourage looking at OSS contributions during resume review for the same reason we don't offer take home interview assignments: it's biased against people who don't have a whole lot of extra time at home. When we have done either of the above, the singles who work part time have a bunch of time to perfect their work suddenly have a lot to show over the single parents who may be working full time or more.

I say "often" because OSS contributions can still be an indicator of something, but it's not really clear what. Maybe it indicates drive to contribute to OSS, maybe technical ability, maybe no hobbies or commitments outside their day job. In our experience it's often the latter, but even so, it's biased against people who don't have the time to contribute even if they desired to do so.

So we typically just stick with the resume for actual experience and college coursework, if any, but not the college itself. Using these heuristics we've managed to build a pretty strong pipeline of people with all backgrounds of education or experience.


> for the same reason we don't offer take home interview assignments: it's biased against people who don't have a whole lot of extra time at home.

This is just another single dimension hiring credential, that will result in limiting your hiring pool to people like yourself. My code ran on 70+ million machines last month, but I've come to decline any timed or proctored technical interviews.

It's not that I'm too good for whiteboarding or timed tests, or that my options are so open that there isn't significant cost in doing so - quite the opposite: I'm come to find the process so traumatic that going through with it isn't worth it for anyone involved: those jobs just aren't open to people like me.


We look at CV and then have an interview process. We don't do proctored timed interview coding questions in the usual sense, though we may walk through code. I understand the reluctance of a senior engineer such as yourself to go though any interview process, but to be honest I've interviewed plenty of engineers with decades of experience and many have completely fallen flat. Interviews aren't just about technical knowledge, but also to make sure people will get along and are reasonable to work with.

I think we'll agree that there has to be _some_ interview process. iirc node's Left Pad package is downloaded like 20M/mo.


Yes, that's very different, and much more reasonable than most places that don't do take home technical examinations.

There's obviously a fundamental necessity to evaluate a candidate's technical skills directly, rather than relying on credentials - my issue is with the false expedience and conflationism of timed and artificially performative technical evaluations, and my personal difficulties with the social requirements inherent to them.


Agree


I prefer to look at everything the candidate has to offer.

Don’t penalize people for not having OSS contributions, of course, but it doesn’t make sense to ignore them. Whatever credentials the candidate brings to the table should be taken into consideration.

Not everyone has the opportunity to go to colleges or get a first job at a well-known company. If someone chooses to prove themselves via OSS contributions, let them.


Thank you!

When I was single I had a lot of free time to tinker and go through coding tests, etc, etc, and cater to whatever hiring shenanigans were in place.

First marriage, then a kid, and I find myself grabbing my laptop after work maybe once a fortnight. I'm always "open for new challenges" and I regularly apply to positions in interesting (to me) projects, but more often than not, at some point in their process they gimme some "take home assignments" that are a literal week of unpaid work. I've heard of companies that pay for those assignments, but I've never stumbled upon one.

I always drop out of that, thinking, "good luck with that particular choice of candidate sampling". I might not have been the best candidate, but most seniors I talk to are turned off by these things as well.

Timed coding tests are fine, up to 2-3h, I can squeeze one of those in most weeks. But, and I'm not making it up, "implement this subset of the MQTT spec in your language of choice" as just a step in the hiring process? Hell nah.


I wrote open source initially because I wanted to skip those assignments but still be fair to the hirers and because it took less time and was WAY more fun than take home tests.

What I discovered was that they'd be willing to make me work 5+ hours on their assignment but wouldn't spend 5 minutes reading my code.

Though it wasn't my intention it inadvertently gave me a quick and easy way to filter companies which actively disrespect candidates' time.


It takes more than five minutes to review code, especially when it's of a volume you describe. You're also really trying to replace the metrics against which a company measures candidates and insert your own metric and then complaining that they don't use your metric. I wouldn't expect you to use my metric when interviewing me for your company, so don't think it's fair to try to insert your own metric for others (though you're welcome to vote with your feet).


It takes more than 5 minutes to thoroughly review code but you can learn a lot from only spending 5 minutes.

Ignoring it completely also sends a signal to the candidate. IME this red flag is usually paired with 5 or 6 other red flags.


So I am married with kids and I have two separate careers in unrelated industries to balance, only one of which is full time though. Still I find time to spend with the wife and kids and I still contribute daily to open source. It is all about budgeting and balance. What are you willing to sacrifice. I don't have social time outside the family and I don't watch much television unless I am traveling away from the family. I balance open source against things like gardening and house maintenance but gardening and house maintenance only take so much time.

The biggest killers to my open source contributions are general life soul sucking killers. For me the worst is long driving commutes to an office. I can feel my soul bleeding away.


That's wonderful! You sound like a very driven person to be able to do all of that. Of course, your experience and ability shouldn't be considered the norm with everyone or expected of anyone, especially because with finite time in the day and differing situations, we must strive to judge everyone on the same plane.


> Of course, your experience and ability shouldn't be considered the norm

It is the norm in my line of work. I mean in my other line of work that isn't a software development.


Oh sure, sorry I should have clarified, I was talking about software development. I thought that was implied, but happy to be explicit.


I also find it strange how some people are so incredibly emotional about this subject like being punched in the face or having their car stolen at gun point.

I like programming as hobby so I choose to program outside of work. By no means is that sentiment meant to suggest any form of hostility. There isn’t even any competition implied.


I doubt I would be able to juggle 2 jobs with my current pandemic induced schedule. Basically, my time is spoken for during the week from 630am until 8pm. And that gets me 6 hours of work. I need to find 10 hours outside that time to get myself up to a 40 hour workweek.

I'm pretty lucky in that my wife is a stay at home mom. My sister in law has a dual income family. They basically never see eachother, because one has to work during the day during the week, and the other works nights and all weekend. They're lucky one of their jobs is so flexible.


During the pandemic many developers are working from home, so scratch off transportation. Most developers in the corporate world work 40-45 hours per including lunch, breaks, and distractions. So normally that could be something like 9am to 5:30pm. If you have flexible office hours you can push that to 7am-3:30pm.

If you are into open source you can spend 2 hours per night. Where you put that two hours is up to you, but you need to break for a scheduled meal. A scheduled meal ensures better nutrition and mental health plus some dedicated family time. This mean you program open source from 4-6pm or 8-10pm. Which ever you choose the other is dedicated time with the kids or chores around the house. Then you can spend about an hour before bed watching a show with your spouse.

You still need time to exercise and I find it’s better to do that in the morning with less mental fatigue so I will wake at about 5am.

When you need to participate in a side job that is structured time dedicated in a scheduled way, one or two weekends a month and occasional emails and a rare phone conference during the week in the evening.


Does your wife do all the cooking, housework and childrearing?


My wife works a part time job and chooses to do most of the cooking. She does most of the laundry but other house hold chores are spread out amongst everyone including the children.


We're having a bit of a debate about this internally as the company I work for is struggling to hire good candidates. For a while we've had a take-home test and that has increased our success rate somewhat. But as you say, we really don't want to lay unreasonable expectations on people who may have other obligations, but we've had many people in the past who've interviewed very well but turned out to be completely incompetent when assigned to a real project.

Maybe we're just really bad at interviews? It probably doesn't help that management here is almost entirely non-technical. There's usually a developer or two sitting in on the interview to try and balance it out, but I don't think any of us would consider ourselves particularly good at interviewing people.


> we've had many people in the past who've interviewed very well but turned out to be completely incompetent when assigned to a real project.

Unpopular opinion on HN: This is actually quite common when you hire based purely on resumes or credentials. Some people are really good at interviewing and being charismatic enough to convince people to hire them. There are a lot of candidates who can talk the talk but really just want a job where they can browse Reddit and Twitter all day while writing a couple lines of code every once in a while. There are a lot of companies that are big enough for these people to blend in for years.

Take home tests in the range of 1-4 hours shouldn’t be an undue burden on any applicants, if you give sufficient time to return the test. Many candidates wouldn’t bat an eye at taking a day to interview on site, so asking them to spend a couple hours of their free time on an interview isn’t really a disproportionate ask.

Giving someone a 20-40 hour take home project would be ridiculous, of course, but reasonably sized problems are perfectly reasonable.


> Some people are really good at interviewing and being charismatic enough to convince people to hire them.

Totally agreed. Traditional interview processes select for people who are good talkers. That doesn't correlate well with technical skill: you over-hire glib people and under-hire people who aren't. E.g., the shy, awkward, and anxiety-prone.

When I run an interview process, I focus on making it as much like real work as possible. Some pair programming, some technical discussion, some joint product collaboration and systems design. It's my firm belief that if we want to know if people can do a thing, we should try doing the thing with them. It's not perfect, but it's way better than asking people about their 10-year career plan or having them solve Mensa puzzles.


>Traditional interview processes select for people who are good talkers. That doesn't correlate well with technical skill: you over-hire glib people and under-hire people who aren't. E.g., the shy, awkward, and anxiety-prone.

This is true: but "technical skill" is not the ONLY hiring criteria that should be considered. (I say this as a fairly shy, awkward and anxiety-prone person, who has had his share of interviews-gone-wrong).

I'd posit that you DO want to hire people who are good talkers, and are glib. They help build teams. They help with information flow. The greatest ideas in the world are worthless if they can't be executed by a team that doesn't understand them, and the person who came up with it can't communicate that idea effectively. One might say that that is what code is for. But that's not true. If code were to communicate between the developer and the machine, we'd all be writing in machine language. Code is a communication tool for developers to collaboratively tell the machine what to do. And that has to be supplemented by human, interpersonal skills. (especially when you have collaborators who are not coders, like business and finance people who organize the teams and manage projects and programs).

I like that you focus on pair programming. One horribly toxic factor I see at way too many places is where management pits programmers against each other like it's some kind of competitive sport, and collaboration is frowned upon because "if you can't figure it out by yourself, you're a burden on the rest of us".


I am certainly not arguing for only hiring based on technical skill. Perhaps you didn't get the chance to read all of my comment, but I make it clear collaboration is important. I'm also not totally sure you know what glib means, so I'll just quote the definition here: "fluent and voluble but insincere and shallow".

Basically, I think workaday collaboration and communication is a pretty different skill than on-the-spot glibness. If I'm hiring a PR person or a press secretary, glibness is a valuable skill, because an important part of their job is to talk over people, to favor sounding good over consideration or substance. But for a software team, I value more substantial engagement and communication. So no, I'm happy to hire people who are not glib. Have done before, will do again. And for those who do happen to have the gift of gab, I want to be sure they have it in check and only deploy it when necessary. A colleague who can say, "I don't know" is way better than one who glibly avoids that out of pride.


> A colleague who can say, "I don't know" is way better than one who glibly avoids that out of pride

An interesting interview question could be to study the job applicant's background and then ask questions that, given the background, s/he doesn't know -- then, will s/he tell you this, or make up nonsense


What you may be missing is how hard it is to actually create a good take home. Every take home test I’ve seen was rife with potential for the problem to explode in complexity. Even things that seem simple like names and dates have so many potential pitfalls that it can be impossible to tell as an applicant whether they intentionally laid a trap or not. Then there’s the incidentals, should I send them a docker image to increase the odds it’ll work on their machine? Oh, they’re going to want me to extend this in real time, should I include other nice to have services that this problem could dovetail into needing, like redis?

As far as I can tell, any company that isn’t willing to pay contracting rates to solve real problems on their stack is likely being disengenuous with their take homes and largely biasing against experienced devs who aren’t as likely to waste their time. And worse with a take home, is that they have no skin in the game. With an in person interview they lose at least as long as the inverview. With a take home they lose nothing except short email exchanges.


A code comment saying “Here’s a potential pitfall we could discuss addressing” is often more valuable than a solution. Every software project has more problems than it has people-hours available. Every team has the engineer who spends a week fixing an edge case in their ticket that no customer cares about. Demonstrating awareness of this makes you an attractive candidate.


Take homes are easy to iterate on. If multiple candidates can’t understand the problem or waste time with over-complicated solutions, you update the instructions.

If you’re constantly worried about “traps” then you might not want to work for those companies anyway. Take homes should be straightforward and similar to solving real problems.

> As far as I can tell, any company that isn’t willing to pay contracting rates to solve real problems on their stack is likely being disengenuous with their take homes

Take homes are contrived problems, not real work. Every candidate receives the same problem so they can be compared.

No company should be giving employees actual unpaid work to do as part of the interview. That’s more of an internet trope than a real problem because no rational company is going to be sending their codebase to applicants to add features to.


> What you may be missing is how hard it is to actually create a good take home

The biggest issue I see are people underestimating the setup time for "simple" projects. You're a big software company that doesn't start new projects regularly, I'm a developer at a big company that doesn't setup new projects regularly, why do you expect me to remember how to setup "professional quality" projects in a couple of hours?

A simple console app might test if I can code, setting up a new MVC project with authentication, unit tests, IoC, etc is testing how well I can google shit I haven't had to setup for years.


It depends on when in the interview process you give the task, and if they're interviewing with any other places. If two places do this, a person now needs 8 hours or 12 in the week you give them. Ask for the task to be done before properly interviewing them and that presents more problems I hope that last one dies.


We spent some time on making up a quite simple project with a readme about the tasks to be implemented. It's something that can be done in half an hour when you are fast and we always thought we need to make it a bit harder. Turns out it's good enough to weed out quite many people who can't keep a deadline or don't get their shit together in other ways. From reviewing the code you can judge how people think, if they keep their files and code in order, use git etc. We also prompt people do document their process in finding a solution.


Interesting, could u share a bit more pls?


We made up a problem with technologies that we use at work targeted at frontend engineers. So we set up a project with a Symfony backend and made the candidates create Twig templates and SASS styling based on Bootstrap. Then we put that up on Github with a README. So the candidates could focus on the frontend stuff without caring for the backend. Still they had to figure out how to set up SASS compilation and modularization of Twig templates.

As I said it's not very hard but you can get bonus points if you come up with considerations for responsive design or stuff like that. Overall the aim is to create readable idiomatic code and not come up with something clever that no one but you can understand.

I guess that's a very specific task that's of no great use to others but the point is to have a specific problem with some blanks that can be filled out with a reasonable amount of work by the candidates. Plus the general workflow using git and such.


Although, if you wanted them to do a longer project, Basecamp’s method where they pay the applicant to do the project seems like a good way to do it. And you’ll get the most complete picture of their expertise (of course, you wouldn’t want to do this until the last step of the process).


This can get sticky with employee contracts, that may (and likely do) forbid an employee from doing contract work for another company, at least without permission.


I would find 4 hours a lot. It is basically wholw afternoon.


Ever been to an onsite interview? It'll take you the same amount of time. Or longer. While being far higher pressure. And probably involve writing code on a whiteboard instead of an IDE.


I was not on over half day long interview that would primary involve whiteboard coding.


Does a take home eliminate the onsite interview? Or is it just additional time?


Even if it is additional, it's not consecutive. The OP merely said 4 hours seemed like a long time. My point was not that this 4 hour block would or wouldn't obviate the need for the other; just that the other means 4 hour blocks are standard.


Oddly, the last technical interview process I went through was the best and in some ways, the most old fashioned.

There were three "rounds":

1. Phone screen with actual lead developer. There were some quiz-y questions here, which I'd previously thought of as a silly outdated approach, but it honestly was a low stress filter for basic technical knowledge.

2. 90 minute pairing exercise with the same lead developer. We built a small example app together. Resources were sent over ahead of time so my environment was good to go, and the expectation was set from the start that the goal was to assess how I thought and approached code, not to see how far I could get in 90 minutes.

3. 4 hour "on site" where I talked to each developer on the team I'd be joining. No technical exercises. Each person came with their own questions, and expected me to ask mine.

What I took away from the experience was that companies are seriously overthinking and over-engineering the process. There isn't a magic heuristic you're going to discover that will identify "10x engineers." You can vet if someone is technically competent enough for the role, approaches software in a way that gels with your org, and if they have any red flags in fairly straightforward fashion that doesn't require enormous amounts of prep for them or your team.


Our take-home obviously isn't a trade secret, so we have three trivial problems in ours:

1. Write code that takes in a rectangle, coordinate, and distance, and tells if that coordinate is within the distance of the rectangle.

2. Determine whether a string has permutations which are palindromes. (I'm of the opinion this one is too simple, but it's been fascinating seeing what mental gymnastics some developers will go through to solve this problem)

3. Write a CLI dice game (we provide the rules) in which the computer player wins 70% of the time. Make the method by which the computer cheats undetectable (of course this is impossible, but candidates just give it a best shot and we talk about their approach in the interview).

Assuming the test passes muster, we have three interviews right now, I think. One with managers to talk about the role, one with senior devs outside the team to perform the technical interview, and one with the devs in the team to talk shop.

In the technical interview, we primarily go through their test solutions (we do no whiteboard coding aside from reviewing the test and even that's very loose - not actual code). We have hired candidates before who have failed some of these tasks (mainly our candidates have trouble with #1) but who showed a capacity for being able to think on their feet and correct their mistakes during the interview. Of course a candidate who aces the test is going to have an advantage, but absent having the right answers, quick thinking/adaptability is probably the #2 trait we look for that seems to be a good predictor for developer success.

Every candidate we've hired through our process has been a success (which could be dumb luck, since none of us are super experienced/knowledgeable interviewers either, but we wing it best we can) and the take-home (and, equally importantly, the technical interview) has absolutely helped us weed out candidates with impressive CVs whose test results did not measure up.


2. Determine whether a string has permutations which are palindromes.

If I understand this correctly, it's the sort of problem that's simple if you see the trick and hard if you don't. I'd expect many candidates to think that you actually want them to generate all the permutations and then get bogged down in recursion.

#1 is good, and #3 sounds interesting.


> I'd expect many candidates to think that you actually want them to generate all the permutations and then get bogged down in recursion.

Ideally the candidate should realize that this is computationally infeasible and quickly come up with a much more efficient solution, right? Perhaps they believe that this question filters out people who 1) don't have a feel for what is computationally feasible 2) will just dive into coding without spending 10 seconds to see if there's a significant optimization.


Closes IDE and feels relieved to have dodged that bullet.


> 1. Write code that takes in a rectangle, coordinate, and distance, and tells if that coordinate is within the distance of the rectangle.

Distance from the center of the rectangle? Easy. From the closest corner? Easy. From the closest point on the rectangle? I'm not clear how to do this.

And will the sides of the rectangle be parallel to the x and y axes?


Break it down into cases. Is the coordinate closest to a corner, or to some point on an edge? You can determine that without actually working out any distance - play around with pen and paper and hopefully that will become clear. Then calculate the distance to either the relevant corner, or the relevant edge.

It's easiest to think about an axis-aligned rectangle, and you can convert any problem to have an axis-aligned rectangle by rotating everything.


I see. Thanks!

Quite a few pitfalls there, though. If I was doing computer graphics often, the geometry wouldn't be a problem I guess. But I've not done any such thing in decades.

If the job needs the geometry, then it might be a useful question to ask.


> We're having a bit of a debate about this internally as the company I work for is struggling to hire good candidates.

What's the compensation like? Stock?

> For a while we've had a take-home test and that has increased our success rate somewhat. But as you say, we really don't want to lay unreasonable expectations on people who may have other obligations

You'll also find out that the people you really want to hire are not on the market for a long time. So if they are interviewing at several places and you give them a 4 hours take-home, they'll put it on their to-do list but by the time they get to it they might be in the final rounds at 2-3 other places that brought them on-site immediately.

> It probably doesn't help that management here is almost entirely non-technical

That's a much bigger issue than most assume.

> There's usually a developer or two sitting in on the interview to try and balance it out

That's a huge no from me. Final approval of a technical candidate should only be in the hands of the technical staff.

I've heard horror story of a "senior" engineer from "his country's top school" being interviewed for a technical position by several non-technical managers and HR reps. They only included an engineer in the final round, which was basically supposed to be rubberstamped anyways. He was then asked to implement something trivial like fizzbuzz or wordcount on the whiteboard. The candidate then became extremely defensive and tried to argue that such task was "beneath him", arguing for a good 15 minutes why he shouldn't have to do it.

Then the dev just left the room and said that he used this question as a warmup with new hires and it typically takes them less than 10 minutes.


A lot of senior engineers would refuse to do a fizzbuzz. I'm really not seeing the problem here.


On the contrary, I think this is a huge red flag. Just go along with the interviewer, maybe highlight that this is typically and entry-level problem, but solve it. You really don't want to hire someone who not only can't solve fizzbuzz, but also refuses to hear about it and complain that it's 'beneath them' (what a annoying attitude!).


Depends. It could be an indication that there's been a miscommunication and the interview is for a much more junior position than expected, so I would expect a more senior person to push back. Fizzbuzz tests "can this person program at all?" For a more senior position, best to start with something harder and more job-related; back off to fizzbuzz if the interviewee can't do the hard stuff.


FizzBuzz typically gets raised eyebrows from folks who never had to do it because they assume there's a trick somewhere. It can't just be a one-liner they assume.

https://blog.codinghorror.com/why-cant-programmers-program/


Of course it's not, there's always a better way: https://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/


100% of those who can't code would refuse it indeed!


Imagine you're a senior developer with over 10 years experience. You're happily employed and make good money. You're contacted by a recruiter for an interview. Perhaps the company even uses some software you wrote.

"Ok this problem is called fizzbuzz. We just need to see if you can really code."

It sounds like the situation was of course different, but situations like above have happened.


I don't need to imagine it: It happened.

I laughed and wrote the solution on the board.


I don't know how receptive your management would be to this, or what it costs, but at my last job, all interviewers were required to take interview training. It made a real improvement in my ability to suss out a candidate and understand what they could actually do vs what they claimed they could.


> Maybe we're just really bad at interviews? It probably doesn't help that management here is almost entirely non-technical. There's usually a developer or two sitting in on the interview to try and balance it out, but I don't think any of us would consider ourselves particularly good at interviewing people.

This seems to be the issue, in fact it's quite baffling to me. If you are interviewing for a technical role, why would you not perform a technical interview led by technical staff?

I'm not saying the other stuff is not important as well, but this reads to me like you are essentially leaving the core of the role out of the interview (I'm not sure what "usually a developer or two are sitting in as well" means).


I've written a fair bit about hiring processes on my blog. My most recent post about is at https://blog.urth.org/2019/07/11/a-technical-hiring-process-...

We use this process at my current employer, and we've gotten mostly good feedback about it (including from people we didn't hire), though some candidates don't like it. The people we've hired using this process have been quite good, though I can't say if that's the process or something else that leads to that outcome.


> we've had many people in the past who've interviewed very well but turned out to be completely incompetent when assigned to a real project.

There is absolutely nothing wrong with coding test. Timed with internet. The one that does not tests for algorithms, but for basic competency. For example, ask them to parse some data out of xml file and give them tons of time. That will check competency without being burden.

Yes, non tech managera sux at recognizing who is good programmer in discusion. But, so do programmers and technical people. It is easy to pretend competence if you read enough blogs and can project right attitudes.


>For a while we've had a take-home test and that has increased our success rate somewhat. But as you say, we really don't want to lay unreasonable expectations on people who may have other obligations

These are mutually exclusive things. Candidates who have more free time to code are more likely to be better at it than those who don't (all else equal). Candidates who have OSS maintenance / leadership experience are more likely to work well in teams (all else equal).

If you choose not to weight those things, to balance the playing field for people who have more obligations outside of work, then you'll also have lesser quality candidates (again, generally).

So if you're struggling to hire good candidates, maybe it's a good idea to weight these things (and bias against people with less free time outside work). Once you have good candidates, and this is no longer a pressure on your business, then it might be a good time to try and balance the playing field for new hires.

But you cannot balance the playing field and also hire the best candidates. The best candidates will have unfair advantages in general. You can either lean towards having the best or lean towards balancing the playing field.


We should try to eliminate irrelevant biases in the hiring process but we are fundamentally trying to select people to hire who will join our company and write good code. That quality is not evenly distributed in the population.

Some of the gymnastics thinking that I see seems to suggest that we’d seek to hire fluent English speakers by interviewing evenly across all populations. By all means, I’d be more than happy to hire someone fluent in English from China, but if I’m looking for a fluent English speaker, I shouldn’t spent 18.5% of my recruiting efforts/budget in China out of "fairness".


People in China often don't speak fluent English because they grow up in a country where it's not a spoken language.

People who don't contribute to OSS typically don't do it because they don't have the ability (some OSS code is held together by duct tape) but because they don't have time, interest or think it's harder than it is.

If you have better tools to determine if someone is good at writing code for your company, why use a proxy measure that's different in many ways?


Unless I’ve worked with you or someone that I deeply trust has and will vouch for you, I don’t have any stronger signal of your coding and teamwork abilities than a strong OSS contribution history can provide.

It’s rare for an interview process to provide more than 6 hours of content, some of which is non-evaluatable. Reference checks are all but useless compared to seeing actual work over time.

About 1 time in 6, you’ll interview a full standard deviation above or below your “true” ability. About 1 time in 50, you’ll turn in a +2σ (or -2σ) performance. That’s largely eliminated with personal experience, a trusted vouch, or a strong OSS portfolio.


>I say "often" because OSS contributions can still be an indicator of something, but it's not really clear what.

It's a fairly clear signal of skill quality and attitude.

Reading open source commits/PRs and issue trackers tells you quite a lot about a developer which you can't see without some sort of a test (often not even then).

>it's biased against people who don't have the time

Surely any career that requires a high level of skill and practice honing that skill is biased against people who don't have the time?

What's special about open source?


Yes it can tell a lot about people who have the bandwidth to be able to be able to contribute to such. Others may and do have the same level of skill but didn't have the bandwidth to contribute to PRs, so by looking at PRs as an extra we're effectively penalizing those without time, which has the practical effect of biasing us against people with kids, people with a full time job and in grad school, or you name it. We shouldn't be biased against those people.

Any career, especially in our field, requires a high level of skill. We try our best to level the playing field for everyone while still getting a lot of signal in the interview process so end up eschewing things like school attended, talks given, OSS contributions in evaluating candidates. Anecdotally we've seen little correlation with these sorts of things and interview ability or ability at the job after being hired.


>Others may and do have the same level of skill but didn't have the bandwidth to contribute

And even more have the potential to become excellent coders but didn't have the bandwidth to develop it.

It seems peculiar to single out one quality in particular that sends a clear signal that a skill has been honed on the basis that it took time to hone that skill.

All skills take time to develop.


All skills to take time to develop, well said. I am confident that looking at how a candidate interviews will no doubt show the fruits of that time spent without weighting too much the time spent, regardless of whether that time spent comes from contributing to open source, from their full time job, or just studying and honing their skills efficiently under harsher time constraints. We don't want people to target the metric of "time spend coding on OSS projects" do we? I don't.

Besides, having a diverse experience base and pipeline (parents, non traditional developers, non traditional paths to SWE, and even single people with a ton of time and fortune to be able to do things like robust side projects) has served us particularly well in having a team with a wide breadth and depth of experience and viewpoints. Specifically weighting side projects in lieu of technical/EQ interview performance would ruin that in favor of the latter group.


>We don't want people to target the metric of "time spend coding on OSS projects" do we?

Nobody said that we did.

This is about ignoring OSS contributions vs. reading them taking them into account - i.e. deliberately ignoring a signal of quality because it might, for instance, discriminate against people who chose to have kids.

I find it particularly ironic coz part of the reason I wrote open source was to save time - to skip wasteful technical interviews that it ought to be obvious are unnecessary if I have public evidence I can code well.


We don't ignore them completely, we just weight them very, very low, as I've indicated. They do provide context. Your phrasing "chose to have kids" betrays some of your underlying beliefs, I suspect. We'll likely just agree that we weight things differently and are willing to forego some otherwisee excellent candidates to index more heavily on being fair to everyone in the process and judging them to the same standards. This is a conscious choice, and so far a very good one.

To your second point, I can't think of a single thing I would let be a proxy for technical skill in an interview process -- certainly not some commits to open source. (Maybe if I had worked side by side with the person in a previous life would be weighted) Even if we did use that as a proxy, it doesn't really save time because people would have to inspect the work and still doesn't really tell me anything about the candidates approach to problem solving or framing of issues that I can get from pair programming or walking through some code for an hour.

I applaud all your open source contributions and appreciate them, but I wouldn't consider them in whether to hire you except perhaps at the margins. Others may disagree and that's their conscious choice or they're indexing on something different.


>Your phrasing "chose to have kids" betrays some of your underlying beliefs

I did suspect that underlying your opinion was a desire to discriminate in favor of parents/against non parents.

This would fit in with the double standard I highlighted in my first comment.

This was also because you mentioned "parents" in the context of diversity (which is weirdly unique). I threw that phrase out there to see if it triggered you.

>To your second point, I can't think of a single thing I would let be a proxy for technical skill in an interview process -- certainly not some commits to open source

I've not worked with a huge number of developers who have made > 3 significant pull requests to a serious OSS project but every single one has been stellar.

I've worked with a lot of developers who can do the cracking the coding interview dance who sucked and even more who interview well in other ways.


I don't discriminate in favor of or against any particular group and am not a parent myself, though I have parents. I do recognize that many parents are often particularly overworked and can't jump through the same hoops you have time to jump through, which is why the example came to mind. That's all, no offense or "triggering" (???) intended and apologies if it came across like I was trying to rile you up. Per HN guidelines, you should be taking the strongest form of any argument though, to be fair. Regardless, I think you've gotten your point across and I believe I understand your motivations.


We OSS contributors with kids are in the worst spot! :)


You need time.

A full time job and small children for example don't leave much space for extended coding sessions on side projects, unless you're lucky enough to need little sleep.

I've worked around this by learning at my day job : read books/papers at home (this is relaxing), and look for opportunities to apply this knowledge at the office. Unfortunately, it stays at the office though, and can't be shown as proof of your skills outside of the company.


It's not about merit but about bias


You generally become better with more practice though, right? Whole 10,000 hours thing? Surely someone who spends more time developing will be better at it.

Now of course this doesn’t matter past a certain point — people could spend all their time working on something that doesn’t help them grow.

Then once you have those 10,000 hours of actual growth, you are probably close to a Senior developer level. Which after 5 years in an office job working 40 hour weeks, you’re there anyways.

But at the earlier levels of developers, it seems that working on projects outside of work would definitely help you improve faster!


I've seen this on Reddit a fair bit too but there's this sort of anti "10x-er" attitude. It makes logical sense to me that if someone spends more time practising a skill, then they would be more proficient and thus worth paying more. Yet there's a lot of pushback against that thought process because it is biased or something. Obviously there's more to a candidate than purely 'coding' skill but I find it weird that a company would want to explicitly avoid an indicator of time spent honing skill X purely because it discredits other people. I guess in an idealistic world it makes sense but the real world never quite lives up to the ideals.


I've found that a lot of hiring is explicitly biased against skill. The root cause is mostly the hirer wanting "people like me". Or, at least, not discriminating against "people like me".

I'm sure a lot of people who hire developers think of themselves as people who could write open source but don't have the time.

This also accounts for why stuff like leetcode persists (the hirers were successfully selected by that process), why top colleges are often preferred and even why the profession is predominantly white/male.


> You generally become better with more practice though, right? Whole 10,000 hours thing?

Except that 10000 hours thing is non scientific nonsense.

To improve, you have to practice right way. If you code for 8 hours at work, coding 2 further hours wont make you improve more. Similarly, if you want to improve in music or running, just playing songs or jogging means you will hit plateau pretty fast. After that, you have to train on correct selection of exercises.

At that point reading some theory will have much bigger impact, because yoi are doing something new. And even exercising will likely make you improve more due to what it does to body then further 2 hours of the same.


>If you code for 8 hours at work, coding 2 further hours wont make you improve more.

A) I'm pretty sure almost nobody actually codes 8 hours at work.

B) Those two hours will be of a very different nature to "work coding" and this can lead you to learn things you wouldn't pick up at work.


> I'm pretty sure almost nobody actually codes 8 hours at work.

The non-coding parts of work are necessary on oss projects too. In any case, programmers work being mostly coding + code review is pretty normal.

> Those two hours will be of a very different nature to "work coding" and this can lead you to learn things you wouldn't pick up at work.

That is nowhere near guaranteed and more likely to not be true. In particular, if you focus on maintaining the same software, it will be more of the same after a while.


>The non-coding parts of work are necessary on oss projects too.

IME a far greater % is coding. There's also a lot of OSS people involved who don't code who help out with the other stuff.

Moreover, a lot of the stuff that "isn't coding" is a strong quality signal - how the developer interacts with bug reports for instance.

>That is nowhere near guaranteed and more likely to not be true. In particular, if you focus on maintaining the same software.

It'll still be different to what you do at your day job and will necessitate picking up a different set of skills and a different perspective.


> IME a far greater % is coding. There's also a lot of OSS people involved who don't code who help out with the other stuff.

It was not my experience. In work, the proportion of coding was bigger then when I maintained open source one. Mostly because company paid people to do other stuff. In OSS, afaik, it is was more of rare to have dedicated tester or to get already analyzed input. Also, the planning, organization, documentation, keeping tickets clean, decision making and so on are all on you. The ratio of project work is the same.

> It'll still be different to what you do at your day job and will necessitate picking up a different set of skills and a different perspective.

Maybe yes, maybe not. And after a while of maintaining the same software, you already maxed out what you learned. Moreover, you can learn new stuff without having side project. It has advantages, because then you dont have to finish and polish stuff. You just learn or try what interests you.

Lastly, side project is really not that dissimilar then working on the job - meaning job+side amounts to 10 hours a day work basically. It means your hourly effectivity will go down exactly like all studies on crunch predicts. You will get tired and slow.


as someone heading towards 5 years developing, I'm not sure it's as straightforward as you think (and if it is, I'd love advice on how to improve). In my career so far my work has roughly gone in phases of backend, frontend, devops/infrastructure. I've been able to improve my soft skills of learning how different organizations work, learning how to network and collaborate, learning how to learn, etc, and improve my technical skills of development, learning about best practices, etc, based on the particular technologies I work with at a given time. But I haven't had the chance to just spend 5 years progressively leveling up my java backend or javascript frontend skills. As a result I don't think I would qualify for a senior developer level quite yet. But by that token, perhaps I'm also not the best person to say whether or not this is the typical path for a sr dev or not


I trust that all that practice would make someone interview really well, no need to look at how much practice they've had as a metric.


So you'd consider it anti-meritocratic?


> we often actively discourage looking at OSS contributions during resume review for the same reason we don't offer take home interview assignments: it's biased against people who don't have a whole lot of extra time at home. When we have done either of the above, the singles who work part time have a bunch of time to perfect their work suddenly have a lot to show over the single parents who may be working full time or more.

Or their company ships a product that has a huge dependency on that particular OSS project, so they are doing the work on company time.


How do you interview people who are changing industries then? The only way a cook or a librarian can get out of that and into software could very well be side projects and open source contributions. With your heuristics, you'd only consider their cooking experience and say "well that's not software" and pass.


Specifically I don't hire entry level people, so that hasn't been an issue. But if I did, I would likely look at projects and such, general aptitude, etc. because that's all there is.


This is bad for applicants who may be at dead-end jobs that don't provide much meaningful development experience, so instead choose to self-learn and/or contribute to OSS to fill the void.

Not saying your strategy is bad, just that you might miss some good candidates.


I've seen a lot of candidates put their GitHub link in their CV. When I go to check it out its usually full of half completed Django tutorials.


Oh no you actually looked at it??!


> One candidate wanted their contract to state that they could spend half of their paid time working on their OSS project. We passed.

I like the dudes honesty. He would not be doing OSS while pretending he is working for you. He is also leaving himself time for other things.

It seems to me like fair way of doing things. Company like yours passes and maybe another one will take it.


> ... it’s rare to see someone come through with significant OSS contributions

Because these people rarely apply for a posted job opening.


Companies should have different hiring processes for prolific open source code contributors and folks that don't do open source (presuming they want to hire both).

There are plenty of amazing developers that don't to open source and are great employees.

Other devs have extensive open source code. It doesn't make sense to give popular open source devs coding tests. Open their GitHub account, see their popular repos, see how they communicate on issues, etc.

The most powerful teams I've worked on have a mix on OSS devs and folks that only do closed source work. Hiring both is the best from what I've seen.


My favourites are people who have some personal projects (finished or not) to show. They're usually more interesting and telling than open source contributions, though I definitely respect that.


> On the hiring side, it’s rare to see someone come through with significant OSS contributions

Do you mean it's rare to see someone hired, or rare to see someone in the hiring process?

Because if it's the latter, that's exactly what I'd expect too. People with very significant and visible portfolios aren't sending their resumes because they don't have to.


I'm hiring a few engineers right now. I agree that some companies exploit "passion", and that companies doing that tend to over-weight weight things in a way that encourages having no life. I think that's a mistake.

That said, I do think some sort of "passion" is really useful. I've been coding a long time. I'm on something like my fifth major language. My first computer had 4K of RAM; now my phone has a million times that. I can't even count the number of business domains I've had to learn. I can't imagine people keeping up with the pace of change in our field without finding ways to love the work.

In contrast, I've worked with people who learned enough to be employable and then just kinda stopped. I remember one guy, a great manager, who kept giving technical advice based on his Vax BASIC experience at least a decade past the point it was sensible to do so. Or programmers who had basically become fused with legacy systems, only employable until the old code was replaced. It's not impossible to make a career of out that, but it's risky.

Especially given the release cadence of modern frameworks and tools, I think continuous learning is vital. And I think keeping up (or better, keeping up and getting ahead) is much easier to do if people really enjoy the hour-to-hour details of the work.


I know exactly what you mean, people being proficient in some very specific legacy domain (Vax BASIC is a good example, another might be AS/400/IBM i by now). Often going above and beyond in their niche expertise.

Though it's hard to get a full picture. Maybe past gigs or other circumstances have given them enough financial stability that they don't strictly need to work anymore. They then continue consulting out of passion for their particular niche, or somewhat opposite because they don't have any drive to learn anything else, but still don't want to retire completely. I feel like the people I have in mind there seem to be in a more good than bad situation.

But I've also encountered the other category you're hinting at, people who are fused to a legacy system (i.e. a particular project at a particular company), not a technology in general. A few friends of mine do that, and they are much younger and much further away from feasible retirement than the aforementioned "gray beards". I sometimes do wonder about their prospects, but, again, no full insight.


Definitely. If somebody is winding down their career, I totally get just sticking with the thing they know. A couple years back I decided I wanted to try my hand at building a mobile app. Starting from square one kinda sucked; suddenly being bad at something I am used to being good at was a drain. The ROI on a switch like that depends a lot on how many years you expect you can be putting the knowledge to use.

And yeah, I too worry about people who do that early on. Some things will probably last. E.g., I'd bet that Salesforce admins will still be employed 30 years from now. But the odds are not as good for most technologies in use today.


I find passion and fascination leading to a drive to learn better, faster or quicker, depending on the personality. But I harvesting passion in commercial settings is quite disingenuous. Some people don't have that passion and do quite well, they are in fact very rational and calculated and that is a good thing in some ways as well as those who are more passionate about more abstract things, there is room for quite a variety of types of people and they should all be given freedom to use their own qualities and not be forced to fake qualities that they don't have or are unwilling to share with others.


I think perhaps words are getting in the way. I don't think passion and reason are contradictory. I think they're complimentary. Competitive chess might be a good example. And plenty of people here are both passionate about various technical topics, but still are very rational about them.

I agree that people shouldn't fake qualities. But neither do I think everybody will be equally good at every job. E.g., I can do sales, but I just don't like it. I'll just never be as good at it as somebody who really enjoys the work.


Same here in the US. Forums like HN and /r/cscareerquestions overrate how many people do OSS or care about it. I think maybe 5% of devs I've worked with do anything beyond the 9-5.


I never quite understood that advice. I've worked for multiple FAANGs and have no OSS or really any online presence tied to my name. Just practicing interview-like problems in an interview-like setting is a far more efficient use of time than doing random OSS work if the end goal is to get hired. Those companies really don't even look at your commits to their own codebase when they are considering promoting you - they aren't going to delve through your open source projects to hire you.

Just do things like implement a heap or boyer-moore in pseudocode or python on pen and paper without referring to google.


There's also a chunk of us in the middle, who don't do open source, but still learn and have our own projects outside of work hours.


cscareerquestions is heavily weighted towards graduates fighting tooth and nail to secure a first job with companies that mostly view them as an undifferentiated commodity. There's way more supply than demand.

It probably is a better way for graduates to differentiate themselves than experienced engineers.


In Australia, and I concur. No one expects you to have OSS contributions and it's enough to have work experience.

Thank goodness. I didn't spend all these years working for it to be ignored in favour of a few hours a month patching people's shit for free. My work experience is also 9-5 week after week of solving real business problems, which can be messy and requires pragmatism. Just working on OSS doesn't prepare you for work, it's a great start, but OSS projects are often very clinical, perfectionist and academic. Work has messy business requirements, legacy code and the need to deliver good work in a timely manner.

If I had to start as a new developer again, I would still just do pet projects, not OSS. You can be very targeted in your demonstration of skill with a pet project intended to get you a job.


I can probably give the impression of a passionate developer because I'm self-taught and one of the things I like to do in my free time is write code.

Still clock out at 5, though, and you can be sure I'm not going to put work Slack on my personal phone. My time is my time.


I look to my art manager colleagues (I work in video games) with some envy, because their interview process is easier due to art candidates having portfolios.

We just don't have that in the software industry, at least not portfolios that we can legally share or that other employers would trust, so we end up essentially torturing each other with coding tests.

I don't think everyone having a portfolio of open source code is a reasonable ask, but the idea of portfolios, if we could create them, would bring some sanity to our industry's interview practices.


I have been a workaholic all my life and always worried sick about my job to the point of making my family feel neglected. We have all suffered together for years. I am good at what I do for a living, but I have been on tenterhooks all the time to see if my company will show me the door or close down, and now, since neither was ever the case in my roughly 20-year career, I don't know whether to laugh or cry! Currently, I am on a sabbatical to get things in perspective and mend my fences.


> I have a feeling that there's a silent majority of developers such as myself, that do enjoy programming and have a "passion" for it, but do not let this passion dissuade them from family time, or having more varied down time.

I think you're absolutely right. For me (he said, ironically, whilst responding to a post on Hacker News) it's just not that healthy to spend even more time sat in front of a computer programming away than I did at work.

As it happens nowadays I don't spend that much time at work programming so this does tend to make me more inclined to do so outside of work. But everything has to be in balance: I have family, I have friends, I have other interests. I need to spend time with family, with friends, and pursuing those other interests, otherwise I start to go nuts.

So no: I do not have a plethora of OSS contributions, nor will I ever have. My side projects aren't OSS and, at present, I have no intent to make them OSS. I'd need a motivation that I simply don't have in order to do that. Moreover my side projects are things that I find fun, that probably aren't very generally applicable, and that some would see as frivolous - but I deal with enough serious business at work.

In any case the thought of entitled internet randos getting in touch to demand free support because I've written an OSS library, module, or tool that's accidentally become somewhat popular and is now included in other modules and is used by corporations around the world who make tons of money in some tiny part off the back of using it is deeply unappealing.

Not that if you want to spend your free time on OSS there's anything wrong with it - far from it. If you love doing it then have at it and more power to you. But we need to dispense with the idea that this is for everyone any more than photography or collecting vinyl is for everyone.


> I wouldn't think of myself as a passionate developer. I have a family, I value my free time. I spend work time growing my skill set as it's required, anything else I do is rarely related.

Clearly you've never met devs that have no passion. They will actively refuse to learn new things and have absolutely no interest in doing so.

If you look at other professions, growing skills and staying up do date is supposed to be done during working hours and is budgeted for. A lot of 10x I've met were parents and had a pretty strict schedule. Whatever time they had in the office was 100% dedicated to shipping results or growing and they had to be efficient at it because there was no way they would spend less time with their families.


I’ve applied to hundreds of jobs and I can count on one hand the number of times my GitHub was looked at.


"As you start to ponder the implied ethos, the stranger it gets. Would you like engineers to be passionate as they design new bridges? Would you like a surgeon to be passionate as she operates on you? Would you like judges to be passionate as they pass sentence on your friend?"

I'm not sure what exactly he means by passionate, but I do know a surgeon who spends time reading and lecturing about the history of surgery. I'm sure there are judges who take pride in understanding more than just how to do their current jobs too. And for a fact you will run into engineers, both the traditional and software kinds, who care to get some context related to their professions. I also spent a fair bit of time when I got a trading job reading up on how the market had evolved. Does that qualify as passion?

Now, there's of course a difference between demonstrating that you care about the larger context of your work, and doing work for free. I think the only place where we associate passion with no money tends to be the arts, the common trope being that person who acts or paints but needs a job to pay the bills. Then clearly they aren't doing it for the money.

But of course you can do something for money while also caring deeply about it.

Overall he's right though, you should never let someone talk you into a position where you need to demonstrate that you want to work for free. If you are in the village play because you like it, and that play somehow ends up on Netflix and makes a gazillion dollars, you should get a sensible piece of it. Likewise if someone is proposing you help with some software that might end up being worth a lot, you should get a piece.


I had a similar reaction when comparing software engineering to other professions. My brother is a lawyer, and he has to do continuing legal education (https://en.wikipedia.org/wiki/Continuing_legal_education). I have friends who are doctors that go to (and sometimes speak at) conferences. I'm not sure that we software engineers need to spend all our free time on leetcode and answering StackOverflow questions, but reading a book about something outside of normal work hours seems like pretty tame stakes.


I thought the same thing about that quote. He is mixing up events with these two professions.

Nobody wants an engineer who is passionate while they are literally writing code, screaming at the computer and flailing his hands[1]. Much in the same way we wouldn't want a judge to be passionate when he's handing down a sentence.

But a judge should care about our laws, our constitution, and be opinionated about them. I want a surgeon who understands how the practice of surgery is evolving and stays up to date on best practices. I want a bridge builder to get ABSOLUTELY passionate about the type of materials used on a bridge and not settle for anything less. Similarly I think the best software engineers care deeply and are knowledgable about the craft of software engnineering.

[1] Well, I've had a coworker who did this and it was actually really comical and we were all entertained, but he was the exception that proved the rule.


I've seen a doctor who didn't seem to care, as well as one that did. One just tried to throw prescriptions at any problems I took to him, and the other one was more interested in root causes and the sum picture of my overall health. I definitely want the passionate one there, all other things about their knowledge and potential competence being equal.


I do like when teams will ask for side projects (if I have them) or OSS projects. Software has an inherent bias towards people from prestigious schools (but especially CS programs) and enforces that bias via heavy algorithm testing that is otherwise mostly not needed in software. Not to say it's never needed, but the 90% use case does not involve knowing how to do binary search by hand. As I built my knowledge around algorithms to adhere to certain software engineers biases, being able to sub that in for actual work was pivotal to my career. It's surprising to see people outright excluding that as an option in the interviewing process.

As my career has gone on longer and I've overcame the algorithm bias, my OSS contributions mostly dissipated. I do continue to work on side projects to learn but I continually encourage businesses to promote learning during work time. Bringing back read only Friday is a great way to do this and generally maintain velocity.

I don't have any data for you, just my experiences.


>Software has an inherent bias towards people from prestigious schools and enforces that bias via heavy algorithm testing that is otherwise mostly not needed in software.

Can't any school teach the same algorithms material? It's not exactly secret. Algorithms interviews seem more like surreptitious IQ tests than anything else.


Good question. I'm a drop out (a byproduct of paying for school while working in 2009) and it's been difficult to put my life on pause to go back. College grads get the luxury of having seen algorithms before and being taught how to negotiate and identify them in school with a fair amount of practice. I'm sure everyone studies for interviews, but for someone like me that study also often coincides with learning something for the first time. The industry now has a term for people like me, which is people from "non-traditional backgrounds". Many systems engineers, QA engineers, frontend engineers, etc will often be placed in this category.


Then it's closer to "CS program vs anything else," moreso than "prestigious schools vs anything else." There are plenty of non-prestigious schools in the world, more of them than there are Stanfords, in fact.


Yeap, I think that wording is probably more accurate.


I think prestigious school is all about contacts and networking rather than actual knowledge. Sure they are expected to have great quality teaching. The thing is - if company is looking for people from prestigious universities, chances are the owners also are and they just seek for people they know and are familiar with. This could also be the other way - owners are coming from poor background and this way they want to feel superior over people who had what they always dreamed about but couldn't get. Either way I stay away from such companies. In my experience there was always something toxic about them.


Any school can teach the same algorithms material, but not every school allocates or requires comparable amount of time and effort to that material. Some schols will just point you at the material and test if you rememeber the basics, and some schools will outright flunk you unless you practice until you can write correct implementations of all that material quickly with your eyes closed.


And both methods are bad.

Whiteboard tests aren't inherently bad, but the sorts of algorithm questions that are asked at some interviews are absurd and do practically nothing to determine whether the candidate would be a good employee. 95% of being a programmer is plumbing data together, and it's pretty rare that there is a need to develop more complex algorithms for things - as long as someone knows the concepts of time and space complexity and isn't going to make huge O(n!) operations, it's much more important IMO to be interviewing for communication skills, system architecture, network, and security knowledge.

There's obviously exceptions to this if you're hiring for a role that specifically is writing very algorithmic code to solve a hard science or graphics problem but that's very much the edge case and even if it is the case, domain knowledge will be more important.


Any school can teach it but most people still need to do lots of practice to reliably get through interviews. That’s not taught, and it’s something that students from average schools don’t even know they’re missing until they start looking for a job. Remember that the average student still believes that just getting a CS degree is enough to get employed.


I'm betting on this article being controversial here somewhat. The point on OSS is hilariously true though. Like, everyone does realize that the tech giants just found a way to make the community work for them and to make money off the backs of it right? OSS is great for almost everyone, don't get me wrong, but in whole, the largest tech companies in the world have gotten an entire community to test, fix, and develop software for them at zero dollars. Small devs can make some use of it, but the gains mostly go to FB, Google, MS, and more. Those OSS contributors who believe their work is bettering the community based on the (entirely moral good) concept of Free and OSS who have had their house gaslit against them do not get paid for their work that the large companies gain from.

I almost feel like that for-profit companies of a certain scale should be charged a reasonable licence to use OSS software and that money should be re-distributed. I know there is GitHub Sponsorships but now that MS runs that, well, there went that. Large companies are parasites that have zombified OSS with cute "X <3s OSS" icons and marketing.

Beyond that, the bit on passion being a weakness is incredibly important. I have been mulling that over the last few years in America. Extreme political movements tend to cater to a popular passion that they can then bend to their will (such as religion) that they then try to tie their movement to it. (E.g. "You are not a [religion/passion here] if you support [political opponent here]", even when the usurper's agenda is not clearly aligned to the religion.)


> Like, everyone does realize that the tech giants just found a way to make the community work for them and to make money off the backs of it right?

Virtually every tech startup or company makes use of open source at every level. We all benefit.

There’s no need to be cynical because big companies are also benefiting.


No company I've worked for would be able to exist without free software. Literally everything I've ever done professionally has been Linux, nginx, Postgres, frameworks, etc.

On several occasions, I've found a bug and suggested that I spend time going to the framework source or whatever to fix it. I have never been allowed to do it, we've always just worked around it. There has been no concept of giving back.

I suppose Facebook et al are probably better in that respect.


Big companies have their own gravity.

The world for sure didn't need Go, yet we got it, and it's gaining mindshare versus stuff like C/C++/Python/Perl/PHP/Ruby/OCaml/... (I'm not including Java and C# as those are also enterprise languages).

Angular, React, same story.

Sometimes it's good, but with stuff like Dart you can definitely feel thatsome Googlers are bored and desperately want to own their language instead of contributing to a pre-existing language.

Reason vs OCaml, etc. there are a ton of examples.

Basically big companies can afford to throw a ton of money into their own open source projects, basically depriving true community open source projects of the attention/oxygen they need.

There are pluses and minuses to this... But we should definitely start pushing back when the open source project is a clear open source "land grab" (for example to me Dart definitely falls into this category).


It's not that they make use of open source. It's that some have the gall to expect developers to contribute to open source in their own time, rather than working on their own projects or contributing to open source on the company's dime (the last one being, by far, the best option for humanity as a whole in a vacuum).

Though the main problem is in companies expecting too much from their employees (see: "looking for starter with 5 years of experience in framework X Y Z, language A B C and preferably knows devops front to back"), it is somewhat naïve to expect a passive force can only be beneficial to everyone while the majority power is still in hands of employers and employees are too decentralized and unorganized to fight it.


I don't expect my employees or candidates to contribute to open source, but the curve of those who do is shifted to the right in my opinion over those who don't. (It's the practical part of why I fight for HR policies to allow continued contributions to open-source, even unrelated to work: because otherwise I close myself off to that subset of the population, in addition to my philosophical stance of 'what you do outside of work is none of my business'.)

It's in much the same way if I were recruiting for an auto mechanic for a repair shop, a body shop, or a race team: someone who had their own custom car is probably a better bet for me than someone who is otherwise identical on paper but drives a stock Toyota Camry. I'll absolutely hire the qualified driver of the Camry, but I'll prefer the driver of the '65 Candy Apple Red Mustang that they restored and painted in their garage.


The point I'm making is that large companies benefit on a scale much much larger than others. Facebook isn't just gaining from OSS because they can use other's repos, they are gaining because they can have others fix and build their own repos. The Gameplan is to gain from the community, not contribute. Sure, React is nice and fine for the community, great framework...but the intent is not to help the community in the first place.


As far as I know the goal of free software was never "free for those who pull their weight by contributing." It simply meant free to run, change, and distribute, without any obligations except that the right for others to do the same had to be preserved.


> The point I'm making is that large companies benefit on a scale much much larger than others.

They do benefit immensely, but no by having "others fix and build" their own repos. You're overestimating the source code contributions and underestimating the cost to manage a hugely popular project.

> The Gameplan is to gain from the community, not contribute.

This is just silly. The """gameplan""" is to contribute and AND grow a community, which benefits everyone. Does it benefit more the company than the community as a whole? Maybe, but that's petty reasoning.


I don't necessarily agree with "The Gameplan". Yet the inverse, the idea that the majority of companies in a position to contribute to the communities they utilize, is just as much something I have yet to see. If anything, the overwhelming attitude I see in companies is "this is our secret sauce, and we don't want to let go of it because a competitor might use it and one-up us", while making liberal use of e.g. open source Unix distros and open source libraries. Confidentially clauses.

Even many companies who do eventually release parts of their secret sauce (e.g. Google, Facebook) first secure their financial and tech positions before they do so. In other words, when they do release their secret sauce, the good will they get far outweighs the risk of a competitor improving on top of their secret sauce and getting a significant chunk of their market.


> In other words, when they do release their secret sauce, the good will they get far outweighs the risk of a competitor improving on top of their secret sauce and getting a significant chunk of their market.

Which is completely understandable? I can't see how things would be different and I'm still pretty satisfied with the outcome of releasing "the secret sauce" after it is a bit more stable instead of going through a turbulent development (looking at you, Angular).


There is little difference. The vast majority of programmers are workers without any kind of ownership, but still expected to volunteer unpaid time to open source projects for career advancement.


I'm skeptical that OSS actually provides that much free work for big companies. If you look at React for example, 25 out of the top 30 contributors are FB employees. The other 5 might have been as well, I just couldn't tell. If, for some reason, no one outside FB contributed to React, I doubt it would affect FB at all. The few commits that come externally would just be written in house.

I think looking at other corporate run project (VSCode, Kubernetes etc.) will tell a similar story: the vast majority of the code will be written by the employees of the company owning the project in the first place.

You could argue that companies are getting free bug reports, but users are probably reporting bugs because they find value in the tool, and would like it to be better, so it's hardly parasitic there either.


You picked a bag example, look for a project that isn't owned by a big company but still used by them, like OpenSSL


Yeah I struggle to find the words but I lost interest in hacking on stuff because it's mostly just corporate stuff. Like any major project, it's for businesses. I think user/people focused computing use is mostly solved. None of this stuff is for making regular people's lives better, it's for making businesses run.


> Like, everyone does realize that the tech giants just found a way to make the community work for them and to make money off the backs of it right?

People are starting to realize this, but to understand it it's important to disambiguate "free" and "open source" software.

See https://www.boringcactus.com/2020/08/13/post-open-source.htm... for one perspective.


I kind of wonder about the opposite. Back in the 90's when open source really took off, open source projects were useful things like Linux, MySQL and GCC: open alternatives to commercial software. Now that open source has become "important", though, we see more and more things like Spring and Angular: idiotic useless "frameworks" that seem to exist solely for the sake of existing and padding resumes.


Spring was released 19 years ago. MySQL was released 26 years ago. It's not such a big difference as you're claiming, especially since MySQL really took off around version 4 or so.

I'm not sure you can put Spring in the same category with Angular, plus Spring definitely filled (fills?) a niche that's useful: pre-built components for Java, especially for enterprise development.


Spring framework is "useless"? It's used by well-known companies like Netflix and LinkedIn as well as by a lot of Fortune 500 companies.


The thing is, bulk of OSS development is paid by big companies. Based ok FOSS developpers survey, we can safely say that majority of OSS developers are paid for that work. And a lot of those money goes from bif companies.

Practically, these are not in free time weekend projects. Tech people are really invested in mythology of it all being done for free or mythology of everyone having side project on top of work. Neither is reality.


>I almost feel like that companies of a certain scale should be charged a licence to use OSS software and that money should be re-distributed As far as I'm concerned, FANNG companies (plus MS ) ought to treated differently than other companies. As they are quasi gov-entities getting subsidies from government contracts and use security market to leverage money. I mean Windows is still using the FreeBSD network stack for all these years.


Then get paid for the work. I just don't want licenses that pretend to be OSS or Free software when they are not.


As an engineer in the US who's worked at three very different companies, I haven't seen any of the things that this article is complaining about. While most applications had a space to link your GitHub account, I've never had the sense that a company expected me to have open-source contributions. My co-workers don't do open-source work in their free time, or if they do they don't talk about it.

The author also claims that employers don't invest in training and expect us to do it on our own time. Every employer I've had has been thrilled when I used my paid hours to study and master technology relevant to the job. Although it's true that I've never really had much formal "training", no one ever told me to stop learning stuff and just do my job.

I'm sure I've been very fortunate, but I'm curious why my experience differs so much from the author's.


From the US as well (Austin specifically) and I think there are some grains of truth in what the author describes, but it's not clear whether the author's viewpoint is influenced by the developers that requested paid mentorship or if it's entirely his own.

I've seen what he mentions in regards to self-improvement. Management under a large engineering company I was previously at would encourage self-learning and improvement, but disregarded it the moment deadlines became a concern or if you requested resources for it (e.g budget for tech conferences). They had a lot of long-time employees who were content with mediocre salaries (due to family, complacency, poor marketability/atrophied skills, etc.), so they literally had no incentive to invest in meaningful training for employees.

In regards to the focus on open-source contributions that he claims, I've found that the credibility and clout that comes with being a prolific contributor really only matter online. It most definitely helps you get your resume in the door, but you're still expected to whiteboard some bullshit like everyone else when it comes to interviews. I'd imagine that the majority of applicants have zero open source contributions and that the companies not only expect but are also okay with that. That was the definitely the experience I had back when I had did interviewing for my team at least.

Of course, it could be possible that what he's describing is more of a trend going on in Europe or Denmark than the US. But I think he has some hits and some misses with his takes.


Same experience for me, when interviewing if the candidate is a new grad and has a nice GitHub profile and I can actually look at the code it's great (otherwise what I am hiring on?), but I never passed anyone for not having GitHub contributions.

Likewise, unless I just stop doing my job and flat out refuse to do my tasks I never had issues with learning new technologies on the job. If anything I got congratulated for showing initiative in exploring ways to better our current stack.


I was at one of the first "DevOps Days" conferences in Hamburg where we sat in a huge circle and everyone had to introduce themselves and say what they are "passionate" about. Although I am a little bit more interested in the craft than an average 9to5 programmer I couldn't bring myself to use that phrase and could only articulate what I am "interested in". I am not a native English speaker so maybe my feelings around the meaning of "passion" are distorted but I didn't get how you could be passionate about continuous integration.


Oh, your understanding of what "passionate" means in English is perfect.

"Passionate" has nothing to do with taking satisfaction in performing an interesting job well and being fairly compensated for your efforts and having some appreciation for the opportunities you are given.

It has everything to do with feeling such strong emotions about something that you make decisions guided by emotion rather than logic.

Although I suspect the never ending abuse of the word will eventually change the meaning to actually mean "moderately enthusiastic about and interested in".

Sort of like how in English "awesome" has been degraded from "that inspires both fear and wonder that I do not normally experience" to "that pleases me somewhat".


Passion refers to a level of intensity, desire, or obsession. It frequently is used to talk about romantic love but can refer to other things. You were probably right to use the word 'interested' over 'passionate', but if there is a some one who is staying up late working on and thinking about continuous integration then they could say they were passionate about it. There has probably been at least a couple dry technical topics that made you feel passionate in the same way some one could be passionate about CI. I wouldn't call being passionate about something to be typical though so its a pretty weird question to ask a circle of people.


I dont think this person understands passion. When you do something out of passion, it doesnt burn you out. It doesnt feel like work, because you enjoy it. By definition, you cant burn out by pursuing your passion.

I am passionate about software development - I enjoy it and while I have experienced burnout before, its never been from software development, only from all of the other things that have to do with business. I want to hire passionate developers not because they are "easier to exploit" but because passion helps you be better at what you do - if you can program for hours and not feel burnt out because you enjoy it, youre likley to program a lot and gain a lot of technical expertise. Passionate people are more likley to be happy with their jobs, and happiness can be contageious - it contributes to a positive office environment. I dont expect anyone to ever work more than 40 hours a week regardless of passion - in fact I discourage it, and even encourage working less than that if you can still get things done doing so. Passionate people don't get "rewarded with a pat on the back" as the writer claims - they get rewarded by having done something they enjoyed and being happy. Huge difference.

It sounds like this person isn't passionate, and is trying to make up for it by mischaracterizing passionate people and attacking them. This seems dumb, jelous, and mean. I agree that passion shouldnt be a requirement to be employed in a field - after all, lots of people arent passionate about anything and still have to make money. Fortunatley, from fist hand experience, it is obviously not neccisary to be passionate about software to have a career in it. We already live in the world this person wants. I agree that this is how it should be. I dont see the point of trying to go after people who value passion or try to form work groups where thats a sought after trait, them doing so doesnt make things worse for anyone else.


I have to take issue with the notion that doing a thing out of passion will not burn you out: it is possible to overdo a thing - out of passion - to the extent it does burn you out.

Speaking from personal experience....

Recovery is easier/faster than in the non-passion case, but it still happens.

As to being dispassionate, when I take such an approach, even to the passionate thing, I have greater endurance and tolerance for moments of frustration.

Seems to me that protects from overdoing it too.


I think we're using the word passion differently. I have certainly gone through periods of time when I have completley lost interest in programming - for a variety or reasons, possibly involving working too much. But, I'd say that in these circumstances I have lost my passion for programming (and was fortunate to get it back later).

My point is more that there really are people who contribute to OSS and whatnot for no reason other than that they felt good doing so. I think this is a behavior to be encouraged and celebrated. I agree with the author's point that we shouldnt encourage extra suffering-inducing work for the sake of it, but disagree with his take that all acts of extra-curricular work cause suffering in those that do it.


Well said! There is rereading in my near future....


Words do have different meanings depending on context and a host of facts, and you are entitled to have some interpretation of the word passion but in its most literal and original sense, passion means to act in suffering. That is, you act out of such a desire towards something that you suffer and sacrifice yourself in the process, ie. The Passion of Jesus.

It also has a romantic sense to it, for example you are passionately in love if you suffer for that love and would sacrifice yourself for it. You are passionate about something if you're willing to die for it. That is, your feelings about something are so intense that you are willing to endure suffering and pain for it. A programmer is passionate if they devote themselves to it to the point that they end up sacrificing other parts of their life in the process.

I am passionate about programming in that sense, for better or worse, and have knowingly sacrificed a great deal in pursuit of this skill and have lost out in many other areas of my life because of it. I am not ashamed to admit it anymore than a Medical Doctor is ashamed to admit that they must also sacrifice a great deal of their life to pursue their career path, doctors are also passionate about their career.

It would be hard to claim that you are passionate about something without admitting to sacrificing or risking something in pursuit of that passion or feeling pain about it such as burning out or struggling to the point of feeling exhausted, even depressed in some cases. It does not mean doing something out of fun or joy or leisure, it means doing something in spite of the pain often because you believe in it so strongly that you put aside feelings of joy.

That said, there are certainly very competent developers who are incredibly productive and aren't passionate about it, and as you said it may even be the case that people who do programming for fun end up being productive because it's fun for them and that helps keep them motivated. That's amazing and I admire such people... but that's not being passionate in its most common usage, passion kind of has a fairly common meaning and the author is using it appropriately.


I have honestly never thought of the word passion in those terms. To me, it has always been an intensley positive word with connotations of love and wellbeing - but I can see how someone could go through life with your definition and have every instance of the word passion make sense, but mean something different than it means to me, and also simultaneously make sense to me.


> If you're tired of working with legacy code without tests, most of your suggestions for improvements will be met by a shrug. We don't have time for that now. It's more important to deliver value to the customer.

This is what bothers me the most. Whether it's about tests or something else. Even clean slate "let's get everything right this time" projects degenerate into legacy code within weeks with this mindset. The "It's more important to deliver value to the customer" line is especially insulting, since it's not as if the developers are trying to sabotage the delivery of value by writing tests or sanitising input or whatever the conflict is about. We know that high quality code is faster and cheaper to build than low quality software, but it's counter-intuitive to most managers.

And you need sympathetic managers to get the software right. Business rules are rarely clear, orthogonal or consistent. Which is not actually a problem for humans, but until we have artificial general intelligence, it is an insurmountable one for computers. But unsympathetic managers will not want to have long, uncomfortable conversations about deducing what they actually need from what they think they want. So developers are instead forced turn messy rules into messy code as best as they can, and put out fires whenever they break out, which they will all the time.

And perhaps the most insidious thing of all, spending all the time putting out fires means they don't get real world experience they need to build a robust system on time. If managers let them try once it would just make them look incompetent. And if they quit, their experience putting out fires will be worth nothing to companies who actually value proper workmanship. Their only option would be to join another death march company.

I think this the biggest reason why most software, especially enterprise software, is so bad, and isn't likely to improve in the foreseeable future.


I have seen this be the fault of developers as much or more than management - even for that "let's get everything right this time" sort of project, devs who interpret that as "let's build a beautiful intricate machine that does exactly what we want it to today" are fare more common than devs who build something that will be able to evolve for tomorrow's needs. Management rarely is involved or interfering there, when a dev or dev team decides to abstract over messy rules to make something "clean" - but in the process just encodes the messiness deeper, and in a harder-to-change way.

A dev who's also focused on "how can I deliver value to the customer" is really the only person who can make the right choices there, because the code has to be designed to make sure future valuable changes can be made, vs designed for a specific "snapshot" of specs.

And yeah, it often becomes a cycle, where management doesn't trust devs to build systems that won't suck, because devs haven't shown they can build systems that won't suck, because they're constantly just fighting the old systems that suck instead of having good training/experience building ones that don't... but I can't put that on non-technical management. We don't want non-technical management trying to tell us how to build a system, we just have to get better at it ourselves. You can do that by working on a bunch of broken systems, but you have to be thoughtful about it, and reflect on what you learn, and not just be distracted by "ooh, new shiny framework will make this better!"


> I have seen this be the fault of developers as much or more than management - even for that "let's get everything right this time" sort of project, devs who interpret that as "let's build a beautiful intricate machine that does exactly what we want it to today" are fare more common than devs who build something that will be able to evolve for tomorrow's needs.

Yes, but more due to inexperience than anything else. Projects tend to start out under-abstracted because modelling takes time, and they were told time to market was the #1 priority. So the natural reaction when that approach breaks down is to dust off the old design classes from school and create an all-encompassing model of everything in the business. Of course in the safe confines of college assignments they never got to experience what a pain that really is.

> Management rarely is involved or interfering there, when a dev or dev team decides to abstract over messy rules to make something "clean" - but in the process just encodes the messiness deeper, and in a harder-to-change way.

That exact lack of involvement is a big part of the problem. The idea of chucking PowerPoint mock-ups for CRUD screens over the fence and telling the devs not to worry their pretty little heads with any domain knowledge. I think Eric Evans has the solution to this problem with Domain Driven Design, but DDD requires a huge commitment on both sides to meet in the middle, sit down and work it all out. But neither have the time for it the way businesses are currently run.


I believe there's a way out of this and I've seen at least one successful attempt - it's having regular group practice/rehearsals/drills/wargames or, to put it in a more familiar term - internal projects.

On one hand developers get to scratch their "ooh new shiny" itch, on the other management doesn't risk any deadline from people trying new ideas when there's no time for that.

Unfortunately few employers are willing to go this route due to the associated cost.


I like the article overall but I'm not sold on the passion ethos section as it was written.

The author hints that they wouldn't want a surgeon who is passionate because they should be making rational decisions.

But IMO passion isn't all about making an on the spot emotional decision without thinking things through. It's about their willingness to continue learning and advancing their craft because they have the motivation and passion to do so without getting burnt out. They do it because deep down it's truly what they love doing.

So in the surgeon example, would you rather want the surgeon who clocks in and out for the day and that's it while doing the bare minimum to keep their license? Or the surgeon who puts in similar hours but also decides to speak at conferences / universities afterwards and is keeping up with everything while evolving their practice? Perhaps they do more work (surgeries), but not putting in more hours. Maybe they specialize in 1 thing and then just crank that out continuously to become an expert in their field.

If given the choice I'd go for the more passionate surgeon every time.


I hear what you are saying, but in fairness to the author of the article, he did say he would like people to care about their vocation.

Also, I'd rather have a surgeon who was skilled, cared about his profession, and also was not burned out from overexertion trying to be "passionate" about his job.

I think the medical field in general (not unlike the software development field in general) often undervalues people's time outside of work. It's fair to say that some fields require more investment from those that work in them, but in every field there is a point when investing even more of your time and effort is counter-productive.


> from overexertion trying to be "passionate" about his job.

This phrasing captures the issue exactly, imo. The split is between someone who is "trying" to be "passionate" about their work, versus someone for whom that's just an apt description.

It seems like the discussions around "passion" tend to ignore that distinction. I think the problem could be alternately framed in terms of intrinsic/extrinsic motivation without losing much. The passionate developer is a proxy for someone intrinsically motivated by the act of constructing software, vs. extrinsic motivation, which would be something like salary.

So if someone is trying to be "passionate" about their work, that will not convert them from extrinsic motivation to intrinsic (in most cases!), so of course it's seen as empty.

The surgeon question can be restated in these terms too: prefer a surgeon who's driven by saving lives and refining their expertise in this particular mode of doing it, or a surgeon driven by salary?

(Of course this is a simplified/extremal statement of the problem, and a false dichotomy if taken literally: basically everyone is somewhere between those two poles.)


One issue is indeed when people are trying to project the whole "I'm realy into this whole software development thing!" vibe. Genuine excitement about something can almost always be differentiated from this, in my experience.

But the issue I'm more concerned about is this idea that you have to live, breathe, drink, eat, sleep software development 24 hours a day, or you are a lesser developer than someone else who does. There are obviously different levels of investment people are willing and/or capable to commit to a job in this field, and yes some people are better at it than others. However, I think many in our profession are being pushed to invest too much of their lives into career-centric tasks, and as a result will end up being less effective as developers than they could be. I think this is perhaps even more dangerous than being lazy, and not keeping your skills relatively current.

Having a good balance in life is the way to avoid burnout. It is way too easy to leave your family and/or friends in the wake. There are infinitely more things to learn, and you can't do it all. These are choices I personally struggle with, as I'm sure many others here do.

It doesn't help that almost all of the job listings are asking for people "passionate about X" (where X can be almost anything related to development), or looking for "a Rockstar Y developer", or some other such buzzword-laden description. It seems to me, that there is a way to describe people who want to do high quality work, who care about their results, but at the same time have a life outside of work. However, although I see some job listings where the writers appear to be trying, a lot of them leave me thinking "no need to apply there, I just want a job doing a lot of things that I am good at and enjoy most of the time. I don't want to join a cult."


Meh, the surgeon obsessed with self promotion and status seeking might not be the best one as they may be more focused on themselves than the task at hand.


> Meh, the surgeon obsessed with self promotion and status seeking might not be the best one as they may be more focused on themselves than the task at hand.

The ones I've talked with are more interested in the implementation details, changing lives for the better and sharing what they've learned so everyone as a whole can rise.

Their practices are also wildly successful without content promotion and no to very little social media presence. These are the folks doing 750+ surgeries a year while being surrounded by relevant cases all the time. Basically total immersion in their field and then openly sharing everything with their colleagues.


It does not mean everyone is like that. I was in care of one of world renown specialists in their field and I was just a case to them. They were more interested in documenting what I am going through in their journals than finding out how to help. At least this is how I felt about it. It may look great for an outsider, as they write papers, speak at conferences, show their findings, but somehow the human element is lost in all that.


I know people who are exceptional developers and they don't do it as a hobby, because they have other hobbies more important to them. They have tasks at work that are fulfilling enough and carrying it home or making it more than it is would probably burn them out. It's not like if you are a surgeon, then it is the only thing in your life.


> the surgeon who puts in similar hours but also decides to speak at conferences / universities afterwards and is keeping up with everything while evolving their practice

In the medical field, it's common to get CME (continuing medical education) time and dollars allocated specifically for this purpose.


> Most people don't heed advice given for free, but if they pay dearly for it, they tend to pay attention.

100% this. I've seen consultants get paid $250 an hour to simply listen to what the team is saying and regurgitate that to management. But it's more trusted than their own employees because the consultant is "independent".


I thought I could use this to my advantage and game the system. I convinced management we needed to hire a prestigious consultant to get us out of the tight spot we were in. They were absolutely ecstatic about this great visionary I had brought in and all the genius insights he had (which was predictably just what the team had been saying for moths).

But it still came back to bite me in the end. When the consultant was paid and gone, there was suddenly no time anymore to act on any of the advice. It was all back to to the perpetual "just make this one simple feature" cycle, but the most insulting thing was hearing a twisted version of the consultant's advice used as ammunition against the team, questioning its competence.


> the most insulting thing was hearing a twisted version of the consultant's advice used as ammunition against the team, questioning its competence.

That's the advantage of having an expert that is no longer there. You can make him agree with whatever you want.

Once there was an expert invited to solve a problem at a company I worked for. Towards the end of his short visit, we met in a kitchen and talked for a while. I asked him what he thought about the problem we had, and he told me his opinion. After he left, there was a meeting where the managers told us what the expert thought. It was almost the opposite of what he told me. Was he telling different conclusions to different people? Or were the managers just lying? No way to find out, of course.


Working in the industry kills one's passion. It did for me.


Pretty much. At this point it's just a paycheck, and such an easy (large) one that I can't possibly justify bothering to find any other line of work. Even if doing something else would make me happier, ultimately work is just work and optimizing for the least effort/highest reward is really the only criteria for it IMO. It leaves more room to find your meaning and passion in life outside of what you have to do to pay the bills.


Mine is frustrating and not a large paycheck at all. I was just browsing job posting this morning, but it's depressing. There's nothing interesting out there that pays more, and my skill set is not really in demand.


I can usually find interesting stuff, but nothing I’d ever be qualified for. Can’t speak to what most of it pays, but if I had to guess: more than I’m making now, less than I could be making theoretically.


This area is mostly boring business CRUD. I have the qualification problem too. Nobody wants to train, and nobody needs FileNet or Neoxam resources.


Ah yeah, generally I look at jobs all over the place. It’s still relatively rare to see something I’d qualify as “interesting” but I do see them. Typically when I do find them they require significant professional experience within the respective domain. The worst possible example I can think of are any jobs dealing with scientific software where it’s made clear they want scientists who can program a little not programmers who know a bit of science.


I'm constrained to my location because my wife won't consider relocating.


Try something different. A more popular tech, a more popular stack, a slight twist in what you use them for, etc.


I recently switched to a team with a newer stack. It doesn't give me the chance to get good because they have me constantly switching between stacks or doing no-code tasks.


This is true of most things, I've noticed.

My neighbor is an amazing carpenter. He makes beautiful furniture from exotic pieces of wood he's had for 10 years just waiting to be used on that perfect project. I told him he could make a fortune selling things like what he's got in his living room, but he just shrugged and said it would take away all the fun. He's right.


This reminds me of the parable of the Mexican fisherman and the Harvard MBA:

'An American investment banker was at the pier of a small coastal Mexican village when a small boat with just one fisherman docked. Inside the small boat were several large yellowfin tuna. The American complimented the Mexican on the quality of his fish and asked how long it took to catch them.

The Mexican replied, “only a little while.”

The American then asked why didn’t he stay out longer and catch more fish?

The Mexican said he had enough to support his family’s immediate needs.

The American then asked, “but what do you do with the rest of your time?”

The Mexican fisherman said, “I sleep late, fish a little, play with my children, take siestas with my wife, Maria, and stroll into the village each evening where I sip wine, and play guitar with my amigos. I have a full and busy life.”

The American scoffed. “I have an MBA from Harvard, and can help you,” he said. “You should spend more time fishing, and with the proceeds, buy a bigger boat. With the proceeds from the bigger boat, you could buy several boats, and eventually you would have a fleet of fishing boats. Instead of selling your catch to a middle-man, you could sell directly to the processor, eventually opening up your own cannery. You could control the product, processing, and distribution,” he said. “Of course, you would need to leave this small coastal fishing village and move to Mexico City, then Los Angeles, and eventually to New York City, where you will run your expanding enterprise.”

The Mexican fisherman asked, “But, how long will this all take?”

To which the American replied, “Oh, 15 to 20 years or so.”

“But what then?” asked the Mexican.

The American laughed and said, “That’s the best part. When the time was right, you would announce an IPO, and sell your company stock to the public and become very rich. You would make millions!”

“Millions – then what?”

The American said, “Then you could retire. Move to a small coastal fishing village where you could sleep late, fish a little, play with your kids, take siestas with your wife, and stroll to the village in the evenings where you could sip wine and play guitar with your amigos.”'


Yes. I build wooden boats. A neighbor is seemingly obsessed with the notion that I could start a business selling them. And I can think of no faster or more effective way to ruin boat-building for me.


I believe it's the need to be reliable that takes out the fun.


Yeah, I use to make Android apps. Now I don't see the point.


That wasn't my point. You have to make a living, and in that regard fun is a nice-to-have. My point was even things people do for hobbies often become toilsome once they are your business.

My neighbor has a job unrelated to carpentry, and woodworking is his hobby. He doesn't want to ruin it.


And I'm saying that I made Android apps as a hobby and now that I work as a dev, I don't see any point to continuing as a hobby.


If you still want to code as a hobby you could do "programming" opposed to "software engineering" as someone in this thread has pointed out. Personally I could see making web apps with a Web 1.0 design as a fun project although probably I would still structure projects "professionally" :)

I get that it's not much fun to code apps (which I did for fun, too) because you need to do some kind of marketing to get a user base because if you don't it's not much fun to have an orphaned app in a store.

There's still a place for fringe programming if you feel the urge. Or go fishing or do gardening.


Agreed. It's kind of assembly-line development now for me. Design by committee, break up tasks into tickets, estimate how long it'll take, sprint, sprint, sprint until done, monitor releases, add more tickets, and continue ad infinitum.


You make it sound so smooth


At some point in your career, I think you realize that you have to separate yourself and your passion from your work, especially if you are working for someone else[1]. There needs to be a clear delineation between what you believe is the right thing from a "passionate developer" standpoint and what is appropriate for a business. Often, what is appropriate for a business, and your survival in said business, is to go along with what the business wants to do, even if it's not what is ideal. If you don't, I think you'll always be at odds with something and will probably get burnt out trying to fight political battles. There are battles here and there worth fighting, of course, but you have to be okay with non-ideal solutions.

To me, that has been a challenge over my career and I've finally come to terms with it and I find my mood has improved quite a bit in the workplace as a result, albeit with a small death of my youthful idealism. However, now I try to use my passion in side projects, not to improve my CV, but just for fun. Interestingly enough, even idealism doesn't always work out there.

[1] I suppose it's possible to maintain your passion in the workplace and keep pushing ahead and doing even bigger and bigger things within a business (leveling up in the process, I'm sure), but I think to do so requires a lot of strength and endurance that a lot of us just don't have.


It's been a while since I've applied for a new job, but when I was, they might have asked about OSS contributions, but I don't think they really cared. It was just a way to better judge my ability.

Likewise, when we interview people, we ask if they have a github repo or other portfolio, but it's about their code, not about OSS. I don't care if it's private code or OSS, so long as I can use it to judge their skill level.

And if they don't have anything like that, it's not a mark against them... It's just harder to be confident in their ability.

We do a short test, but any test that actually tests their abilities would be too time-consuming (and thus expense) to give to more than a handful or candidates that we were already pretty sure of.


>As you start to ponder the implied ethos, the stranger it gets. Would you like engineers to be passionate as they design new bridges? Would you like a surgeon to be passionate as she operates on you? Would you like judges to be passionate as they pass sentence on your friend?

The answer is yes. In terms of engineers and passion, I would bet that an engineer who is passionate about designing bridges would be one that would have studied past designs and failures of bridges in great detail, be up on the latest benefits and issues in material science, who was aware of special considerations for weather or location. I would also bet that engineer would be able to design a better bridge than one that was just doing it purely because it paid money.

As for surgeons and passion, when I was in neurosurgery, the best surgeons I knew were passionate about their work. They were constantly reading the latest journals, attending conferences, going to courses to hone and refine their skill. They were also constantly evaluating themselves to see if they could do things better. Then there were others who were just coasting on what they knew worked in the past. I would rather go to a passionate surgeon any day.

As for judges, I would like a judge who is passionate about the law and justice. I want a judge who not only knows what the current law says, but who has researched and knows how it came to be, the various precedents and circumstances that law has been applied. I want one who has contributed review articles to law journals, versus a judge who quickly does a Google or Lexis-Nexus search about the law to supplement their knowledge from 15 years ago in law school before they render their judgement.


There's "passion" and there's "professionalism". I would categorise many of the activities you mention under the latter. Passion isn't the only reason to try to be good at what you do and get ahead. Pride, ambition, a sense of responsibility, etc. are all good reasons too, and it's easier to associate them with surgeons and judges. "Passion" is just a bit of a weird word to use when it comes to such work, maybe because it's often associated with creative endeavours.


If a company is looking for an open source work in the candidate CV it means they want to know if that person is keen on providing work for free. It means that the candidate shouldn't have problems staying over time without pay because it is his or hers passion.

There is a distinction between passion and exploitation. You can be passionate without having to give away your labour for free. Big corporations want people to work on open source because it saves them R&D money. Some projects take years to develop and that costs millions had the companies had to pay salaries and taxes, but instead they can just appropriate the project once it is mature enough, pat the developers on the back and then make billions off of it without sharing a penny.

You can be passionate and develop your own business, own projects without having to share them and saving corporations money.

To level the playing field big corporations should be required to pay royalties to open source contributors.


> If a company is looking for an open source work in the candidate CV it means they want to know if that person is keen on providing work for free. It means that the candidate shouldn't have problems staying over time without pay because it is his or hers passion.

I think this would honestly be a bad assumption to make. The people I've worked with that did the most amount of work on their own time have typically not done any OSS work.. because they were working on work stuff all the time. Those that dabbled in (non work related) OSS stuff often were able to do so because they had clearer boundaries between work/personal work.


This post makes some good points. But I think there's another extreme we need to be careful to avoid. In a world full of workers who are emotionally and morally disengaged, just doing what they're told for a paycheck, there's plenty of room for exploitation of a different kind.

Perhaps the best model for software development is a small company with a few cofounders who are passionate about what they're working on, who charge a fair price for their software, and who work smarter in every possible way (yes, including making full use of open source) to minimize the amount of hiring they have to do. When they do hire, they treat their employees fairly and don't expect too much of them.

But then when I'm presented with, say, a security questionnaire, I wonder if developing software that meets today's standards is inevitably the sole domain of big companies. (I suspect many other developers feel the same way about my own pet cause, accessibility.)


> In a world full of workers who are emotionally and morally disengaged, just doing what they're told for a paycheck

I don't this is true of software. I live on the West Coast and SWEs are by far some of the most vocal and aggressive voices in a crowd. They seem highly engaged and constantly channeling emotion for what they want. That said, it's a recent trend. When I came into software the attitudes were much more laid back. I'd prefer a return to this.


>"...Would you like a cool job in tech? Show me your open-source portfolio."

I do not know what constitutes "cool job" but I've been developing for longer than many lived and not once was I asked about my open source contributions. When I do work for clients it is nearly always to design and create a product. I have a "portfolio" of such products with appropriate references and this is what I show to clients and it seems to work very well.

Also working on product makes me interested way more in the design / inventive aspects. Programming itself is just a tool for me to express my ideas. This makes me a "dispassionate programmer". I can appreciate good tools / languages /tech / etc that make me complete the task easier but once more - they're just tools.

Last thing. I do not have any "open source" contributions. I am not proud of it but do not feel guilty either.


The flip-side of this is a lot of open source software is written for its own end. I've learned to be very careful about assuming something is a good package just because it seems to have nice looking docs and a bit of popularity. You will often find something with a TOOOON of different features and switches, but upon closer inspection it turns out all of it is subpar. And I don't mean it in a perfectionist sense, just bad in a way that it's unlikely it has ever been used and iterated on in production. When hiring one should be careful not to foster this kind of culture inhouse.


regarding the OSS points: The only reason that Google, Fb, etc can freeload off of OSS is that we abandoned going for viral licenses (ie AGPLv3)

The big corps simply will not use such OSS because they would have to also make their code open.

More wide adoption of these licenses would encourage a more healthy relationship between corps and OSS devs.

It's easy to imagine that in a world where essential low level software and useful libraries are AGPLed, the current big corps would probably not be as big as they are today. Instead more transparent organizations with more sustainable business models would gain a real advantage.


You should not forget that they open sourced a massive amount of code themselves.


I have passion for programming. I do software engineering just for the money.


Last year, I wrote about the prisoner's dilemma of training your employees[0]. As Mark points out, many companies don't invest because they don't find it valuable. What I tried to point out was that big tech companies already _are_ investing heavily in their talent, and especially as these companies start pulling in less experienced people to train up, companies that don't invest are going to fall behind.

I don't know how convincing that argument is, but hopefully realizing how much investment the big tech companies are putting into their talent is eye-opening for some people.

(Note: I talked about investing in junior employees, but the idea applies to all your employees.)

[0] https://hiringfor.tech/2020/09/07/the-prisoners-dilemma-of-t...


I used to be someone who did programming outside of work, but I don't have time with a kid, and further I don't really want to spend time fixing anything electronic any longer. I just use a console for gaming, my computer sits unused and I only use my work pc for work, so I barely even go on the internet.

Parenthood takes a lot of time, and I fear I'll never be able to find a new job because i don't have time to jump through interview hoops.

I'll certainly never work at Google or wherever, because they interview for so long and have so many requirements that it's impossible for me to even think about applying. The tech interview process is openly hostile to parents.


> ... employers want employees who are passionate about their craft.

> ... I'd like such people to care about their vocation, but I'd prefer that they keep a cool head and make as rational decisions as possible.

> Why should programmers be passionate?

While I agree with the gist of the article, the author should realize that "passionate" as used in this context is effectively synonymous with "cares", and is only used because the word "care" has lost most of its impact over time, being mostly associated with the phrase "doesn't care". This is common linguistic phenomenon.


> the author should realize that "passionate" as used in this context is effectively synonymous with "cares"

I think that largely depends on who is using the word. Personally, I'm sick of seeing the word "passionate" thrown around in job listings. It comes off as "we really need to use this buzzword", and 90% of the time feels disingenuous.

Much of the time I end up interpreting it as "someone who is willing to work a lot of uncompensated extra hours". I say this as a person who very much cares about their craft, and wants to do excellent work as much as it is within my power to do so. I also do spend a lot of my free time learning new things related to my profession.

I'm not saying everyone who uses that word is intending to take advantage of their future employees desire to excel. It just seems like most of the times I see it, the job listing ends up being one that I'm less likely to be interested in.


100% this. I don’t expect you to go crazy over programming, but the gulf between passionate programmers and just-collect-the-paycheck programmers is extreme. Just-collect-the-paycheck programmers are useful and necessary, but a team composed exclusively of uncaring engineers is pretty much doomed to fail.

Lightbulbs are flashing for me right now because I’ve never really thought about it like this, despite caring a lot about passion.

In the teams I’ve been on that have over-performed (aka released quality software on schedule), there was always at least one or two (sometimes the majority) engineers who actually cared. Cared enough to push back when we tried to skimp on standards compliance. Cared enough to upstream a fix to a library we use. Cared enough to notice patterns in problems we had and write internal articles about how to avoid those problems.

I’ve also been on teams of (primarily European, as the author points out, the culture is very different) engineers who really are just collecting a paycheck. As long as they keep working, it’s really not a big deal if the product ships on time, or a year late. It doesn’t really matter if the product meets customer needs well, because we know they will buy it anyway. It doesn’t really matter if your colleague knows enough to get their work done. And if I see a new problem the team encounters, I’m certainly not going to learn anything to solve it, or assist a colleague who does; job descriptions are there for a reason.

I guess a good test is the “job description” test. Does an engineer ever say “that’s not in my job description” and refuse to do needed work (note this is very different than pointing out there would be someone better equipped to do it, if that is the case) to the detriment of the team? Does an engineer not bristle when someone else brings up “the job description”? If so, that’s a pretty sure sign that they don’t care about their work, which means they don’t care about your team’s success.


> a team composed exclusively of uncaring engineers is pretty much doomed to fail

Yes, but not because of the lack of passionate programmers, but because most software companies are dysfunctional. A few passionate souls can make a project succeed in spite of all the underlying dysfunction, but it's cruel of the industry to continue leaning on those people.

Teams of uncaring developers would consistently deliver working software on time and on budget if they were both trained in the same level of skill and given the same level of respect that let uncaring civil engineers build stable bridges on time and on budget. And I would certainly hate living in a society where the only thing between me and a smoking hole at the bottom of a gorge is one passionate civil engineer.


Whenever this topic comes up, there's this sort of assumption that passion must be impractical, but I actually find that the "best" people are ones that find a way to be passionately engaged in things that happen to deliver a lot of financial value to themselves and others.

I would say that I am passionate about solving problems with technology - I was coding since GWBASIC on a Soviet 286 when I was 8 years old. I am in product now and I still get fired up about solving problems for my users and clients.

But...

I was also able to channel this passion into lucrative fields. If you asked me 2 decades ago if my passion is derivatives trading software, I'd say no. But turns out this field gave me plenty of space to be creative, enthusiastic, and engaged while giving me and my family a good life. And also I can connect my work to important things (eg: helping asset managers generate good returns for pension funds)

To be honest, I'd hesitate to hire someone who is just all about open source, because if they don't care (that much) about financial impact of their work on their own life, I can't rely on them to care about the financial impact of their software on my company's success either, and I guess it just feels like impractical/unpragmatic decision making.


> For reasons that are complicated and that I don't fully understand, the software development community in the eighties and nineties developed a culture of anti-capitalism and liberal values that put technology on a pedestal for its own sake. Open source good; commercial software bad. Free software good; commercial software bad.

I think a lot of techies believe there is massive untapped potential in information technology, and to some degree that the commercialism occludes humanity from gaining a fair, reasonable, and developing perspective on how computation and communication happens in the modern world.

We see the world not as being well served by the software and services about, but as being made helpless, as suffering real pain, and never being given the chance to understand or grapple with issues we encounter. The current system is not a fair shake, and does not permit the formation of human will. Computing technology is too amazing, humans have too much awesome potential, to be bounded by such a finite fixed tragic end, as all this. It's long been time to stop playing with shadows on the wall, & embarking on a more honest means to make accessible the tiniest yet most amazing empowering bicycle-of-the-mind creation of our era is a journey we feel deeply moved to start upon.


Quite a few years ago, I was approached by my then-employer who asked me if I programmed in my spare time outside of work, and I said I did. He said, "great, I have this outside software that I sell, and I'd like somebody to work on it outside of work hours, but I don't want to pay you to work on it." He was disappointed to learn that I wasn't as "passionate" as he had hoped.


Glad to hear that they're an ex-employer. I 100% believe that conversation happened, but I 0% understand why people think that would be remotely reasonable for you to agree.


> Some open-source maintainers have created crucial software that runs everywhere. Companies make millions off that free software, while maintainers are often left with an increasing support burden and no money.

Pretty much this.

See also: https://www.wired.com/story/open-source-coders-few-tired/


> The development manager immediately shot down that idea: "If we do that, they'll leave us once they have the certification."

This one is so common, it's a staple. Very few places I have worked will pay for certs because after that the employee is worth more so there's no budget for the cert + the requisite pay bump that having such a cert deserves.

I don't know how to fix it, but I wish one day I can convince other people that training is the path to unlocking better teams versus just more headcount. The salary for one senior dev can be split 5 ways into an existing team and given enough knowledge can make you more than having an extra dev.

I read Bullshit Jobs and realized why this might be the issue... reports are a sign of power, the more you have, the more power you have, so in order to advance your career, you must be willing to sacrifice the place you work at by hiring more and more people under you.


I was a dispassionate, disenfranchised, dejected and defeated developer.

Then I quit.

Now I'm happy.


Same here, my last day will be on May 7th! Let the happiness ensue! I have around 45 years of living expenses saved up, so it will be a REALLY long time till I need a job again.


>employers want employees who are passionate about their craft

Do they really? I feel that my employers have all preferred employees who prioritize business needs, smooth functioning of the corporate hierarchy, "doing what everyone else is doing", and writing code for the common denominator more than they prioritize personal feelings about code quality and about what technological decisions are correct. I feel that my employers would all have preferred a steady, dispassionate 9-5 corporate type over a passionate employee who burns the midnight oil. The midnight oil burner, they probably would think, is likely to be a "cowboy coder". He might be a loose cannon.

Not that any of this is surprising. Of course employers prefer employees who prioritize making the company money more highly than they prioritize passion about their craft.


This article doesn't align with my experience of what I've observed.

> I don't think that it's in our interest to be passionate, but it is in employers' interest

Meh, I'm into some technologies just cause they fascinate me. Benefits employers, but benefits me too cause I get paid to pursue my passion.

> Not only are passionate people expected to work for free, they're also easier to manipulate

Passionate ppl in the Spark world make tons of money and strike me as geniuses that'd be hard to manipulate.

> Some open-source maintainers have created crucial software that runs everywhere

Yes

> Companies make millions off that free software, while maintainers are often left with an increasing support burden and no money

Maybe some. Spark creators went on to build a successful company (Databricks) that'll be going public soon. Companies seem to be throwing money at top open source devs in the data world.


> You're expected to 'contribute' to open source software. Why? Because employers want employees who are passionate about their craft.

Like others have mentioned, I don't really see this in the industry. That said, I think it's less a quest for the 'passionate' developer and more a quest for a good employee who can contribute to the task at hand.

Companies don't want 'passion' they want someone who will work hard on their product and be a great return on investment for the company. How do you measure that? That's hard. Detecting it in a 1-4 hour interview is also hard. Or, they can take the easy way out, generalize, and look for markers of that behavior, such as working an open source project 'job' in addition to their daily job.


We need to find better business models for FLOSS software.


It's a thought-provoking article, but contains several serious contractions in terms.

> For reasons that are complicated and that I don't fully understand, the software development community in the eighties and nineties developed a culture of anti-capitalism and liberal values that put technology on a pedestal for its own sake.

Liberalism is by definition pro-capitalism. It's not pro-capitalism in the libertarian sense of "free markets", of course, but it's not like Silicon Valley doesn't have its right-libertarians, too. I think this analysis has it exactly backward. I find the position proposed in The Californian Ideology much more compelling: The culture Mark is talking about was a fusion of market liberalism, countercultural signifiers, and techno-utopianism.

> The idea of free software, for example, has led to a software economy where you, the user, are no longer the customer, but the product.

This is almost exactly what the notion of "free software" was invented to oppose. "Freedom" in software isn't supposed to be about price, but about liberty. Free software can absolutely cost money, but if it starts treating its users like products, it is by definition no longer free software. Of course, this is exactly why "open source" became so popular...

> The idea of open source, too, seems largely defunct as a means of 'sticking it to the man'.

Open source was never about "sticking it to the man". Open source is a defanged version of free software, where the only freedom left is the one which hurts the man the least when exercised.

Post-Open Source by Melody Horn is also recommended reading here.


A friend of mine had the saying "Innovation is for the product not the employees." When a talking about a former place of work mentality. I use it in my cover letter when I explain why I choose to apply to X company by stating that they don't fit this mold.

Same during interviews, when asked if I have contributed to open source library, I answer not at at work and that I don't program that much on my free time. It may not serve me well but it is the last bastion of honesty that the hiring process allows me. Besides that you are still just selling yourself to whoever take interest in your case.


I'm shamelessly passionate about software development, but I don't project it being a big part of my life forever and ever.

For example with covid, I have fewer other possible hobbies so doubling down in this specific interest is both fun, and a sound investment.

And also age/trajectory matters. I'm at year 10 of my journey, probably around year 20 I'll have completely different priorities in my life.


> What can you do, then, if you want to stand out from the crowd? How do you advance your software development career?

I'm sure there are other ways, but one sure way that I have personally used and been fairly successful. Understand your boss and make your boss look good. If you don't understand your boss by year 2, it's time to move on.


> The idea of free software, for example, has led to a software economy where you, the user, are no longer the customer, but the product.

No it hasn't, unless the author is conflating free software with free beer. Free software, if anything, leads to the opposite: empowering users to take stronger ownership over the programs they use.


I'm going to follow the author's line of reasoning. Please tell me what I'm missing:

1. For reasons that are complicated and that I don't fully understand, Americans smile at each other.

2. Ad agencies show pictures of humans smiling at each other in order to exploit humans into buying products they don't need.

3. Americans should stop smiling.


It's a fallacy to claim that developers are hired substantially on the basis of their open-source portfolios. This is very rare IME.

It's also somewhat of a fallacy to claim that open-source software is the domain of hobbyists. A lot of open-source software nowadays is produced by paid programmers as part of their day jobs.


I feel like these articles gloss over the fact coding, vlogging, etc. in our free time isn't always about "advancing the craft" and "career advancement".

People like painting, baking, brewing beer, playing music or sports... and also coding. For free.


It's interesting to read blogs, they almost universally make these leaps of faith that x implies y without noticing that they do it and spend the rest of the time operating on these faith-based assumptions.

Let me give a couple of examples from this blog:

Software devs had anti-capitalist values -> free software -> unintended consequences -> customer is the product

Do you see where the leap of faith occurred? The last arrow. If you're young and you don't know, when app stores on mobile phones started and apps got built, most of them weren't free. When facebook got started, it was free, but it had nothing to do with anti-capitalist values, etc.

Another example:

employers want people who are passionate -> do open source to prove your passion

Where's the leap of faith? The initial premise. Let me give another example that'll perhaps illustrate: when women get polled about what they look for in a man, they say: sense of humor.

Does anyone take that seriously? No, right? We know people are full of shit and say one thing and mean another? Well, not people who write blogs or comment on twitter a lot of the time!

So much of blogging and twittering, is taking false premises or helping start new ones (first example). Guys/gals, I can forgive people who have never heard of A implies B in their lives. You have, please check that A = true and A actually implies B, every step of the way.

Apply mental-tests to your own thinking - it's great that you get software to compile, please get your view of the world to compile to a level a random stranger on the internet can't tear apart within 10 seconds.


Not sure why you got the downvotes. The article in its entirety is a grand non sequitur. Observations. Rambling. "I don't know. Be dispassionate."


As usual, lightly downvoted comments on HN usually have more value than comments which get upvoted. The community has poor choices about how it votes here.


This writer clearly doesn't understand the Free Software movement.

" For reasons that are complicated and that I don't fully understand, the software development community in the eighties and nineties developed a culture of anti-capitalism and liberal values that put technology on a pedestal for its own sake. Open source good; commercial software bad. Free software good; commercial software bad.

I'm not entirely unsympathetic to such ideas, but it's seems clear, now, that these ideas have had unintended consequences. The idea of free software, for example, has led to a software economy where you, the user, are no longer the customer, but the product. "

Free software is free as in freedom, not free as in you don't have to pay for it. If Google & co followed the ideals of free software, all of their source code for their servers would be available to the public, and indivuduals would be free to spin up and run their own google that doesn't use ads.

This writer has no idea what he is talking about, its not worth reading this post.


Developer this developer that. Fact is there are many other technical jobs that do not require full time programming a github repo. Always will be. Someone has to fix the crap you guys code.


I've taken pay cuts to work with people I consider good mentors over the years. I don't see it as any kind of a detraction.


My #1 I take with this post is that Free ≠ Open.

Software need to be open! If it was meant to be free it would be called Freesource not Opoensource.


I've read through some of the comments here, and more of you need to quit your jobs.


> Open source good; commercial software bad. Free software good; commercial software bad.

I don't get it, is he being facetious or am I missing the point in some other way? To anyone in tech those are obviously orthogonal concepts. There is commercial FOSS, commercial proprietary software, non-commercial FOSS, non-commercial proprietary software.

And if you think commercial software is the problem, as some communist hard-liners that I've talked to, the only logical conclusion is to do as they did, vehemently oppose FOSS licenses since you're not allowed to restrict commercial use of it.

Of course the F camp emphasise the personal values while the OS camp emphasise the commercial opportunities. But I don't think RMS was trying to "stick it to the man", he was just trying to print some listings. And big businesses like Microsoft have sensibly come to the same conclusion, that sometimes it's nice to have that same freedom.

> The idea of free software, for example, has led to a software economy where you, the user, are no longer the customer, but the product.

I don't see how it has led to that at all. It's just different, not as polished, but if you have the know-how you can fix things. You gain some, you lose some.


I read "commercial" as "proprietary."


Mark is awesome.


He seems like a nice guy but I find that book on Dependency Injection a bit tedious.


> For reasons that are complicated and that I don't fully understand, the software development community in the eighties and nineties developed a culture of anti-capitalism

This goes back to an earlier age of software, in the 1960s and 1970s, when much more software was being shared, among research groups and labs in Academia and industry, as it had not been commoditized and commercialized as such. As this gradually changed, it also motivated an embattled, somewhat-delayed, backlash in the form of the Free Software movement.

> and liberal values

Problematic term, because it means very different things historically vs. in current political discourse in the US.

> The idea of free software, for example, has led to a software economy where you, the user, are no longer the customer, but the product.

The author accepts as granted the foundational assumptions that:

* Users are customers, basically and originally.

* Software is a commodity, to be sold (as a product or service).

* Users are fundamentally disjoint from developers, and these groups of people interact through commercial entities.

Proponents of Free Software with an anti-Capitalist perspective would be to differ.

> The idea of open source, too, seems largely defunct as a means of 'sticking it to the man'.

While commercial corporations co-opt FOSS as much as they can, it has still, and is still, sticking it to the man: Billions of people, given only access to a computer, can now enjoy a huge variety of software to meet their needs and interests, without having to pay for it. A salaried software developer, sitting in some tech-rich organization, may fail to appreciate what a tremendous achievement this is. And there's the no less important ability to partake in development, and to build on the existing software with something new - which is much less accessible than plain use, but infinitely more accessible than with commercial closed-source software.

> You're expected to 'contribute' to open source software. Why? Because employers want employees who are passionate about their craft.

I don't know what employers expect. But we, i.e. users and developers of FOSS, need your help to add features and fix bugs and write docs and file bugs, for the software we use or want.

> Would you like engineers to be passionate as they design new bridges?

I hope they could be. This is less likely the less in touch they are with the people and groups who need their bridge; and the more alienated they are from their work in general.

> passionate... I'd prefer that they keep a cool head and make as rational decisions as possible.

This is a false dichotomy. The dispassionate programmer is more often than not the disinterested programmer; the "I just work here" programmer; the programmer who is writing software to meet arbitrary goals set by far-away managers, not to have the tool they need or to help their friends and colleagues.

> This was back in my Microsoft days, so I suggested that they institute a training programme for the employees. To give it structure, they could, for example, study for some Microsoft certifications.

Ah... well, indeed, living in the Micorosft certified-whatever world will likely take care of your excessive passion problems.

> If I teach you something that improves your productivity, your employer benefits, too. I think that your employer should pay for that.

This, I agree with. But instead of "being dispassionate", I suggest we be _unionized_! Make those companies pay for this kind of professional development and meandering exploration of new knowledge and skills.

(And also remember that a lot of, or most of, FOSS isn't necessarily what you do in your day job anyway.)


Not seeing why employers are to blame. Developers are the ones that decided their work is worthless.


There's a feedback effect where those developers get hired and then become the hiring managers (employers). So the line between developer and employer is gray enough for some blame to lie on both sides.


> their work is worthless

So, I'm old enough to remember a time before widespread open source and even before the world-wide-web itself. I was paid to work on whatever my employer thought they could sell, but not necessarily what I was interested in learning more about. When Linux came out, for example, I thought that going through it and maybe even working on it would be a great way to learn more about operating systems in a way that I would never get a chance to do professionally. Being curious about something isn't necessarily declaring it "worthless".

That said, I agree with the author that it's scummy to demand it of employees (although I've never seen that myself).


Totally agree about "The passion ethos" - nothing gets up my nose more people who claim to be passionate about things that it really isn't possible or sensible to be, and who don't seem to know the meaning of the word, but just use it because it is expected of them, or they think it is.


The more people use it this way, the broader the acceptance of that usage becomes, the more often you will encounter people who will apply the argument you provided to your usage of the word.

- yours sincerely, the descriptivists of this world




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

Search: