A lot of comments are bringing up top athletes as a counterexample, which leads me to believe they don't understand what a high-level training regimen is actually like. I have a relatively unique persepective on this[1], so I thought I'd clarify a few things.
Any sport is both mentally and physically exhausting, and it only gets more strenuous as you reach the higher levels. Nobody can keep this up all day, every day, for their entire working life; people who try flame out early and don't make it much of anywhere.
Instead, the goal of the top players is to train as much as possible today without sacrificing their ability to continue training tomorrow. Usually, this is less time than an office job requires (but more strenuous). The rest of their time is spent in "recovery," which basically means whatever they want to do as long as it's not too taxing.
The defining feature isn't spending their entire life on the sport, it's giving it priority: the rest of their life is scheduled around their training needs instead of scheduling training around their life.
[1] I've been on sabbatical for two months at a tennis academy; some of the kids here will undoubtedly make it all the way to the pro circuit.
If comparing to athletes, Cirque du Soleil performers are a great analogy. I've read interviews where they say that while they do practice daily, and it is work, it is far less intense than the physical preparation for competitive athletics. They do what they do very well, but their goal is simply to do the job. They are not trying to be the best in the world at anything as individuals... just working as a team to produce a product that is world-class.
Coding is the same - you do not need to be the best in the world. You do not need to be famous for your open source projects. You do need to be competent, and put in the work, with a good team, and focus not on yourself, but on your product.
It is such a daunting read, but goodness is it worth it.
I'm having a bit of difficulty getting into other books after having read it because the writing style itself spoiled me so much. It's the first book that I wanted to start over literally the same day I finished it.
I think that there are more weak points where sports analogy breaks - sports is generally about preparing for competition and competition is not a daily event.
If we continue with this analogy this would mean that the developers should be training for a while before hitting a day (or week) of an actual work, but we are actually expected to treat every day as a competition day. Another point is, that the training varies over the period with every practice having a different goal - some are harder, some are easier and there is a great emphasis on rest and not over-training. And finally, sports are frequently cyclic, based around seasons - with competition and non-competition seasons. Competition seasons are about getting to a top performance so you can hit these N competition with all you can, while non-competition ones are all about resting and getting your sanity back.
So, while there are some parallels, I don't think this is a great analogy. I don't think getting top performance day after day is possible on regular basis, but, unfortunately, some people are certainly expecting it.
> I think that there are more weak points where sports analogy breaks - sports is generally about preparing for competition and competition is not a daily event.
It truly depends on the sport. On one extreme you have sports like marathon or Olympic lifting, which require elaborate cycles of months of training designed to deliver peak performance on an exact date.
But then on the other extreme you have sports like baseball, for which the season is half the year long and has players playing games almost every day. So there competition is a daily event, and the analogy to programming is more apt.
I started five things a few years back and have had great results:
- I set up an email filter where if I'm not on the TO line, it skips my inbox for another folder. I only read that folder twice a day. If it's important, they'll write to me directly.
- I (almost) never accept a meeting with less than 2 hours notice. The exceptions are rare and far between.. and usually come down to a few legitimate emergencies. Poor planning is not an emergency.
- I never accept a meeting without an agenda. It doesn't need to be detailed but "I'd like to chat about X, Y, and Z" gives me the opportunity to prioritize, reject, or get you to someone more appropriate.
- I only answer my phone when I'm expecting a call. If you and I have a call planned, I will be there and respect your time by closing email, etc. If you're just calling me to catch up, I'll get back to you on my schedule.
- My phone & computer never enter the bedroom. You are welcome to email, slack, DM, etc me at 2am but you should assume I won't see it until the next morning.
Limit your distractions, take control of your time, and your work will become more effective and you'll feel better about what you accomplish.
I never normally take advice about email habits, but that simple filter is a good one. I already have ~100 filters that move things and mark-as-read useless things - and that works for me - but that one addition might well keep the inbox (which is basically my task list) cleaner.
I avoid useless meetings and "coordinating" with clueless people and focus on getting things done. It's a fine line though. If you totally ignore the outside there is a danger that you will miss the latest information that may impact your project. But with some practice you can filter out a lot of noise. It's good to have friends in your organization that keep you updated on the important trends. Also: When you are at work, really work.
I don't have the whole answer, but here are some things that you can practice regardless of what you're working on, and will make you a more valuable programmer if you get good at them:
- Getting the entire algorithm in your head before writing anything
- Predicting where the bugs will be in the code you've just written
- Shifting your attention back and forth between what this code is trying to achieve and the means by which it works
- Given the context in which your code will be used, predict how requirements might change in the future and structure your code so that those changes will require minimal refactoring
to apply maximum strenuous effort in less time my cofounder and i use pair programming on unsolved problems (not cookie cutter silicon valley baloney), to be able to pair and control technology stack we needed to start a company, to do this we needed money (alot) so i freelanced for two years at ever higher rates, to high rate freelance successfully you need portfolio proving skill so before that i refused to work for companies that don't keep up with open source, which means you need to have a nose for knowing what the best technology is/will be (and be right), to develop the nose i worked through a few books a year in free time and learned a new language every year and have taken multiple three month periods off to learn something deeply. Each of these offtime periods has ended with me having zero savings and the first time 10k credit card debt, but a 30% raise at next gig will erase that. My first offtime period was Recurse Center. TLDR carve out your own path and make your own luck. Look at your best software role model (Mine is probably Rich Hickey) - did he wait around for opportunity to come to him or did he go out and make something happen?
I'm presuming the difference is that they're kids at a tennis academy.
Someone is presumably paying good money for them to be there, and by the time they become professionals, they'll have spent XX years already in training, with someone else presumably working and funding their entire stay/attendance.
This then presumes that those kids who do actually make it to the pro circuit aren't then the ones that also have the advantages and put in extra above and beyond the other kids (and with a little bit of luck on top).
Now, I don't know what other people's life was like growing up. I mentioned in my other comments that conceivably there are some kids who had parents who both supply them with knowledge, fund their study, their lifestyle, gave them opportunities and access, and that such people might subsequently have greater abilities than myself, and maybe those people will become top notch coders even with some hobbies and time on the side.
But no one is paying to have me (or others) learn to code or update my skills. No one is paying to send me to a training camp or academy. I taught myself computers and I know many others did too. There was/were limited academies when I grew up, and there aren't any pros for us to learn from except ourselves now.
Many of us aren't paid to do our coding or our study, many workplaces or academies aren't even interested in that kind of coding or study.
And, of course we burn out. No shit.
But that doesn't mean that if you don't want to become top rate you don't have to put in more than a paltry 8 hour workday. Indeed, EVERY decent coder I've known has done it. Not a single one I know hasn't. I have not met any decent coder that hasn't been doing their own thing on their own time and that wasn't interesting and successful in teaching themselves in their own time.
The tennis kids have someone else to put in a workday so they can then spend hours per week at a leisure activity.
Unless we are very lucky, we spend our work/school day so we can ferret away the time and resources to focus on the stuff we actually value, and then that knowledge then gets transmitted back to the workplace...
> This then presumes that those kids who do actually make it to the pro circuit aren't then the ones that also have the advantages and put in extra above and beyond the other kids (and with a little bit of luck on top).
This was my point: the kids that figure out how to put in extra effort during scheduled training will rise above the rest; ones that try to train during scheduled rest periods start to fall behind because they're not getting enough rest.
This is what most people forget. 40 hours a week is a lot of time. There is this odd mindset where people waste most of the day, and then work late as if that's somehow the only way to get things done. Instead your much better off putting in a solid 8 at a company that does not waste time, and then going home to do other things.
If you end up in a job where you can't work for 35+ hours a week during normal business hours don't stay late, find a new job.
"But no one is paying to have me (or others) learn to code or update my skills. No one is paying to send me to a training camp or academy."
Many workplaces offer professional development budgets to attend conferences / training, many also offer reimbursement for continuing education. Additionally one of the smartest things you can do at your job is find promising tech that has applications at work. I've been getting paid to learn for almost my entire career, along with my coworkers, so this comment seemed really out of place with my experience anyways
> But no one is paying to have me (or others) learn to code or update my skills.
It's part of your job to be good at what you do. That does involve getting better at programming, updating your skills, keeping abreast of the newest frameworks, and learning new languages. So do it at work. If you're spending every hour of every week at work only working on the exact project in front of you, then you are doing both yourself and your employer a disservice, as you'll have lost the broad picture, and failed to solve many problems the easy way by applying a technique or tool that you could have been aware of, but weren't.
I have solved Project Euler-style questions at work and don't feel the slightest bit guilty about it. It'd be like yelling at a baseball player for practicing his throw.
It doesn't matter what is standard at most companies, you just do it. It'll work fine unless you have a taskmaster looking over your shoulder the entire time you're at work, or a micromanager who demands that you account for your time in hourly increments. And if those things are true then you should quite for reasons.
Most people who contribute to OS are on low income, unemployed or students. Top developers in banks and startups dont have time for that, or are forbidden by their company.
Being "top developer" is one of the most family friendly jobs that ever existed. You can work remotely at your own time. I quit cubicle and started working on opensource because I had family.
> you might develop a mental illness, like depression,
Many people in IT are a bit weird. Again its one of the most friendly jobs that exists. Developer does not even have to speak to people, all can be done via email.
> 20-year-old white guys with no responsibilities and/or with enough income to "buy" more free time
I'm from Romania, Europe. Don't know what a "top developer" is, but I'm not unemployed, I'm not a student, I have a wife and a son and I'm not low income, in fact being paid at least 4x the national average for software developers, my salary being on equal footing with the US, not the Bay Area mind you, but given the high cost of life there, my income is higher relative to where I live.
And I also contribute open source, a lot by my standards.
Yes my company allows open source because it is in our interest. We are contractors you see, open source bringing us visibility. I would say that open source is the reason for why I can have earnings higher than average, for one because my projects shine brighter than any resume (and I have a decent resume as well), because being able to show working code counts more than stories, but also because my work has transformed me from a full stack developer to one that is also specialized on more niche problems. Like I don't shine if you make me query MySQL, but I'm worth it if you make me handle problems of distributed systems.
But I'm not going to lie to you. It's freaking hard and it does end up eating into your family life, even though most open source I do is for helping at work and done during work hours when it's justifiable. I'm not able to sustain a constant pace. I can't do it without risking burnout. Hence I'm not one of those folks that commit every day. I can have entire months without contributions. But then when I do have contributions, shit gets serious, or in other words I finish was I start.
Also from Hungary, Budapest. Yes, those are monthly numbers. At BP you can rent a nice flat of 60-80 square meters for 420-500$. A beer is 2-3$ and on average you need 3-500$ to spend on casual things. It depends heavily on your lifestyle obviously, but I find it hard to spend a lot.
That site is great! I love the detailed breakdown. I'm envious of what fresh food cost you. Strange enough, the beer and rent are comparable to my area. Utilities cost significantly more there than here. Our Internet costs a bit more but I get 50Mbps down. Clothing and apparel is similarly expensive.
Yep! It angries me that I always have to fight for remote work, but it is not a problem for the teams down the corridor that just outsourced the work somewhere in this universe.
So true. In fact, it can be even worse managing an outsourcer style vendor, since the natural industry pressures lead to outsourcers being very incentivized to find the very minimum possible effort they can spend on a client project without losing the contract.
As a result, getting more effort out of an outsourcer may feel as annoying as getting your insurance company to approve your claim -- their entire company culture/process has evolved and/or been designed to prevent this.
By contrast, individual employees (remote or otherwise) might get lazy or burnt out or have personal problems or something, but few of them are actually Wally from Dilbert, using all their available effort to avoid having to make any effort
the outsourcee does not share the same values as the ourtsourcing company, therefore if you have any focus on long-term values such as quality then outsourcing does not work.
The outsourcee is always motivated to do the minimum work compared to an in-house team that can focus on quality and efficiency for the long term benefit.
They require a ton of product management, of course. They don't require career management (recruiting, hiring, getting them to show up engaged, etc), which is what I meant (but not at all what I said).
Very true, the thing is, companies go for developers with tons of OSS code and conferences both as speakers and attendees for two reasons:
First is the fact that you become a known quantity, OSS code is code that you have produced and that any prospective employer can look at and see its "quality". It also solidifies you as more of a domain expert which in turn allows you to get better wages.
Second, having employees with OSS contributions and speaking at conferences is good for the bottom line of employers, they can "gloat" more easily on how they have the "top talent" and are thought leaders of industry. This in turn allows them to charge their clients more and lets the find prospects easier.
It is a very small minority, but we're discussing "top developers", which is an even smaller minority. They shouldn't have problems finding remote jobs.
> Top developers in banks and startups dont have time for that
Sorry to disagree but I have spent my whole 15 year career as a developer at banks and many fortune 50/100 companies and I can tell you for certain that most developers in these extremely high paying corporate jobs, including the developers do rarely do any software development or practice outside of the office.
Keep in mind that most of these jobs require a decade or more of experience so most of these folks have wives, children, 4k sq. ft. homes with swimming pools and all of the collective responsibilities that go along with those things. Consequently, their managers are in the same position so it almost never expected that anyone regularly sacrifices their family life for work related activities outside of times when it's absolutely necessary.
Successful, established and non-software companies rarely ever implement bleeding edge technology. In fact most of these companies have EA departments that forbid the use of anything outside of the approved, vetted technology stack without a specific approved exception.
What I've seen in these teams is that there is little emphasis on learning new technology like what I see as the standard requirements in HN lately. Developers instead set themselves apart by (and are interviewed/hired for) consistently demonstrating exceptional/outstanding:
-problem solving
-critical thinking
-customer focused behavior
-core enginerring skills
-business domain/political accumen
-leadership and mentorship
Only a couple times have I reviewed an employee performance appraisal that contained management directives related to lack of software skills and I have reviewed thousands of them to date.
I have personally interviewed and hired hundreds of elite software engineers for salaries of well over six figures and I can guaranty you that the question of emerging technologies is only discussed if the candidate brings it up or specifically has it on their resume.
The recent stories about complex technical algorithmic interviews that I hear about on HN are nothing like most big corporations interviews. The good corporations hire good people knowing that skills change and can be trained.
As a mater of fact, I know several elite level software engineers at top US companies that if presented with the startup style interview process would either fail miserably or would be so completely insulted by the process and hubris that they would decline to proceed with the interview(then go across the street to a fortune 50 and easily collect 225k with benefits).
TL;DR: The majority of elite U.S. software development jobs are nothing like the working conditions often described on HN.
What are some of these companies? A common advice I've seen here and other sites is that the best workplace for developers will be at companies where the software is the main revenue product. It's assumed that if software dev is seen as just a pure cost and not the main revenue generator, then workplace for dev will be horrible due to lack of influence and status in the company.
The reasoning for this seems intuitive and correct. But I'm wondering if there's evidence it's wrong. What are these great companies for developers and are they software revenue companies? If not, what are the forces that maintain a good workplace for developers when software is not the main revenue?
I'm curious then, on what basis are new hires considered qualified? Not the ones moving horizontally from a similar company where employment itself in the prior company would denote ability, but those who are moving up in their career or from a different tech subspecialty? If a lot of the work is proprietary, you're not expecting FOSS contributions, and algorithmic tests are out, what metric do you use? Do you just match years experience with the stack? Educational attainment?
How do you think anyone got hired 10, 20, 30+ years ago in tech? How do you think candidates are evaluated in other fields that do not have some equivalent to FOSS?
I have a friend interviewing for a high-level marketing position. They look at your resume, ask you about your past work, give you some short tests or scenarios, and make a decision based on all the feedback the collect. It's not a perfect system but it's how the world works, basically.
Also, it helps to have friend in high places. It's often a matter of who you know.
Agree, 10 years ago they asked you about your projects, how you solved problems, what you think about the decisions that were made, to reason about the technologies and architecture etc.
I still think, you can learn much more from that than from trivia questions or text book examples.
If a person can argue about choice of technology/algorithm/architecture/method, can tell you how they approach a given problem etc...
My feeling is that the "shortage" is a lie. Back then there were no thousand competitors for every boring job out there. Weeding out so much wasn't necessary for 5 applications :)
Talk to the person. Let them describe what they have done previously. Ask how and why decisions have been made. What they would do better. If you know your stuff yourself it's not that hard to figure out if the applicant knows his or her stuff.
It's funny actually. I recently heard a GCHQ radio ad for a software development role. The entire pitch was the nature of work preventing it from being taken home and as a result enjoying family time.
It worked great for me with one kid, but with a baby and 2.5 year-old it's impossible. Sometimes caring for both together as one person is impossible (i.e. if both are ill).
My son was amazing, he slept 16 hours, giving me 5-6 hours during the day and 2-3 in the evenings to work. Working at the same time was great.
My daughter however sleeps very erratically alone, however she sleeps OK on a person. So you have a baby in your arms for 9 hours of the day and a toddler running around causing mayhem (and demanding attention).
So, yeah, if you're lucky then it works.
Those sleeps will stop though, with my son he was sleeping 4hrs / day up until he was 26 months. Which is about as long as I lasted having a work-at-home day :)
It's doable so long as everyone involved is bought in. We have a two and a bit year old and I work from home full time, with the odd visit to the office for planning sessions. The reason it works is that my wife treats me being in my study in much the same way she would me being in an office elsewhere, but with the perks of me being able to see her and our son when I come out to make some tea or have lunch, and without any commute time. If you don't have a space in the home which you can close the door on and call work being remote isn't going to last long.
It's not quite that simple - I work weekdays, my wife works Thursday, Friday, Saturday, with her Mum looking after our son on Thursday and Friday. On Saturdays I look after him.
Honestly I have no idea how anyone could expect to be able to work at the same time as looking after a two year old, I've done it once while my brother came over to entertain him, and even then it was just barely viable. Young children just don't understand the concept of someone being present in the room but not able to pay attention to them.
Reading jkot's comments in not sure who's disconnected from reality. I do love coming across people who think they are doing things right and normal, everyone must think the same as then. Such ignorance is always astonishing. I suppose I shouldn't be surprised.
And which part exactly is disconnected from reality?
Developers have it pretty well with family time even in 9-5 job.
My friend works on boat and is away from home 6 months every year. My other friend works is truck driver and is home on weekends, if he is lucky.
I did my math and I decided to value family time over income. Part of that was moving to cheaper area to reduce expenses and to be with grandparents. Finding remote work is quite easy if you made some tradeoffs.
I said article is disconnected from reality, because it does not handle basic math. Somehow it expects everything without any sacrifices or trade-offs. Part about not sacrificing your hobbies on top of job and family is best example.
And when that does not work, blame is on people who did not even started their own family yet.
Yes, in German we have a saying like "One kid is no kid". The increase from zero to one kid might feel like you mastered a big step (and it is!).. But a second kid is a total game changer. I am hard pressed to find some time for Netflix and a bit of guitar playing every once in a while. Do I want to exchange that for coding for some bigger cause? Nope.
Agree. When we had one kid, I started a business. Looking back, it was totally doable. When we had two kids, I was a solo freelancer, worked a ton, and don't remember any issues. The third one, though, we called him The Crusher. Even though he was as easy as the first two, all three constantly demanded attention, and we were outnumbered. There was no "relaxing with the baby". As they got older, the sheer logistics with school and multiple activities got ridiculous (let's say 3 children x 1 activity each x 2 days/wk (1 practice + 1 game) = 6 afternoons/evenings gone). Expenses suddenly got out of hand (preschool++).
Of course, wife & I always wanted three. I was not going to not have three kids, just so I could spend more time coding. I would never tell anyone who has < 3 kids that they have it easy, but this was a very interesting sub-topic of the OP.
Because it has the potential of reserving nearly all of your leisure time over months-years. Caring for a baby while a crazy 3 year old wants to play/eat/fight can be overwhelming compared to just one kid. There's also the organizational side - every step outside the door becomes an endeavour. Then there is housing - good luck with that 100 sq feet apartment (it could work with one kid, but impossible with two). Same with small cars - forget them with a 2nd kid.
There was a post here a few months(?) ago from a guy describing his life with his over ten kids. I'm pretty sure he doesn't spend x*2^10 hours per day on them ;)
While I respect that others may have a different opinion, I should add that in my experience the change from 0 to 1 was more profound than that from 1 to 2. Without kids life most likely entirely revolves around your needs, interests and priorities (if you are not a caregiver). The first kid turns that world upside down. The second kid to us mostly meant more of kid stuff. Yes, I agree that it is not a good way to think about having two kids as something that equals to twice having one kid. But a lot that comes with the second will be somewhat familiar, and practice will make you better at it, even though your second kid will probably be very different to your first.
My friend wrote in an email that "When we had our first, I thought a lot about what the hell we had done with all the free time we used to have on our hands. Since we had our second, I haven't had time to think." I should add that after having their third, he has barely found time to write emails to me a few times a year.
TLDR; step size between 0, 1, 2, etc. kids is subjective.
>> > 20-year-old white guys with no responsibilities and/or with enough income to "buy" more free time
> Good old racism and man hate is doing just fine.
This is a strange generalization indeed. Esp. considering that the post author maintains an active technical blog and speaks at events (I assume these activities take about the same amount of resources as hobby open source development).
PS I don't know a lot of open source developers in person, and just identify them by name, communication and the code. However, the ones I happened to talk with on broader topics, usually happen to be older than 20. Also, I'm not sure how, and, most importantly, why I would question about their responsibilities though...
"Most people who contribute to OS are on low income, unemployed or students. Top developers in banks and startups dont have time for that, or are forbidden by their company."
This is so incredibly false. Many Open-Source devs are top programmers with real lives. I find that the corporate world's so called experts are usually the disappointing ones. In the corporate world becoming a guru is more of a political game than anything. In the Open-Source world, it's "show me the code" or GTFO.
Some projects are pet projects. What people do when they want to polish their skills. Other people do it as a day job. Other people do it in combination with a paper... Then, companies might open source software if that software doesn't represent a competitive advantage. Other do it to improve their chances to be hired (github as resume)....
>> 20-year-old white guys with no responsibilities and/or with enough income to "buy" more free time
>Good old racism and man hate is doing just fine.
Allow me to point out that racism usually applies to people who are experiencing oppression because of not being white. This has to do with a society which has created structures and institutions that give white people privilege at the expense of everyone else.
Same goes for sexism.
Thus, white males live at the top of a pyramid of oppression, without seeing it.
Privilege is transparent for the privileged. It's like playing a game on easy and wondering why everyone else is complaining.
Well, other people are playing at different difficulty -- people of color on "hard" and "berserk" modes, women of color on "insanely hard." And they don't get to choose their level.
This is why, as a white male, I try to not get defensive and blame the ones who point out the existing institutionalized oppression in being "(reverse) racist" or "man-hating".
I was under impression that most of the OSS contributors are full time paid employees. Projects like gcc, llvm, linux kernel, etc. are all corporate work.
Lol wut? How us that racist? Or, how is that stopping 20 year old white guys from living their life? There's no system in place to crush young white males from doing what they want. But for women and other non binary genders and POC, yes, there is.
The tragedy is that the blog post, and the resulting commentary here, are about identity, when the heart of the topic the author is _really_ talking about (if you actually RTFA) is class/capital. This tragic misdirection is the defining problem of our time.
The people who are working, be it white collar "tech" employee or manufacturing/service worker are those either who are forced to do so because they will starve if they don't, or, in our industry (and perhaps social/medial work), the monastic types who write Free Software (or similar) because it is the morally correct thing to do. To say that it's because they are white or young or male (or even that this kind or service is a privilege and not a moral imperative) is the kind of misguided, thinly-veiled class erasure that the predominant strain of big-C Capitalism is currently benefiting from.
Don't let people stereotype you. If you want improve your standing in the labour market, ORGANIZE, don't stereotype. Neoliberal capitalists are taking advantage of young people and poor people. Don't let them! If we play our cards right, they won't for much longer anyway! But please keep in mind that this kind of "ingroup/outgroup" mentality is a divisive thought pattern that deliberately works to their advantage! It has become common and tedious for a deliberate reason!
Your heart is in the right place. All workplaces mistreat you. Blame your bosses, not your co-workers!
The irony of your communist commentary is not lost on me, you say we shouldn't in/out group while you're in/out grouping people in bosses vs workers.
I'm a worker and on my last position I was at an outsourcing firm that while pretending to care about its employees underpayed us while overcharging their clients, whenever we wanted to get a raise the goalposts of what was necessary were moved so it wasn't achievable and the overwork was masked behind a "we care about quality" attitude. Given all of this understandably we had a very high burn rate for devs.
I decided to grow up and begin to figure out how to do my own selling so I can charge what I want, work on the projects that I want and the hours that I want. I don't blame "Neoliberal capitalists" for my own failures, it's self-defeating and childish to not take control over your own destiny.
> Who can afford to keep coding after an 8-hour work day of coding? Who doesn't get harassed in the open-source community? 20-year-old white guys with no responsibilities
Yeah, stopped reading at this point. Your "intersectional social justice theory" is just casual sexism and racism to me.
The point is that the author should have elaborated on the circumstances that are required to be able to do that, rather than generalizing based on gender or race.
No, because the author specifically singled out a sex and a race in a sweeping generalization in negative context with no reasoning -- we cast her as sexist and racist.
But on the second part I agree - we do need more people like Wintamute in society.
Maybe racist by the dictionary definition (judging by skin color) but it holds no force against actually preventing a white male from doing anything. I as a white male can underachieve my way into anything while other genders and people of color must work much harder for the same.
That is the only definition that matters. Everything else is subjective, relative and open to abuse by bad people from all sides.
>"I as a white male can underachieve my way into anything while other genders and people of color must work much harder for the same."
Have you seen white people in poverty? They are no different than black people in poverty, and are just as needing of our help. To make a distinction and help one over the other is plain old racism according to the dictionary/textbook definition and has no place in an inclusive society.
> Have you seen white people in poverty? They are no different than black people in poverty, and are just as needing of our help.
I don't disagree that this is a huge problem but consider what it's like for someone trying to work their way out when they obviously, unavoidably don't fit in. The key point here is simply recognizing that different areas of discrimination have different impacts and they combine super-linearly.
If you're poor but white and male, once you get started on the skill ladder you'll be able to quickly adopt many of the other cultural trappings and start getting breaks, which are self-reinforcing.
In tech, say you go to a local OSS developers meetup. You're hiring and there's a bearded white guy with a messenger bag who sounds interested in ES6 — do you stop to quiz them about whether they grew up in Palo Alto or the more dismal parts of upstate NY before telling them to apply? The same process often goes down a different path if the person in question is female, latino, black, etc. and someone subconsciously wonders whether they're as qualified and that conversation doesn't happen at all if someone came to a meetup or two but felt out of place and decided not to keep attending. That kind of thing happening a couple of times early in someone's career can have a massive impact on their lifetime trajectory and because so much of it is subconscious it can happen even if everyone involved would have chosen otherwise if asked.
In much of the business world, someone from a poor white background has to watch their accent and learn to wear a suit, etc. An African-American can do the same thing but will also have to deal with being confused for lower-level staff or even the security guard, caterer, etc. Sure, someone motivated can rise above that but simply having to think about it, or spend time ensuring that you're always bringing your A game to your attire, social negotiation, etc. is a distraction from the actual business that some people are fortunate enough not to have to deal with.
As in OP, the follow up comments to your comment only care about minorities and reject any consideration of white people in poverty past a fleeting acknowledgement. This is then implicitly justifies the OP's sweeping, slanderous statement that serious contributions only happen if the person is upper-class, white, and male. Which is what set our side of this tangent off to begin with. The amount of comments by liberals against our counterclaims vs OP's slander is quite telling: they don't care about whites or discrimination against them.
I'm an impoverished white in a diverse area that is regularly passed on jobs because I don't fit in to another type of white or because I'm not black in jobs where workers are almost entirely black. I got laughed at one time by a room full of them for even trying to apply. There will be close to zero comments by the liberals on threads and tangents like this looking out for us even though there are at least hundreds of thousands... maybe millions... suffering white and non-white against white discrimination ensuring poverty or other ill effects. They don't care, though, because we're white. :)
It's what we nicknamed reverse racism. You're seeing a form of it in action where effort is only put into protecting minority or trying to understand their issues while rejecting effort into "majority" (please, I'm a white minority...) and/or no exploration into discrimination issues they face.
> they don't care about whites or discrimination against them.
I don't wish anyone to suffer. As a white person I realize that the power structure overall still benefits and lifts up white people while generally crushing people of color. You may have experienced racism, prejudice or discrimination but I very much doubt you've experienced the systematic destruction of livelihood that people of color have and continue to experience.
> I got laughed at one time by a room full of them for even trying to apply.
Sorry about that but it's a very small example and doesn't prevent you as a white person from going almost anywhere else in the world and benefiting from your skin color. I.e. the rate of occurrence of what you experienced is very small vs what people of color face. It doesn't mean you should be laughed at, but it's isolated and not a systemic problem.
Edit: of course, down vote all you want but please also show me what's not true about this.
"You may have experienced racism, prejudice or discrimination but I very much doubt you've experienced the systematic destruction of livelihood that people of color have and continue to experience."
I lived in an area where government, jobs, and schools were largely dominated and controlled by blacks. You bet I experienced systematic overt and subtle discrimination that held me back. It shocks your subset of liberals to discover this but it's a human group not race issue that merely manifests as race. If blacks are the majority, the same problems show up against any other player. Whites are majority in most areas, so the problems usually show up against non-whites. So, in mostly black areas, we get unusual expectations, more punishment more often for offenses, ganged up on, laughed away from jobs seen as appealing to blacks, served later at a food place "randomly," and so on. Same shit. Just nobody fights for us and liberals don't acknowledge it happens without... it's like a refrain... "may have experienced" prejudice/whatever in "small examples" vs (non-whites here).
Of course, you people conveniently ignore that there's different types of white people. Matter of fact, my Irish ancestors in this country and many other European immigrants would be very confused at your assessment given they got lots of discrimination. Still do if 1st generation. I like citing anti-Irish articles from history in front of blacks talking about "discrimination of the past" and why things had to change. They shake their heads yes until I tell them it was about Irish whites. They get confused because nobody told them English whites discriminated against all other whites and vice versa. Refrain was "one thing called white" vs "everyone else." Then, they either adjust their thinking or go into denial.
Even so, I still don't have to go that far. See, intellectual white people that love computers are called "nerds." We experience the exact kind of systematic discrimination and profiling you describe. We're filtered out of upward mobility in most business circles due to lack of social fit. We're excluded from all kinds of social activities because we're different. We're shoehorned into jobs they think are best for "our kind" then not given gratitude or equal treatment by upper management. I'm so good at blending in with normal people that I get to hear all kinds of negative stuff by whites and blacks alike about what they think of my social class. White "privilege" among "nerds?" Only if the privilege is one kind of job in a specific pay range with less of everything else. That's not a privilege. It's like a peaceful, passive form of indentured servitude. Similar to what blacks claim about many of their job results.
So, yes, many whites do face systematic discrimination if they're not of the popular variety in terms of appearance, speech, ethnicity, or whatever. This has been true since American began far as I can tell. It goes back to the battles and issues I read about in World History among Europeans. You've probably seen it yourself but explained it off as... typically... "isolated and not systemic problem." No, it's just a series of isolated problems that repeat upon specific attributes throughout the system by white and non-white oppressors alike. Not systemic or regular, though. Just coincidentally pervasive. ;)
Note: I upvoted your comment because it's the kind of claims disconnected from reality that people need to see addressed with specific counterpoints.
However ignoring that black people face different challenges and are in fact differentialy affected by prejudice because of the existing power structure is itself perpetuating racism.
The end goal is to treat everyone the same. Calling for colorblindness doesn't achieve that.
Edit: Also, yes I have seen white people in poverty. Poverty is no different for them.
However they are still treated better by the police, other institutions and large sections of society.
> Have you seen white people in poverty? They are no different than black people in poverty
Maybe on the level of that they're both human, but the white person still benefits from the system made for white people.
Edit: relying only on the dictionary definition is impractical. While useful it avoids the deeper impacting levels.
And in that regard, perhaps yes, the dictionary definition should be the only thing that matters and we can then agree on the dictionary definition of the system of white supremacy that keeps people of color down. Yes, lots of white people in poverty too, but again, they aren't seen as a threat, they're given the 'benefit of doubt' while people of color are shot dead in the same situation.
I am a recruiter and always ask this question - "Is programming just a job for you to get the bills paid, or do you have a broader interest?"
The thing to understand, and what the author of this post has wrong, is that I am not looking to hear about how much TIME a developer spends on programming. I am wanting to hear the STORY of their personal interest. Because the truth is that if software development is a personal interest to you, then you will find a way to pursue that interest, within the time that you have. You'll find a nook or a cranny in which to dig about learning things and finding out new stuff - maybe for 30 minutes before you go to sleep, or on the train, or somewhere.
The point is that employers want people who are INTERESTED - they are not necessarily looking for people who spend all available personal time pursuing an interest in software development.
And I can tell you with certainty that if you claim to have a person interest in software development but you cannot find any time outside work to pursue that interest, then you are lying. Perhaps to both yourself and the recruiter, but certainly you are lying. If you have a personal interest then you are DRIVEN to pursue that interest. If you claim a personal interest but also say "I'm just too busy these days to do anything.", then you have failed to admit that in fact you do not have a personl interest, you just go to work to do your job and go home.
So no, recruiters - at least this recruiter - are not looking for people who spend all non work time pursuing an interest in software, but are looking for people who can effectively articulate their passion and can explain how they DO fit it into their life.
Talk to me, engage me in a conversation, explain in some depth the things that you do find interesting. This has nothing to do with spending hour up endless hour writing code, it has to do with connecting directly to your personal interest, to the thinking that you have done.
So, is recruiting a passion for you? Did you find yourself driven to do it whatever the cost? What personal recruiting projects have you done recently that you're proud of? Do you connect your recruiting with a personal interest? What kind of recruiting do you do outside of work hours?
I would implore you to re-read what you wrote but instead of making it about software engineering make it about recruiting. Then tell me that it's not a double standard.
If I were hiring recruiters then I would absolutely look for this kind of passion. The point is, if you have the option to hire someone who works just for the money, or someone who has a personal interest in their work, usually you want the latter. Not all companies have that option, and not all developers fit that definition. There is room for everyone in this profession. But let's not pretend that those who practice less because they don't have a personal interest will magically end up as skilled as those who love it and put in the hours to become great.
Most recruiters I've met never stop recruiting and spend a great deal of "social" time talking to people in relevant areas and trying to figure out how to get them a job. It's usually quite obnoxious, but definitely doesn't speak to thinking of recruiting as a 9-5 job
In all fairness, do you ask marketers if they go to networking events to gauge their interest in developing business relationships, or would you count that as a negative, because they're also exposing themselves to being scooped up by your competitors?
Do you ask sales people if they have independent side commissions, or would you consider that as cutting into the time spent chasing the deals your company looks after?
Do you ask strategic account managers if they take the time to visit their clients beyond an employers' requirements, or do you see that as a liability for having them poached as in-house talent?
I get that you want developers who show an intrinsic interest in staying current, because the field often requires training in deeper levels or new technologies. But that's different than avoiding someone who's obstinate about always doing things the old way: no one wants that in any role. The real question I think you're missing is this: is it the employee's job to do this on his/her own time, or should the company be providing the time and resources into it as normal staff development?
Whether an employer should select employees who have a personal interest in their field of work very much depends on what the job is. In some cases a personal interest matters, in some cases it does not. To address your specific scenario, yes I would select marketing people who have some evidence of a personal interest in the field. Marketing is something that is done better when the practitioner thinks about it. For other jobs, personal interest might matter less.
As for software developers, I think most employers do not expect to provide employees with learning time. Larger employers do so, typically through formal training programs.
But if you are a software developer then you need to understand that the industry as a whole expects that you do your own learning. What do I think? I think that is fine, it's no great burden to put a little attention towards software development outside work hours. Doesn't need to be all your available time.
And if you want to be a software developer and resent learning and the time it takes then matey boy, you are in the wrong game.
At the same time, programming isn't some noble rigorous science. Computer science is. Most jobs require slapjack programming. Physics, mathematics, chemistry, those jobs could benefit from the employee having an academic interest. But your 10 year+ experienced programmer is not going to benefit from having a "blazing passion." The best they'll do is learn how to use a new framework to make the code less arduous - they already know design patterns. Think about what you are saying.. Most programming jobs require very little actual rigor, it's more experience than anything.
I don't buy this at all. I have encountered hundreds, perhaps thousands of people who have a very large amount of experience but really can't be said to be any good at their job. Experience is important in making a great programmer but experience does not make a great programmer.
And equally I know great programmers who are very experienced who do themselves a great disservice by resting on their laurels and not actively pursuing new and fresh interests in the latest software technology.
>> 10 year+ experienced programmer is not going to benefit from having a "blazing passion."
Could not be more wrong on this point. Both highly experienced and juniors all need to work extremely hard to learn - if you want to be extremely good at programming - then you have to be driven by a blazing passion to learn more. The field is rapidly evolving and there are constantly entirely new ways of thinking about programming being developed. If you sit around and think "I've got 10 years experience and there's nothing new under the sun" then you are falling behind.
What is true is that if you have 10 years experience then yes you can probably ride that to the end of your career. You know an adequate amount - enough to bluff your way through most new situations. But if you want to be good - really good - at programming, then 1, 10, 20 or 30 years experience all need to work equally hard at learning and advancing their expertise.
Yeah but that's the rub. Having passion for something that isn't even rigorous is a catch 22. Passion for computer science makes a hell of a lot more sense than passion for learning node.js specific APIs like the back of your hand, or whatever flavor tool is hot that year.
I never said there's nothing new under the sun -- I said what is valuable use of time for a junior dev is going to be quite the bore for someone who's been programming for 20 years. Learning new frameworks is somewhat like worshipping an actor because you love the art of cinema. The art is computer science. The paintbrush is engineering. And well, having a passion for one doesn't translate to the other.
I'm not saying that building apps in the newest and greatest frameworks is a waste of time. I'm saying that it takes a naive individual to spend all their time mastering eclectic knowledge rather than formless knowledge.
A smart individual is going to want knowledge that has permanence. As a recruiter you should just go for the sheep, so stick to what you're doing.
The field isn't rapidly evolving. It's about cramming new pointless APIs and frameworks that are pushed by $company in order to dominate some market segment.
Not evolving? Maybe you're just not learning enough to know what the newest evolutions are. Are you one of the people who see new technology as pointless fashion?
Care to elaborate on what some of these "newest evolutions" are?
I studied cs as an undergrad and in grad school and have worked professionally as a software developer for ten years, so I feel qualified to weigh in on this. I can count on one hand the core principles someone really needs to understand to be a great developer and valuable employee and few of those have changed in my career. Once you know those things, picking up the latest flavor of the month is not all that difficult. Sure there are specific applications that require a lot of specialized experience. I'm talking about the other 95% of programming jobs that one could find today.
Give me someone who is smart, has a fundamental understanding of oo programming principles, database design, and perhaps a bit of server architecture knowledge and I'll take that over somebody who doesn't but obsessively attends meet ups on the latest front end js framework.
Everyone is different. I've worked with great developers who coded outside work because they wanted to and they could. I've worked with others who didn't but we're just very, very smart.
The best developer I ever worked with was over 40, had a wife and two kids and rarely coded outside work. He just had different priorities. It didn't hold him back in his career I can assure you and if you had the chance to hire him you'd be making a mistake by just applying some arbitrary measurement of your judgement of his passion for his work. Perhaps your theory should be revisited.
One of the very best developers I know rarely if ever did anything outside work hours.
BUT I have known some of the best developers there are, and the guy I mention above is the definite exception to the rule.
And I never said that there are no great developers who only work during office hours - there are - but the strongest indicators of how good a developer is are their level of interest and this is typically expressed outside of working hours.
And I also did not ever say that the only people to employ are obsessives.
And I fully accept that as a recruiter I will routinely make judgements calls that are wrong - but I have to have some approach to finding great people. How do you suggest your over 40 family man genius programmer could be identified as a genius programmer by someone who does not know him? Recruiting is far from perfect - it is about people and is not a science, but having said that, there must be some method to choosing people.
As a recruiter I represent the interests of the employers - I'm just looking for what they are looking for. If I was building a development team then my criteria would be quite different - for the most part I am from the school of Joel Spolsky - employ people who are smart and get stuff done.
And let me make a point that I have tried to make when I participate in these discussions - what EXACTLY is a "great developer"? In hard, definable, quantifiable terms? Everyone talks about finding them, identifying them, employing them, but it's very rare that people are able to quantify in any clearly definable terms what that means precisely. And if you don't know precisely what you are looking for then how do you know you found it?
How do you suggest your over 40 family man genius programmer could be identified as a genius programmer by someone who does not know him?
As a recruiter you may not like this answer, but you'd have to ask him questions that require him to demonstrate ability rather than interest. You may not like that because it requires you to possess a lot of the skills the jobs you are looking to fill require, and there's not a shortcut to that. In my experience recruiters tend to be heavy on buzz words but light on actual understanding of programming itself. In an earlier response you made a statement that suggested that because you're in recruiting you don't need to have the same passion as a programmer would. If passion does in fact determine interest and ability, then you really should be studying programming outside working hours, as it will only help you as a tech recruiter to better understand the skills required to program.
There's nothing wrong with asking somebody about what they do outside work in and of itself, but its just a single data point and certainly not the most important one. I've interviewed and hired many, many programmers and my typical routine is to look at their resume to get a baseline of what their experience is. I have never, not once, looked for a specific language or framework. The reason is that experience tells me that if somebody is a great C++ programmer, they will be a great Java developer, a great Ruby developer, and so on. If they claim to have experience in C++, I may ask C++ specific questions, but I'm really only interested in knowing whether they really have an expert level understanding of object oriented programming principles and use good design practices. On the other hand if somebody has a cursory amount of experience in ten different frameworks but are only mediocre in each, they will be mediocre at every task until they gain a deep understanding of the fundamentals.
And let me make a point that I have tried to make when I participate in these discussions - what EXACTLY is a "great developer"? In hard, definable, quantifiable terms?
That's like asking "what makes a great auto mechanic?" It's some combination of experience and a fundamental understanding of the inner-workings of an automobile. Hearing a strange noise coming from the engine on your car? Drawing on his experience, a great mechanic can better diagnose and fix it than a bad one. Is there a score to measure that skill? No. You'd have to be an experienced mechanic yourself and observe a mechanic working in order to make that determination. It's not quantifiable. If it were, you'd be out of a job.
I don't know anything about your experience, so I'll certainly not make assumptions about you specifically, but in my experience most recruiters don't have any experience at all in programming. They haven't built a single Rails app, made a commit on Github, and couldn't explain what object relational mapping is. What a curious thing then that they are attempting to measure a person's ability in those skills. That's why developers tend to resent recruiters. They spam people indiscriminately and often clearly demonstrate that they have no understanding of what they are asking. This shows a lack of respect for people's time. David Heinemeier Hansson, the inventor of Ruby on Rails, has famously tweeted on several occasions solicitations from recruiters asking for more years of experience in Ruby on Rails than the language has existed.
You already told us you were a recruiter. Now you are just making yourself look vindictive and naive. Most new frameworks aren't grand high tech innovation. The most significant thing in web dev in the last 5 years has been creating GUIs with dependency trees or chains to have elegant interfaces that update instantly. There are a ton of different interpretations of this single idea, that's why React, Angular, Ember, Knockout, etc.. all exist. But they individually don't do much more than the others - just differences in heaviness of the framework and how opinionated the defaults / options are.
I wouldn't want you to be my recruiter with the attitude you're showing here in this open forum...
Not much, but recruiting is not a craft that particularly benefits from being honed with long hours of practice and learning - software development is.
Does anyone really care about a recruiter thinks? You can read a few paragraphs to understand how you get recruiters interested (even though they spam everyone on linkedin anyways). It can take years of effort to land the kind of jobs you want.
Would you prefer your heart surgeon be one who has a personal interest in the field, or one who after ten years experience felt that they had "learned enough", and that new techniques are just fashions.
Would you prefer your pilot to be one who has a personal interest and really understands the dizzying array of knobs and dials in a cockpit along with understanding how the plane works, all the checklists and procedures and things to do when something goes wrong? Or would you prefer a pilot who felt that they had learned enough and really just want to know enough to get the plane up and down in good weather conditions?
I agree with the point you are making but would still continue to pay a little extra for someone that I knew enjoyed looking after the details while they were doing plumbing (or whatever trade).
If you know who Daenerys Targaryen is, you do not have "no time." You have priorities which included "I wish to know who Daenerys Targaryen is." No judgement! I do, too! But if you know who Daenerys Targaryen is and you're dissatisfied with your career growth, you should attempt to consciously be aware of the fact that you can choose different things in the future.
It takes minutes to set up a web presence as a software developer. It takes 1~3 hours to stick a flag in the Internet about one topic. Having one flag stuck in the Internet beats zero flags, by a lot. You can keep doing this as you have time available. (Think less "submit bug fixes to OSS projects" and more "write an essay which shall endure regarding a topic which is professionally relevant to you." To pick one of the hundreds of things in this genre produced by an HN member, see https://www.chrisstucchio.com/blog/2012/hft_apology.html where HN's own yummyfajitas explains, in a useful and citable fashion, how order books work. You almost certainly know one topic well enough to post something which clears that bar of utility on any given day.)
You could also, I don't know, invent Rails, but you do not have to invent Rails to get career benefits out of working publicly.
After you have a flag stuck in the Internet, there are a variety of ways to get value out of it.
The simplest one is using it as a conversation piece when you're cold-opening conversations with folks who are relevant to your career. For example, if you've decided to stick a flag into (picking a random example) ActiveRecord optimization, and you're attempting to talk your way into a job interview with a Rails shop, "I see you're a Rails shop. I would like to talk to you about potential opportunities at your company." is _substantially_ improved by "Hiya, I see you're a Rails shop. I wrote a detailed guide to ActiveRecord optimization (see here). I would like to talk to you about potential opportunities at your company."
Another one -- also not hard! -- is to put a call-to-action at the bottom of the essay saying "If you're reading this, it is probably because you are interested in ActiveRecord optimization. So am I! If you've got hard problems with ActiveRecord optimization I would love to help you solve them. We should chat; here's my email. "
> It takes 1~3 hours to stick a flag in the Internet about one topic. Having one flag stuck in the Internet beats zero flags, by a lot.
I gave one rather mediocre talk at a regional tech conference with maybe ~100 attendees. The video is online. From that day forward inbound interest skyrocketed. I'm not talking about cold calls or LinkedIn requests, I'm talking about startup CTOs asking me out for coffee to chat about my future, managers asking if I can consult on their project, invitations to speak at other events.
When I lost my job, I called those people back and had more than enough consulting work to tide me over. As a direct result I now work at Twitter—before I was at a failing startup that nobody's ever heard of. In other words, speaking at that conference opened the door to >$200,000 in consulting work and increased income in the two years since.
The bar to speaking at events like that is not high. Every major city in the US has programming conferences. You don't need OSCON or JavaOne, pretty much any decent event will do so long as they record and post the talks. Link that from yourname.com and look forward to lots of coffee chats.
> I propose the Daenerys Targaryen test.
If you know who Daenerys Targaryen is, you do not have "no time." You have priorities which included "I wish to know who Daenerys Targaryen is." No judgement! I do, too! But if you know who Daenerys Targaryen is and you're dissatisfied with your career growth, you should attempt to consciously be aware of the fact that you can choose different things in the future.
I don't agree. I watch Game of Thrones in the late evening hours where I'm reduced to a vegetable by a whole day of working/coding. I doubt I could squeeze more effective work hours into my schedule (maybe for a couple weeks, but not over a long term).
It seems that professional programmers have little understanding about the limits of human endurance in skilled labor. Junior doctors work 100 hour weeks and 36 hour shifts so busy they often don't have time to visit the bathroom. It may slightly harm your productivity by working more (almost certainly will) but to say you can't do anything on your own time except for watching Game of Thrones is overly pessimistic.
The doctor's job is not exactly equivalent. After a day of programming, I feel I could still put in a couple hours of light manual labor or say drive for Uber, but I'm unable to focus intensely any longer. Doctors probably use a much greater variety of skills (and not just intense focus on 100% abstract problems for 8 hours), hence I think their resources deplete slower.
I know that when I've worked at jobs which weren't all about focusing on abstract problems (such as an analyst or a consultant or a project manager), I could definitely put in more hours.
EDIT: Also, air traffic controllers (a job that I feel is more similar to programming than being a doctor) are restricted by law to work no more than 6 hours. From what they say, after their shift is done, their brain is often completely fried.
Do you really focus intensely for several hours at a time during a typical workday? What industry/domain are you working in? In my experience, most software jobs mix bits of intense abstract reasoning, distributed throughout the day, with an at-least-equal amount of tedious gruntwork or meetings.
For jobs, I do rather typical Java/Scala/BigData development. I agree that the there's a bit of mindless tediousness in the jobs, although a lot of it can eventually be automated.
However, IMO, when working on a large code base which you didn't author (so, pretty much the most typical case), if you want to do a good job - i.e. think through potential consequences of your changes, weight the pros and cons of alternative approaches etc. - you still need a ton of cognitive resources.
Or is it the other way around? Maybe it's the junior doctors that don't understand something that professional programmers _do_ about the limits of human endurance in skilled labor?
There's no way those 100 hour weeks and 36 hours shifts don't lead to a measurable increase in errors. Given that in medicine, errors can cost lives, it's morally reprehensible that anyone allows this kind of thing to go on in medicine today as a matter of course (outside of a true one-off emergency)
Errors do increase with length of shift but they also increase when continuity of care is disrupted by shift change. When you look at patient outcomes it's a wash. This probably speaks more to awful shift change procedures than anything else but reducing the hours junior doctors are fostered for has not lead to any improvement for patients.
Perhaps this is just convenient for employers. The real problem could be in shift change procedures but they aren't incentivised to fix this and lower shift times.
An interesting anecdote I remember reading that Henri Poincare, one of the greatest mathemetians of all time, only worked 4 hours a day because he couldn't sustain more than that amount of time in deep concentrated work. He'd then go play cricket and read for the rest of the day. You need to find your own "sweet spot".
I try. Can't focus for literally more than 10 minutes. What works is actually doing some sports, but you can't run or lift for 4 hours - hence vegging out in front of the TV after the workout.
> You almost certainly know one topic well enough to post something which clears that bar of utility on any given day
I'm only 27, but I don't believe this. I know just enough to know I don't know anything deeply. Does the internet need another github page regurgitating the same stuff as everyone else?
Github pages seem to be a very suboptimal way to publish for professional purposes unless you decide to design them, since the credit for whatever you publish there goes to Github rather than to you. (Not an exaggeration, either: I got quoted in the BBC recently as "this page on Github.")
I don't know what you know, but I bet it is a lot more than what you think you know. I was 27 once, too. My day job at the time involved scintillating subjects like dealing with edge cases in parsing the CSV file format used to encode the results of the central Japanese university examination. (センター試験) A fun edge case, which you absolutely have to handle correctly, is how to calculate the English subscore for someone who has a medical waiver from the speaking comprehension portion on account of being deaf.
I assert without fear of contradiction that if I had published on that topic, in Japanese or English, I'd be the world's leading publicly accessible authority on that question. How many posts in that genre would it take to totally own that file format, which is only documented in a single out-of-print booklet whose copies are guarded like cherished relics of an ancient civilization the likes of which we'll never see again? My over-under is ten.
There are higher saliency problems in the world than that CSV file -- oh goodness, are there -- but there are hundreds of people with hiring authority who care about that CSV file very keenly indeed. (I'd not particularly recommend working for any of them, but one problem at a time right.)
What's the weirdest problem you've solved in the last year?
In addition to writing what you've learned from all the tasks you've done professionally for a good reason -- and since that reason is good, people who hire will care about your ability to do it -- you can also write (in a positive and professional way) about things you've done for no reason. Five years ago I had a boss with a, shall we say, keen eye for backwards compatibility. One of the strange rabbit holes we went down was building a jquery widget to implement the input[placeholder] attribute for browsers that did not support it. This turns out to be bizarrely complex if you want e.g. the cursor to focus before the placeholder text. And that _could_ be seen as a waste of time, but it would be perfect for a blog post talking about how to build something we all are familiar with (and likely transitioning into a discussion of the Shadow DOM) that establishes a reasonable amount of credibility.
[Edit: that's not even the most interesting one from that job, either -- while I didn't work directly on it, a clever coworker figured out how to write a client side collage builder that supported both download AND IE6, which is bordering on genius. I've heard him explain how he did it, and it would have to be a series of blog posts, there's just so much there -- obviously the median boss would have let him just use imagemagick on the server.]
What is a good place to plant such flags? Personal domains? Medium?
I've started writing a couple of posts on conversational interfaces recently. Having them linkable from Medium was definitely a key to land more speaking at events, in turn enabling potentially freelancing & consulting gigs (not closed yet), as well a good credibility and ice breaker when reaching out to interesting people
I used to write quick blog posts some years ago, and post on social media often, but I never wrote something I considered a professional article because of hesitations like you're expressing: it needs to be 'uniquely insightful', it needs to be 'applicably useful', it needs to be 'well written.'
Then one day I was like 'screw it' and started posting to Medium. I've written ~7 things so far, quick articles, tutorials, or reposting a slideshow I made for other reasons, and they have all been read and been provided recommendations/likes/shares/feedback to some degree. In terms of career growth, it's not been an instant magical boost, but it's more like 'networking' in that it enables people to connect with you, laying groundwork for collaboration in the future.
The thing is, certain people you can reach at a certain time are a unique factor in what drives interest in your writing. Maybe someone didn't see the other github page, but they saw yours. Give it a shot.
The world doesn't need another CV or an application form where I talk about a particular challenge I faced and how I overcame it. I still fill those out.
The better test is if you know what color Daenerys Targaryen's eyes are ;)
A human cannot be productive all the time. We need downtime. Time to spend with family. Time to sit and stare at a wall. If some of that wall stare time involves movies or books or TV, so be it.
Why are we making a special case for software developers, on points we would agree on in other professions?
Let's say you're making a movie, and you're hiring your music composer.
Both candidates have nearly identical CVs/experience/recommandations.
- Candidate 'A' says "I'm only doing this for money, I can't show you any of my work because of NDAs".
- Candidate 'B' says "I spend a lot of time composing in my freetime, here's a link to my soundcloud page".
Which one are you going to hire?
A lot of people are taking the article as an attack on people who really do want to code 24/7. I don't think that was the intent, though I suppose the author could have been more diplomatic about it. If nothing satisfies you more than throwing your entire being into your work, then that's fine. Do what you love, and be happy.
The problem isn't the people who are blissfully coding from sunup to sundown. The problem is the people who would prefer to have some more time for themselves and their friends and loved ones, and are buffaloed (by both supervisors and peers) into believing that that's not allowed. It's infuriating to see people being treated like that. If the author seemed angry or confrontational, that's why. There's enough work in this industry that everyone should be able to find their niche.
no company in this world can afford, or even realistically expect to have a team full of Jordans. would be nice for the owners, but that's not how this world is laid out
This is not their fault, and a real serious problem with the way developer recruitment works. You can't judge people by their previous work. Whereas in other creative industries everyone has a portfolio or showreel, and you can't get hired without one.
Yeah, this is really frustrating to me. No job I've had allowed for contributing to open source - the projects themselves where done under NDA, and you were certainly not working on anything that wasn't directly billable at work. On top of that, anything I do outside of work is (nominally) the property of the company. And I really don't have time to do any programming outside of work, even if I wanted to - I don't have any itches that need scratching.
Other people are saying "well, just find time". "Finding time" requires sleeping less or cutting out responsibilities. (I am HNing this morning while eating breakfast, if you're wondering. :)
This is really frustrating when looking for a new job and probably two-thirds of them want to see my Github profile.
I definitely appreciate the intention of the article and hope we can get to a more balanced society where one does not feel so much peer pressure to overachieve at the cost of health/wellbeing, but you make a very fair point: Candidate B, who lives and breaths the craft might have a leg up over the competition, merely because (s)he is so - I am afraid to use this word - passionate, about the occupation in question.
>Why are we making a special case for software developers, on points we would agree on in other professions?
Because our profession mixes work and pleasure like no other. Lots of people work on pet software projects outside of work for 'fun', we go to tech meetups and hackathons for 'fun'.
I'd make a stronger assertion: top developers do have a life outside coding.
My experience is that people who stay until 9 writing code because they're "passionate" write a lot of code and implement a lot of features for a while, but the quality of the code is low because they're always tired when writing it. And after a year or so, a combination of burnout and the unmaintainability of their code forces them to quit, leaving the next group of programmers with something truly horrible.
If that's your definition of "top developer" you can have all of them.
IMHO, a top developer is someone who can produce a quality product from inception to completion, which requires being well-rested, taking care of their own needs, and having enough social life to be able to make their code decisions in their social context (because every program runs in a social context).
Further, I'd say most of the evidence indicates this. A sampling of it follows. We know regular sleep improves quality of life and thinking. We also know many people who don't have it think that's not true but prove otherwise in tests. ;) Quiet office vs cubicle research long ago showed being able to focus with minimal interruptions improved productivity. A person with friends and family trying to code nonstop will be closer to cubicle vs someone who does it less but allocates time to not be bothered. Finally, there's also data from experiments like Fagan's Inspection Process, Mill's Cleanroom, and Altran/Praxis' Correct-by-Construction that teams of smart people on regular schedule using the right methods and tools produce the highest quality software you can get.
So, evidence is vastly in favor of a more moderate approach to developing software in one's free time. Even for a person who practically lives on a computer. The brain needs novel experiences and breaks from things. Just works better that way as connecting new dots is the basis for creativity. Gotta feed it more dots. :)
I work from home whereas before I worked in an open plan office. As a developer. I do less hours now at home, but I only work the productive hours. If I'm not 'feeling it' I do something else, I don't have to sit there looking like I'm working, theres no-one watching me and judging me. I don't sit there until I get bored in that state to the extent I'll churn out code with a fuzzy head and so create inefficient inelegant code.
If coding is all you do, I guarantee you're writing bad code.
An hour when I'm in the zone is worth 2 days when Im not. If it takes me a day of taking a break to get into the zone its a net gain.
Reading the comments in this thread is painful. I agree that a successful developer shouldn't need to program as a hobby. It is notable that the developer culture tries to attach itself like a headcrab to the developer industry. I prefer doing other things, I've been programming since the age of 12, coding is somewhat boring to me these days - I'd rather do mathematics. It is unfortunate that the youth think going to conferences and doing latenight hackathons is what makes them a programmer. Programming has always been about getting things built, a means to an end. I think the cultural pressure seems to be borne out of appearing smart. But programming isn't even a great way to make money, for an intelligent programmer. Trading securities _using_ programming is. Or using programming to do SEO affiliate programs, etc, etc. I think when you combine dumb people with programming, you get a cultural affinity so they can validate themselves. Experienced programmers seem to more bitter and less apt to program eclectic shit for giggles. It's more a tool to get important stuff done.
Coding (or problem solving) IS the fun part for me. Stealing the idea from a Ray Lewis quote: I get paid to deal with everything else at work. The coding I do for free.
I'm actually having a break while working on my OSS project. I will spend 2 more hours for a total of 5. And this is all I did this week. Not so hard, right?
I'm from China, where hard-working with a lot of overtime work is advocated in almost every internet-related company. Developer here do 996 the whole year in and out (for those of you who don't know the concept of 996, it means working from 9 in the morning to 9 in the late for 6 days a week in the office. But sadly, usually, a lot of the developers can only leave the office after 10 or 11 at night). Everyone knows this is bad for improvement and health, but company owners keep pushing everyone with salary and punishment, along with moral pressure, that only fighting this way, the company can survive in the big race in almost every industry area. For sure a lot of great things are happening in China, but I see most of them are based on bloodless and cruel company operation decisions and habits.
Under this circumstances, I think hobby, family and every other thing that's not related to work is humanly possible. I curse the ones who started this for a long time in hell.
> Everyone knows this is bad for improvement and health, but company owners keep pushing everyone with salary and punishment, along with moral pressure, that only fighting this way, the company can survive in the big race in almost every industry area.
Do they do any research to prove 996 is really effective? I have a hard time imagining how one could stay productive for long in such working mode.
Sometimes I have some hard deadlines (like a lot of other developers I guess) that requires to work 10-12 hours/day to get things done in time, but that usually lasts for a week, maybe two. And it's _already_ very exhausting. I'm wondering how exhausting it could be to work in such mode all the time...
Because most of the Chinese company work in this pattern, I don't think a very pervasive research can be done and there is none I know that exists.
I think it works when you are copying things with lots of entry level developers at low cost, like most companies do. You know, they will find something that's working great in America and Europe and copy the whole thing very fast and launch new ones. This is how you guys have Google, we have Baidu; you have Uber, we have Didi; you have Periscope, we have over 100 mobile video live apps, etc.. But if you are inventing things, this won't work at all. I think this is one of the major reason why we lack of innovative products all these years.
This is a very common practice throughout the industry since about 2-3 years ago, and it's a very sad story every time I tell it.
It's not that all good developers code as a hobby. A lot of them do, but most importantly almost no terrible developers code as a hobby.
Recruiting developers isn't about finding ninjas so much as it is about avoiding the terrible developers. A nice github stat doesn't guarantee you are a good developer but it (almost) guarantees you don't suck.
I completely understand asking potential hires for something they did out of pure curiosity. For me personally I'd likely have to point at something I made long ago before the kids ate my spare time but I can talk passionately about a hobby project, and I use that as an indicator when recruiting.
This does not match my experience. I've interview many candidates with github profiles that looked active who couldn't code their way out of a wet paper bag.
What's worse is by reading their code on github, I will already form an opinion (sometimes very negative) before I even meet the person!
I've especially noticed that these developer bootcamps that are rising in popularity produce a lot of github cruft.
You mean they have a "fake" history of github activity? Or just a lot of "activity" but nothing really substantial?
Just having an "active" profile can be achieved by cloning a few repos and writing a few feature requests.
You'd have to read the contents of their history of course, code and communication.
Seeing how they reason about code in issue discussions or pull requests is valuable, even more so than reading the actual code.
You make a good point about negative preconceptions from seeing someone's code. I suppose it's better (or at least no worse) than the negative opinion we may form from seeing someone's grades or previous employer.
I think this write-up might be more successful if it wasn't so sexist and racist. After reading lines like this...
"Who can afford to keep coding after an 8-hour work day of coding? Who doesn't get harassed in the open-source community? 20-year-old white guys with no responsibilities and/or with enough income to "buy" more free time (i.e: nannies, cleaners, good healthcare, a car to commute, etc.)."
I'd be led to believe that anyone contributing code, esp significant amount, to open-source projects after their day job is: white, male, upper-middle class, has no family, has no love for any family they have, and/or has no life after code. Whereas, I've read enough write-ups from OSS contributors to know they come in all kinds of personal circumstances. Plenty are quite committed to their families with OSS project of choice a hobby or passion. Women and non-whites stay a minority in tech and science in general but still significant contributions from them.
I disregarded the harassment claim entirely, despite plausibility, after reading a line that slanders and misrepresents all kinds of contributors to push author's political beliefs that basically hate races and genders dominant in American and European software. I mean, if the writer regularly posts this stuff, then it's perfectly reasonable for others on projects to throw vitriole back to get the person to stop doing it or just leave.
re the actual advice. The stuff below that are all good recommendations. Especially limiting oneself to certain number of hours on a specific project. I'd further say limit yourself to one project at a time. Also, it can help to limit time spent on things like Hacker News, Youtube, gaming. Things that are addictive and can take up more time than you expect. Put a hard limit on how long you'll spend on anything like that. Think about the limit itself, too.
I feel that there is a huge gap between this writing and my daily experience as a developer. I've been thanked for my work and I'm understood to be a valuable asset for my employer in my role as a software engineer - and never I've been required to have extracurricular development to facilitate my career progress.
Maybe the fact that my work has fairly deep domain knowledge requirements and I know my stuff pretty well puts me in this category - but I don't know.
I like coding in my free time as a way to explore subjects though, so I do this anyway (but nothing that could be considered good software engineering, good engineering is grueling work while fast prototyping is fun.)
Not everyone has the same experience, basically. You're lucky to have such a job. Similarly, I'm lucky to have a job where I get to work on open source directly. I'll probably still do random fun coding stuff in part of my free time. Not everyone is that lucky; and I've heard plenty of stories from folks in that category.
But yeah, what she's talking about is not everyone's experience, fortunately :)
Something many businesses seem to forget is that if you want a developer to be the technical face of your business then they need to be able to write great code, but they also need to be able to chat to people at networking events, make small talk with clients, explain things in non-technical ways to investors, and so on. Employing people who have interests outside of coding really helps with that.
Likewise, if you're a developer who has ambitions of being a CEO, or an evangelist, or a team lead, then you need to be able to talk to people who aren't developers about things that aren't development, and that means having interests outside of code.
Maybe (? Not trolling I do not know) in SV and certainly in the HN echo chamber it works like that but when talking about banks or big 'old' companies you do not have to write great code or chat at events or explain stuff to investors or make small talk. No paper data (modern research seems to be test-group-of-five anyway) but most devs I meet are like this. The kind of ux/ui conscious iknowwhatrecursionis coders are not that common really. And those people do not work weekends or nights. 9-5 5 days a week and 25 vacation days per year. Nice salary too: never a millionaire but a nice (if you like that) quiet life.
Sure, that's true. You can be an awesome developer by getting deep in to the code and never talking about anything else. If that's what you do then great, but remember that your career path won't stray far away from being a developer. Often people do want to do more after they've been coding for a number of years, so it's worthwhile cultivating other interests and "soft skills".
The main reason I see for "working after work" is actually for "learning after work".
While companies might try their best to invest in your professional development - in the end your career is your own responsibility.
While you might have to work hard to convince your employers to let you move from part of the stack to another, no one can dictate what your side projects are except yourself.
Working after work is what "saves" a programmer's resume from listing "20 years in <obsolete language> using <obsolete API> until the company I worked at for 20 years shut down".
A good job should have you using <modern language> with <modern frameworks> for <efficient code> that makes you <feel like a wizard> But you have to look for jobs like that. Jobs that stifle and make you want to code things after work because the work coding environment is so poor, are jobs that I watch out for now. I've been in the situation you describe before. Never again will I do grunt work.
True, but:
A. A good job today might not be A good job in another 3 years. Companies aren't quick to dump their existing code just so they can see "we now use <modern language> and <modern framework">.
B. very often <good job> expects you to already be experienced with <modern language> and <modern frameworks>.
By learning at home at your own spare time, you reduce the risk and ramp up time for them, making yourself a more desirable candidate.
Try working on make files for a while. You'll miss grunt :D
Hah, I didn't mean the "grunt" buildtool for node. I meant dumb trivial repetitive work. I am understanding of legacy code. But at the same time, a good job will understand the pain of inefficiency and dull codebases have on a programmer. And so, someone shouldn't have to _just_ work on that shit all the time, they should be able to mix the burden with other developers in some kind of time ratio.
For B) yes, of course. But once you get your first job, if you keep going and have good workplaces, you shouldn't need to really do much at home.
I'm not trying to knock you, just wanted to put the warning out there for everyone else, because I've shot myself in the foot by joining gigs where a load of shit was dumped on me, and that was the main event. Fuck jobs where the main event is working on something totally unpleasant. No, I'm not a diva and understand that getting paid is to offset that - but still, some workplaces just don't have the understanding that you can't have someone work on sludge 24/7 and not expect them to become bitter.
Here's the thing that this blog post is missing: It's a marketplace with competition. Yes, ideally, you shouldn't work outside work and spend all your free time doing other things, and there should be no world hunger. But it doesn't work that way.
If I don't keep up to date and keep learning new things, someone else will (and the idea that this person is 20, white, male, and single seems a little racist and sexist to me). That other person will go on to do more stuff than I do if I don't keep up. That person will get compensated by the market for doing so by promotions, raises, not getting down-sized, or perhaps though success when starting their own company.
Yes, it's f* up that a company will expect this out of every single developer and that shouldn't be the case. But, when I need to fire someone because I didn't get as much in my B round as I thought I would, you'd be crazy to fire the guy who is as good of an employee AND invests in his skill set.
Personally, I love programming and do a lot of it outside of work because I really like doing it. Yes, there are a lot of biases in our industry, but often times it's pretty clear who the best programmers are and often times it's the one who have put in the hours. Nothing else. So yeah, don't code outside of work. You should definitely do that, but don't be surprised when your skill and your career suffer for it.
Exactly. And time invested in developing your skills, like any other education is a real investment. It accumulates over time and has real value down the road. A developer who spends a couple hours a day coding for fun is at an advantage over the others, but by the time he's been doing that for 10 years he/she will be on a completely different level to someone who hasn't.
As another example, drinking, smoking marijuana, vegging out in front of the TV, insert whatever "vice" you want here that wastes time/energy, might not hurt you much every now and then - but to excess it's going to accumulate into a serious competitive disadvantage overtime.
There are hard tradeoffs to be made between work-life balance and career success - and the results of those tradeoffs don't really become very obvious for a long time.
I agree, but it's important to frame the issue. The reality is being a software developer is a pretty sought-after job. Yes, companies will do what they can to take advantage of any employee, but it's not like we're coal miners here. When you put in time outside of work to keep your skills up to date that is investing in yourself, not the company.
But is it required to put in extra hours to stay competitive? All else being equal, of course it's a competitive advantage. Where that breaks down is that programming productivity is hard to measure and far from fungible. The scary truth is that the nature of the job you do might have more impact on your skill set progression than whatever you do in your spare time. If you are stuck maintaining some baroque legacy system then you might be developing domain knowledge that is useless anywhere else. Conversely, if you are directly interacting with customers, or collaborating with smart, experienced developers on hard problems, or addressing business problems from first principles, then your learning might be accelerated.
In the end, developer jobs are definitely a marketplace, but not a commodity marketplace. There are many paths to success. For young developers I would definitely advocate putting in all the time you can simply because there is a big initial hump to get over before it even becomes apparent whether you have any potential or not. But once you are a competent developer, then domain knowledge and soft skills bring far more competitive advantage than learning the latest whiz-bang framework.
It's great that the author is able to finish his pet projects in 20 hours if he sets a deadline. I'm not able to finish in that time frame for anything that I'm interested in doing as a pet project.
I've known quite a few "24/7" programmers, but the smartest I've ever met worked a 4 day week so he could spend more time with his family. He was naturally exceptional though, stood out even in a company filled with people with Cambridge 1st-class degrees.
Again this is making me think I should write my piece on programming while suffering chronic fatigue.
I would definitely love to read that. I have a friend that has lime disease/chronic fatigue and I often wonder how they get stuff done. It's hard enough for me to work hard with a normal regiment. I think your story would be inspiring.
"expecting employees to keep up with new technologies, frameworks and languages entirely on their own"
You're looking at this entirely the wrong way. You shouldn't expect your employer to spend thousands paying to train you. If you need those skills, or if they'd be useful to you, then it's in your best interests to learn them. Perhaps things are different if you're digging holes for a living but IT is currently about constant change and if you don't keep up then you're not as much use as people who do.
Your employer doesn't care how you earn your living, and they don't care who does their work for them. They just want it done. If someone else can do it better than you, you're out.
Frankly, though, you should want to keep up. If I were interviewing I'd be more interested in someone who was interested in development, not someone who's going to want to just sit there and wait for a personal, pre-paid invite to an overpriced training course.
You can be hired into a position in an arbitrary hierarchy by having a life outside of coding. You can be popular while having a life outside of coding, or have something you wrote become popular. If that's what you mean by "top developer", then yes, I completely agree.
If you mean "the skill of actually programming", then no, that's absurd.
Would you tell someone they can be a "top sports player", if they have a life outside of playing that sport? A world class chef who doesn't give themselves over to cooking? Anything that actually involves skill? A musician? A painter?
Because if that's the case, then no. I'm sorry, you're battling against reality. There's a little thing called opportunity cost, and whether we like it or not, how far you can walk down a particular skill-set is DIRECTLY RELATED to how much time and work you put into it.
What's perhaps a better message is both: a) employers, you aren't actually hiring superstar coders, and if you want to, you'll either pay for it, or better make your workplace the kind that attracts them. And b) developers, you're probably not going to be the best in the world at what you're doing...and you know what...at least from a personal psychology perspective...that's ok.
Now from an economic perspective, if you're worried that you're not going to be able to hold down a well paying job because they demand too much...well, there you've either got a problem with reality (skills take a long time and hard work an practice to build), or the economic system, cause maybe there's a lot of desperate people out there who can code for peanuts and will take shitty conditions...and capital is being amassed into fewer and fewer hands and increasingly has no interest in paying to upskill you or whether you can have a reasonable life outside of work. :P
> There's a little thing called opportunity cost, and whether we like it or not, how far you can walk down a particular skill-set is DIRECTLY RELATED to how much time and work you put into it.
Not sure about painters and musicians, but professional sportsmen burn pretty rapidly, both physically and mentally. You can be the best coder in the world at 25-30-35, but if you devote your time to coding and coding alone you will eventually burn out. It's not a matter of if it's only a matter of when.
I'd rather be an average-to-mediocre coder who codes well into his 40s and 50s then having to deal with depression and end-of-world scenarios brought about by burn out and the feeling that it's no use in you writing code.
> Would you tell someone they can be a "top sports player", if they have a life outside of playing that sport?
I've been living at a tennis academy for the past two months, and I've seen firsthand what's expected of the top players. To keep up the necessary training intensity, regular recovery periods away from tennis are built into their schedule.
In other words, having a life outside the sport is not only possible, but necessary for top performance.
Dietary standards certainly, but fitness during that time is mostly "active recovery," which looks a lot like normal daily activity for the rest of us.
I think people are reading too much into the word "top," which appears nowhere outside the headline. Variants on the phrase "good developer" appear several times, and should perhaps be the focus; "top" may have been a poor choice of words, but I think the intent is clear on a charitable reading.
And since, re-reading my comments doesn't make it as clear as I'd prefer, I'd like to reiterate that this doesn't mean that I think that there's something RIGHT about the expectation that you give your life over to your job or to one particular skill/facet of life. Skills and knowledge aren't even neatly devolved into subject matter areas as though reality and life is just filled with fantastical university faculties that you have to choose between.
I view there being two issues here as separate phenomenon.
You probably won't be a top coder if you're not willing to put more effort in than is available at work or during an 8 hour day: if not just because the modern workplace isn't as a whole very conducive to properly upskilling its workforce, and because there's a whole lot of people out there who are willing to put in more time, money, and effort than just those provided by full time jobs to study/implement their skills.
To be honest, I don't even think most companies even have a place for, or even necessarily WANT top coders.
On the other hand, there's this issue of should companies have an expectation that you're putting in extra work/hours to get a job/get ahead. And that's a big complex issue there that I think has to do more with society/culture/economics than whether you're a top/good coder at all.
Be that as it may, I think the point still stands.
My self and my (now) wife, as a living example, generally try to live close to work. We've rented for 10 years, moved 5 times now, and lived in a 1 bedroom apartment together for 5 of those and try to live without a car. Sacrifices many of our friends simply do not contemplate as "possible" On top of that, I've done my best to learn as much as I can on work's time.
All other things being equal, will the person who makes life choices, be it living out in the burbs, watching TV, having children earlier, partying or drinking, etc etc, be top developers, relative to me/us?
No. In fact, I can squeeze in hobby/health that takes place with the time/money (albeit not one that uses space) savings afforded by these sacrifices and still compete with them, and the synergies afforded will still probably put me ahead.
Now there are some people, perhaps those with rich parents who gave them access to computers earlier than me, buying them big spatious houses adjacent to where they work, with all the right connections and contacts who can probably out-compete...and as hard as this is to admit, probably out-ability me, but that's life, and that's reality.
But the other reality, in addition, is developer wages and conditions, ESPECIALLY in the US, are rediculously/obscenely high at the moment, and I'm well aware that there are people below me in terms of living conditions who are probably even hungrier for those positions than myself.
Could you be a "top developer" without putting in the extra hours that the top developers do? Either because you love it or because you're making a strategic decision to do so?
All other things being equal, I don't think so.
And if you DO, i think its probably because its due to being in a social structure that pretty much thumbs its nose at even trying to live up to the ideal of a meritocracy...
This blog post is obviously born out of frustration. I'd be interested in learning the circumstances.
At a certain stage in life it's indeed frustrating that employers try to get more working hours out of you than they are paying for, and younger professionals seem to be more willing and able to. I'd like to offer OP the view that these places aren't generally good places to work anyway.
Don't agree with some other commentors who lightly throw big words like racism around.
I disagree. If you want to be the best and be highly successful, then you have to work hard. If you don't, someone else will.
There are plenty of companies and positions where you can have a great work/life balance, but if you want to be the best, just as in everything else in life, you have to work harder than everybody else.
I take great pride in the quality of my work. That's exactly why I stop working when I go home. That's why I demand an excellent work-life balance from my employers.
If what being "the best" gets you is no life outside of work, then I'd rather be bad at my craft and retain the ability to pursue multiple interests.
I have the same sentiment: I take great pride in what I do, and I love doing programming. For the same reason, I also want a work-life balance.
But for me, it's not about actually having a life. It's about having time for my own side projects, because I want to grow both professionally (where the project may have code that I can't talk about) and personally (where I can completely gush about everything that I've done).
How so? If I'm 'the best' surely I can do my thang quicker and be off to some enriching theatre production while everyone else is still scratching their heads.
It's those poor non best suckers who have to work hard to keep up. It's an odd definition of a winning state that includes "must work harder than everyone else"
I used to code 24/7, and have "startup" side projects back in college, but 8 years later, and I like having a life outside of work. It also makes me fresher and more motivated when I come to work.
Seems to be a trend that those who have been programming for years actually program more sparingly. I was similar. Programming now is more of a tool than a burning passion. "I am programmer, destroyer of worlds", not "I am programmer, I make random shit all the time, at the cost of being a well rounded person"
Yeah it's absurd.
When I talk about this with my friends in other professions they hardly believe it.
None of the lawyers or editors consider writing open source contracts or publishing free magazines in their free time. And even if they do something like this - there was never a company that EXPECTED that at an interview. The last interviews I had there were more questions about mini pet projects than about my 10 years professional experience or my PhD thesis.
Of course, when I was 15 I loved to program all my free time after school.
Now I have wife, daughter, dog and being in front of a screen all day makes me very uncomfortable, no matter how much I like the subject.
I am now much more comfortable with "researchy" positions - in all those interviews, no one ever asked me about my github profile or if I like to "learn" the flavour of the day web framework in my free time (no, I don't...).
"Top developer" is really subjective and depends how to score them. AI? bioinformatics? embedded programming? web applications (frontend, backend)? compiler design? graphics rendering? simulations? games?
Then, top at which level... in your company? in your city? in your country? in the world?...
Weird article. Every top company I've heard of is more into balanced normal people than extreme people. Perhaps made more sense 20 years ago when I started getting into computer science and you saw recruitment adds eith topic like "Do you hate talking to people?"
The author seems to be very prejudiced against people who make different choices or are different demographic than them:
>>One could think that having kids or building a family is a choice. Even assuming this is true (it really isn't)
I am not one to take offense easily so I will just say this is plain stupid. I have chosen to not have kids nor build a family. It was something I was thinking about for many years and decided I will be happier that way. Most of my friends have chosen otherwise and I suspect most of them will be happier with their choices. How it's not a choice I don't know, it's one of the most ignorant things I've read recently.
>>Neglecting your partner and kids in order to build a pet project? Seriously? Is a pet project more valuable than seeing your kids grow or sharing your life with people you love?
It isn't. It doesn't change the fact though that people who don't value those things and spend more time coding/learning/experimenting are going to be better at programming with all other factors staying equal.
>>Destroying your social life, abandoning all your hobbies, quitting working out just to contribute to open-source? Will this make you happy in the long term?
No, it will make you not as good as people who do that though. (assuming they are equally disciplined and organized)
>>So what can we do?
Understand that you will not be elite and anything you do in life unless you dedicate your whole life to it. That's how it is. You don't need to be at the top to be very good, make tons of money, have fulfilling career and contribute a lot to projects you work on. There will always be people better and more productive than you because they have chosen to sacrifice other things you are mentioning like children, families, social life etc.
There are two different goals:
1)lead a happy balanced life
2)be one of the best at something
You can't have both, have some respect for people who has chosen differently than you. There is no need to throw insults like:
>>Who can afford to keep coding after an 8-hour work day of coding? Who doesn't get harassed in the open-source community? 20-year-old white guys with no responsibilities and/or with enough income to "buy" more free time (i.e: nannies, cleaners, good healthcare, a car to commute, etc.).
Or you know, people who prioritize contributing to open source over for example having kids. Have some respect, the world is a better place because of them.
I guess next time there will be complaining how you can't be an elite basketball player without dedicating your life to basketball or elite musician without practicing for hours to no end.
> I am not one to take offense easily so I will just say this is plain stupid. I have chosen to not have kids nor build a family. It was something I was thinking about for many years and decided I will happier that way. Most of my friends have chosen otherwise and I suspect most of them will be happier with their choices. How it's not a choice I don't know, it's one of the most ignorant things I've read recently.
Yep, it is weird to me why people tell me they have no choice to have kids; just 'do it'. You can reason about it and decide not to but 15 years after deciding we still get strange looks or whenever I am nice to a kid people still say: ahhh you see!? So I see that people who are pressured still do while really not into it however it is a choice.
"One could think that having kids or building a family is a choice. Even assuming this is true (it really isn't)"
What? Of course it's a choice.
And I'm sorry but, you can choose to leave programming at the office and be a perfectly good programmer but if you don't love it so much that you do it for fun as well then you are not going to be a master programmer. Just like a classical violinist who only practices a few hours a day is probably not going to be a virtuoso.
The best software engineer I know doesn't hold a degree in the sciences, has a family with 4 children, and spends little to no time out of the office writing code.
I don't know if I agree with your assertion. There is more to life than programming, and I think, if anything, you need some of that to become a great programmer.
Maybe the best programmer you know is not that great. I'm not disputing that you can have a life and be a good programmer. You must have a deeper level of commitment to be an outstanding programmer.
8-9 hours a day, 5 days a week, is not a "few hours a day".
You also might be surprised to find that most professional violinists don't practice more than 2-4 hours a day. Have a look around Google, you might be surprised.
At a certain point in any endeavor, you hit a point of diminishing returns. At that point, success becomes less about the logistics of getting enough practice in and more about the broader world. All arts exist in the broader world around them, programming even more so than most. You need to learn about that world.
Just like with the arts, a great great many things can be likened to code. Anything else you learn how to do well will also make you a better coder.
The author talks about open source as if someone is selflessly contributing their spare time for no real reason. Who does that? Whenever I work on open source, it's because I need something personally, and it doesn't exist unless I create it. It's like criticizing someone for spending all week at work, and then mowing their lawn or painting their house on a saturday. (Although I find programming to be 100x more fun.) If it's not fun, you're not getting paid, you're not doing it for yourself, then you really don't need do it. Unless you're doing it for clout or your portfolio, I guess.
This article is a bit lopsided. I work for 8 hours and I work on open source projects when I have the time. This means that it is no more than 5-6 hours per week on average. I don't feel that I don't have a life after spending a Saturday morning with some OSS contribution. Life is not black and white. If you contribute or have your own projects you don't have to work on them all day. Several hours per week will quickly add up! The same stands for education. I am very concerned by work-life balance and few hours per week is not much. I can also read about the trends or some tech book when I travel or commute.
I started my own company 5 years ago to have a life outside of coding.
The business depends on code, but I can choose when to go on vacation and work from home or at the office when I need to.
It also helps that my wife runs the company with me.
I finally made the decision to quit when my last boss called an emergency meeting on new years eve over webex, because she wanted to go to a party and also get our product released. She also is the one that caused our product to be delayed by at least a month due to her inability to manage the project.
> This blogging platform (Ghost) doesn't allow comments, but I'd love to hear your suggestions as well. Just give me a shout at @ladybenko!
Is it really a blogging platform if it doesn't allow comments? Commenting to me is a prerequisite for something being a blog. Absent the possibility for interaction, it's not a blog, it's just a website.
Optimization is possible in most programmers schedule, true. But I still believe it's necessary to spend 30-60 hours a week for 11 months a year to successfully increase your skill. You can't cut off these either, if you want to be good. And your skill is bad at bargaining. You can't tell it "Listen to me skill, I have that other hobby as well. Give me a break!" Skill doesn't work that way.
At some point the real skill becomes to develop a reasonable solution with reasonable effort. You don't have to keep chasing the latest cool frameworks forever. It's good to know what the trends are but you can safely skip many of them.
You are right, that if it is about putting bread on the plate of your children reasonable results are enough and for that reasonable effort is enough. I assume you don't plan on getting to the top with that, though. That's what the article and title limit the discussion to though. And that's what I'm arguing against. You can't be at the top with "reasonable" effort.
And in case your first sentence means that you have given up finding ways to multiply or exponentiate your skills I would like to give you a little new hope. It's true that this kind of skill increase can't be found in new frameworks and tools. The reason is that it was already found in the 60s and 70s. Look for unix, look for vim, look for lisp (some may argue to add git to that list). Even if you don't use them in your daily life. Studying them will increase your skill to levels you cannot imagine.
I think you get to the top with reasonable effort because it's the shortest path to success. The best programmers I know don't work 80 hours per week. They work 40 or less but each of them with purpose. They don't do team building or play foosball. They don't attend endless meetings.
Programming doesn't change much, frameworks might. Maybe for a college grad, they'll need to do that. But for someone who's been programming since they were young, additional time is not going to do much.
Reaching a point of competency even in playing Mozart on a violin takes a lot of time, and that doesn't change a bit for the next decade. Most people don't reach a level competency in their whole career, because they don't put in enough effort.
Additionally have you spent some time without coding? Because I was upgraded to project manager I haven't actively coded in 4 months. I feel I'm significantly slower now. You forget the small details. Like yesterday I had to think about how to call "git mergetool". That meant my brain didn't think about why I would need to solve a merge conflict instead of doing something else (like ignoring one branch, or writing feedback on the pull request) but instead I've spent the time thinking about how to type the command. That doesn't directly slow you down, but that decreases your output significantly.
We are talking "top developers", not average developers right? Yes most people think of themselves they are "top developers" but in truth most are "average" which is (arguably) less than "mediocre". If you are fine being "average" the whole discussion thread doesn't apply to you and I agree with you that slacking off for a few years doesn't change that status a lot.
Any sport is both mentally and physically exhausting, and it only gets more strenuous as you reach the higher levels. Nobody can keep this up all day, every day, for their entire working life; people who try flame out early and don't make it much of anywhere.
Instead, the goal of the top players is to train as much as possible today without sacrificing their ability to continue training tomorrow. Usually, this is less time than an office job requires (but more strenuous). The rest of their time is spent in "recovery," which basically means whatever they want to do as long as it's not too taxing.
The defining feature isn't spending their entire life on the sport, it's giving it priority: the rest of their life is scheduled around their training needs instead of scheduling training around their life.
[1] I've been on sabbatical for two months at a tennis academy; some of the kids here will undoubtedly make it all the way to the pro circuit.