Top developers can have a life outside coding
belenalbeza.com
belenalbeza.com
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.
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.
Enjoy!
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...
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
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.
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.
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.
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.
- 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
- 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.
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.
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.
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
Good old racism and man hate is doing just fine.
It has some trade-offs, we dont have a car or macbooks, but it works just fine.
That will end soon :)
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.
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 :)
We both work, originally full time, but now 4 days a week.
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.
|
|||
||||||
||||||||||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.
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.
The overwhelming majority of coding work (at whatever level, top or bottom) is carried out 9-5 in offices.
Also "top developer" != "open source developer".
You require the same amount of in-office management.
Every time that management decided as you say, they got something else as delivery.
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 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.
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's all about perception and influence.
*Ninja Edited for grammar.
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.
Out of curiosity, what is the average salary for software developers in Romania?
minimum wage $300 average wage $900 (official statistics for 2016 Q1) fresh graduate developer $1000 3-5 years of experience $2000-$3000
Can't speak for top engineers, but it would be surprising if more than a couple earns over $6000, it flats out pretty fast.
This is quite accurate: http://www.numbeo.com/cost-of-living/compare_cities.jsp?coun...
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.
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.
I wasn't active in the profession back then; I have no idea, and that's why I asked. My question was not rhetorical.
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 :)
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?
On the contrary. On those jobs the developer will be a milk cow, plus under constant pressure and stress.
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.
>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".
> 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...
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!
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.
Yeah, stopped reading at this point. Your "intersectional social justice theory" is just casual sexism and racism to me.
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.
#Edit. Formatting.
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.
This is exactly my point, thank you.
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.
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.
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.
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.
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.
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.
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.
But you seem to have voting backup here, which, given your opinions, looks a bit odd.
I wouldn't want you to be my recruiter with the attitude you're showing here in this open forum...
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.
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?
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.
web/mobile from only 5 years ago was so different from what we have now.
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.
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?
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.
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.
My sides went into orbit after reading that.
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?
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. "
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?
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.
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?
[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.]
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 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).
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.
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.
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)
http://healthland.time.com/2013/03/26/fewer-hours-for-doctor...
I seem to recall surgery being an exception in that shorter shifts lead to more patients dying but I can't find anything quickly.
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.
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.
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?
I'd also think musician NDAs are in place while the project is not out, while developer one are usually longer
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.
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.
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.
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'.
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).
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. :)
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.
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.
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...
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.
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.
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.
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.
"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.
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.)
But yeah, what she's talking about is not everyone's experience, fortunately :)
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.
That's what he's saying
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".
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
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.
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.
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.
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.
Again this is making me think I should write my piece on programming while suffering chronic fatigue.
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.
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
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...
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.
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.
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.
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.
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.
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.
What I meant is that if you want to be the best in your field or you want your startup to succeed, then you do have to sacrifice some other things.
(The article mentioned "Top", not just good)
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).
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"
For what values of 'industry'? I mean, I totally agree that if this is your local view then you are in a bad place but IME this is far from universal.
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...).
>>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.
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.
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.
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.
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.
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 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.
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.
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.
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.
No, but people with this trait will be easier to manipulate into staying longer hours for no extra pay.