This is always worrying to see when set as an expectation. I mean, I enjoy coding. My employer gets my 40-ish hours of attention. But I just can't seem to get into after-hours or weekend coding side projects.
I have ideas to explore (Nothing I'd ever want to turn into a business, perish the thought), but I just... can't find the motivation to spend more hours doing what I already spend about a third of my life doing. I enjoy reading articles and the like, sure, but if I wanted to work on side projects, I'd need to take extended time away from work to "reset" and get into something.
Does this make me destined to fall behind? I'm hoping not, but given how many people talk about needing one's job to be their all-consuming passion, to be something they spend spare time and weekends on... I'm not always hopeful.
I was the same way. I spent my college years poring over HN, /r/programming, various blogs and articles. An older software engineer I knew was always surprised at how many things I knew and had opinions about, even though I was inexperienced. But I never actually wrote up a "complete" project in my own time, not a single one, I couldn't stick to anything. And I kept worrying that it would make me less employable. Yet I got my offer at [large, popular software company] before I graduated, only on my merits.
I think the best that can be expected is that you do your work, do it well, and never stop growing. You don't have to dump time into coding outside of work, just don't get complacent. That's assuming you don't have crappy leadership, in which case you may want to consider a different team or company.
As an example: I know a guy who's about to become a 3rd level developer at [large, popular software company] at the age of 28, which is a pretty big deal from a career development perspective. I don't think he's touched a line of code, or a single technical article, outside of work in the 5 years he's been here. He regularly works 25-30 hour weeks. He's just smart, puts out good projects, and is productive when he needs to be.
Someone asked on reddit a couple of weeks back why, when they sit with a coding problem for 4 hours at work the solution suddenly comes to them in 5 minutes the next day.
I think your colleague's 30 hour week might be allowing time for him to think about his work without being at a desk doing his work. In other words, when he isn't being forced to make a show of presence he is working through solutions and processes in his mind.
I work where we fill out time sheets every day detailing what we worked on hour by hour (in part and in fairness also for billing reasons). It is counterproductive as I constantly stress about every minute I use on a task and worry I am taking too long. The results I see are those of programmers trying to please project managers and billing accounts, not good products that are optimized. Nobody seems to have time make something good.
The 30 hour guy probably isn't much smarter than the rest of us, he might just have the freedom to create with a relaxed mind. Stress apparently blocks creativity.
I left a company with great work/life balance but rather average or even low salary after 2 1/2 years for a startup but after a month into the job they introduced those stupid stopwatch JIRA plugins to measure time spent on tickets plus time sheets.
I know not everyone can maybe afford to do this but this is something I'm never going to put up with and I left after only 3 months purely out of frustration without even having a new gig. (Was quite suprised to be approached immediately by a subsidiary of a well known online auction house, where I'm still working for 2 years now.)
If you don't have a family (wife + kids) be bold and don't put up with such inhuman conditions. Developers are high in demand and this is the time to use the opportunity.
Kudos to you. If all developers acted this way, we'd have a lot less abuse.
I doubt any sane developer would come up with the idea of a stopwatch plugin on programming tasks. But I know some PMs who would. It is scary how being well-spoken and technically oblivious leads people to success in our industry.
No, asking people to log time is not abuse. Perhaps it's counter-productive (but even that's debatable as it depends on a lot of things). But it most definitely is not abuse.
Abuse is having the shit kicked out of you for answering back. Or being locked in a room for 48 hours without food or drink because you made a mistake. Or having your passport taken away and being forced to work for 18 hour days, 7 days per week, with no holiday and no pay.
All these things are happening in our world today, and equating them with programmers having to keep timesheets is ridiculous. It makes us sound like a bunch of spoiled babies who cry when we aren't allowed to play all day. So please use a different word than 'abuse' to describe something you prefer not to do at work.
Meh, if you want to go to the extremes there is no limit. I agree with what you said but it's completely out of context and I don't see how it is related to the topic.
In my eyes, it's relative to you or the situation in which you are in. For me personally it felt a lot like abuse and utter lack of trust to resolve using time sheets for a permanent position (not talking about freelancers and contractors).
Also why do you think that we are spoiled? I'm so fed up of people making software development look like a piece of cake and so easy. I tried to help some of my friends start with coding but after couple days they were quite overwhelmed and thought it was not so straightforward as imagined or as it looks to be. I'm also not talking about creating a hello world HTML document.
I'm definitely not a rock star programmer but I try to be solid one with hands-on mindset. I have 5 1/2 years experience working as a front end developer and there is still so much to learn and to improve on. Software development (especially web) is a field where you need to stay up to date and keen. We might not be exhausted physically but it's much harder to recharge and relax your mind.
This is why we shouldn't just put up with everything (timesheets is only one example of many) for the sake of having a job at all (because there are so many unemployed people right?). There are people who want to play safe and I'm fine with that but I learned that "no risk no fun" is true.
Update:
I want to add that I'm always grateful for what I have and don't take anything for granted. However I also know that I don't get anything for free unless you work hard for it.
I think his point is that just because an employer wants to log your time, and see how you're spending your time while at work, doesn't mean it's abuse. If they're paying you for your time, it's perfectly reasonable for them to see how you're spending your time.
Now, whether you choose to put up with it or leave, that's a different question. Given a choice, most people would choose an employer who gives them more latitude, as opposed to one who is monitoring them that closely. But that's an argument based on practicality, not morality.
The overall point is that there isn't a 1:1 correlation between time and productivity in this industry as there is in, say, working a cash register.
I might spend a couple of hours trying to debug something screwy with my dev environment, or googling around and thinking about what the solution to a problem, that doesn't create more tech debt, should look like. I might spend time dealing with feedback in code review, some of which may be beyond the scope of the story or not immediately perceptible by a stakeholder, but it's work that needs to be done nonetheless. Project managers are not developers for the most part, so they have to trust me on that.
When you hire someone to do tasks that you could do yourself, then asking them to log time is reasonable since you know what needs to be done and what the timeframe should look like. Asking a highly skilled employee such as a software developer to log time is an insult to their judgment and a waste of their (and your) time. You can't gauge my productivity from a time log.
This quibbling over the term 'abuse', like we should all just be thankful we're not sex slaves or PHP devs and leave it at that, is completely irrelevant. Fine, it's not abuse. It's just antagonistically treating your employees like untrustworthy delinquents. Is that better?
You know there were grown up programmers in the computer industry before we got the MBA-types involved as PMs. Frankly, I'll be very happy to keep track of minutes I spend coding if all PMs in the org had to take a basic programming competency test. Lets say something easy like inverting a linked-list (with pointers yo) or b-tree deletion. I think some PMs are "tech clueless" but have worked their way up because they are effective at bullying. This is not true of very PM but certainly some PMs.
There are legal definitions in the EU and US (and probably most countries) for what counts as 'workplace abuse'. Being asked to fill out timesheets as a general company policy doesn't satisfy any of them, so in that case the word 'abuse' is inappropriate.
It's worth pointing out that a lot real and extremely serious abuse is not limited to third-world countries. For example, the USA has an estimated 60,000 slaves.
Implicit to "legal definitions" is that those definition are used when legal action is taken, ie. when the abuse has reached a certain, actionable level at which the authorities need to step in.
This HN discussion is not framed in a legal context, so not satisfying a legal definition of "workplace abuse" doesn't mean the word is being used inappropriately.
OPINION: If your definition of a "grown up" is to let people ruin your work process then meh, that's your choice. Don't try to impose it on others. Keep your disliking of what terms people use for your local beer pub and not on HN. Deal?
ON TOPIC: I'd definitely call a timesheet "a workspace abuse", yes. Most of the programming is a very creative work. Do you pester a designer for a complex image for a PR campaign? Do you go to him/her on the top of every hour and ask "what's up, you done yet"? Do you check a building's architect monitor every hour?
I am currently having a subtle and a very hard-to-detect bug in an e-commerce shop I am maintaining. It leads to losing a few orders each day (out of 100+). The people I work for are wise enough to understand that pinpointing the cause of the bug is 90% of the work and yes, it may take days -- days during which I add more defensive coding on several places, increase logging statements, introduce several new integration tests, and what not.
If I was forced to use a timesheet in this situation I'd honestly wouldn't even know what to say in it on the top of every hour. I would strongly resemble the private detectives in those noir animations I guess. "Currently chasing clue X" -- "No wait, that's not it. Damn it, I am out of cigarettes. I must persevere!" -- "The owner of the bar knew nothing. Damn. Moving on."
Would you want that in timesheets if you were the manager? How would it help you?
The fact that there are others who have it much worse than you does not invalidate your grievances or limit the language you can use to speak to those grievances. If we start that kind of comparison, then I'd argue the people you describe have it pretty good, compared to people to Nazi concentration camps, who got shot dead (!) for giving their supervisor sound technical advice (assuming Schindler's List is an acceptable source of Nazi anecdotes).
The OP is talking about 'workplace abuse' which has a specific definition which, even in its less extreme forms, is much worse than being asked to keep timesheets.
Imo you are missing the bigger picture here by clinging on the meaning of the word "abuse" and the timesheet example. However, if you are happy keeping timesheets knock yourself out. For me this is a big issue and if you think it's okay then what's next? Video surveillance at your desk or maybe counting number of commits in git per day?
It is precisely the word that I object to. You can express like and dislike, and choose and reject employment based on those likes and dislikes, all you want.
But bandying around words like 'abuse' based on those likes and dislikes is akin to crying wolf when you see a pussy cat. It devalues its meaning for those cases where people are genuinely suffering and need help.
One of the biggest problems with estimation (a frequent HN topic) is not knowing how long it took to do something. If you don't know how long it typically takes you to do a task, how the hell can you estimate how long it will take to do a variation of that task?
Are you really saying that having to record timesheets counts as 'inhuman conditions'? That's the way I read your comment, sorry if it's not what you meant. But if it is what you meant, then I urge you to read about modern human slavery, domestic servitude, sex trafficking, etc, and reconsider.
Something is not 'abuse' just because you don't want to do it. Workplace abuse has a specific definition and being asked to keep time sheets does not meet it by a long way.
"freedom to create with a relaxed mind" -- as I read this I realised that's what I've been missing for so long, and is what I try (mostly without success) to make time for outside of work.
"Stress apparently blocks creativity" -- most certainly does.
>>> But I never actually wrote up a "complete" project in my own time, not a single one, I couldn't stick to anything. And I kept worrying that it would make me less employable.
Same here, and I know a bunch of other people like this as well. It's just a matter of perspective. When you read such forums and similar, you often read opinions and insights of people who are the top of the field. So it's easy to lose the perspective of where you stand compared with the rest of your class or some other cohort.
>>> He's just smart, puts out good projects, and is productive when he needs to be.
Smart is the key word here. More hours of work does not necessarily mean better work. It shouldn't be about working longer, it should be about working smarter.
At the same time, writing good code is only small part of his success, I guess. Managing to ship top quality products without hand holding, making sure you are productive without anyone breathing down your neck, are all important and not something articles will teach you (usually).
I don't know about you, but I become less productive the more I'm micromanaged.
The company I work for now has problems managing customer expectations and controlling scope creep, so naturally rather than address the real issues the PMs have decided it's easier to stick their noses in the CMMI manual and send the software development team straight to process improvement hell.
I've reached the point where my motivation is so low it takes me a week to complete a task I know I could have done in a couple of hours if I could just reach down and muster up a little bit of give-a-shiat.
I need to get out of this place, but I rather doubt any of the other major employers around here would be any better (I just interviewed at one that looked like it would be an even worse situation. They declined to make me an offer - the interviewer must have picked up on my shock/disgust when he described their development processes to me).
Now, my side projects are seeing more love than ever before, probably because I need an outlet for my creativity (which my employer is most definitely not providing). One thing age and experience has given me is the ability to see my own projects through to some level of completion (as complete as software can be). My younger years were full of half-completed projects :)
I'm working on something I hope to turn into a SaaS product, maybe that's the escape plan (If I'm really lucky).
Micromanagement is usually on the extreme end and is usually bad. However, hand holding, when the developer needs a variable level of managing and overseeing, is quite normal and usually reduces the variance of the produced work. You could say that micromanagement is the extreme form of hand holding.
And the truth is that most of the developers need that. Some can be assigned a relatively abstract problem and they find the solution (by finding who to talk to, etc). While some needs a fair share of requirements gathering etc done for them, or they struggle to convert a large milestone to reasonable small tasks. That's ok, you just need to recognize it handle accordingly.
>>> any of the other major employers around here would be any better
major as in employing a large number of employees? Sometimes you can find happiness in a company of a dozen employees :)
One of the best ways I found of actually getting to write "complete" code outside of the job is to combine it with another hobby or an activity.
RC, home automation, every other silly thing you can make or teaching/volunteering at various places that do coding tutoring (schools, community centers, or even your own kids or family) might help you with that.
That said it only works if you like it, if you already considering programming to be a hobby, it's ok not to.
Not every profession needs to be also a hobby, and you don't need to spend your free time on your profession to be good at it.
I know plenty of developers that don't like technology that much and pretty much dislike IT related stuff specifically, and I know plenty of developers that spend every weekend cloning some project from hack a day.
Both of these groups consist of good, lesser, and poor developers and so far I haven't really seen any substantial statistical proof that hobby programming enables you to become a better developer.
There could be extreme cases in which being a "super weekend hacker" gives you some advantage, especially if you are a single digit employee at startup and you need to hack everything together like crazy without worrying about the finer details, like documentation, maintainability, performance and all the other things that separate a hack job from a product, if your entire professional programming career is about flying solo and pushing out MVP/POC's then effectively one could say you are being paid for a hobby.
But if you are a developer at a large company with an established development life cycle and methodology the small hacks you pick up from your hobby would not really be relevant, hacking micro services on the newest SBC over the weekend won't necessarily help you work better as part of a team, won't necessarily help you write better documentation, and won't necessarily help you adhere to strict coding practices.
The smartest person I've ever worked with worked a 30h four-day week so he could spend more time with his family. Not so much a 10x programmer as a six sigma mathematician.
He built a video codec implementation by himself in 3 months.
> He built a video codec implementation by himself in 3 months.
At work? I can't even fathom a working environment where I could work on anything for 3 months (hell, even 3 days) without a panicking supervisor asking why it wasn't done yet and whether I could help out with this other thing that was a crisis and why can't we just buy something or better yet use an open source solution because we need results right now.
Small consultancy shop, everyone knows everyone else, panic-resistant directors, speculative project. Great place to work.
Plus of course a lot of trust that people who were known to do good work could be left alone to deliver it.
(Part of being a premium consultancy was setting reasonable expectations to the client and refusing to even offer a crap job at high speed. Takes a lot of faith in your standards and customer funnel to do that, though.)
I don't think coding side projects should be anything more than a hobby. Difference between coding for work and coding as a hobby is that with hobby you don't stress out yourself, but it relaxes you and makes you feel good.
If you take coding at home serious as you (presumably) do at work, like following deadlines, doing stuff you don't enjoy, stress yourself out, then it is a very unhealthy expectation.
Same. Probably that's why I usually abandon my side projects ;) well, at least I learn something new every time.
Just sometimes you need to get focused and finish some ugly small issue that prevents you from actually shipping. The feeling of shipping something that works usually beats it all at the end.
Probably not what people want to hear, but I think it's near impossible to complete a significant personal project while working a FT day job, let alone gain the inspiration for something unique and meaningful. If you're really passionate about pursuing your own projects, unless you are superhuman, I think you'll have to take time off work, or find something PT or flexible consulting hours.
I find it really hard to be passionate about personal projects at the same time as work projects. The moment I get excited about something at work, all of my personal stuff gets instantly shelved. Then, when work turns non-technical, all of a sudden I'm all fired up for my old projects.
I've seen this exact cycle multiple times with my job. I got into programming because I enjoy it and find it fulfilling. When I hit boring times at my job, I seek that fulfillment with side projects.
>The gamers weren’t just Softdisk guys anymore, they were, as they called
themselves, the IFD guys, co-owners of Ideas from the Deep. Softdisk, as a result, took on an even greater pallor. But it was a day job, a job they all needed since there was no real money coming in yet and no guarantee that it would come in at all. They decided, then, to continue working on titles for
Gamers Edge during the day while they churned out Commander Keen from the lake house at night.
>They became all the more efficient at "borrowing" the Softdisk computers. Every night after work they’d back their cars up to the office and load the machines. The next morning they’d come in early enough to bring the com-
puters back. They even got a little cocky about it. Though the machines were top of the line, they wanted some minor adjustments made..."
In my experience that is not true and I am really not superhuman. I am passionate about entrepreneurship and programming though.
Edit: Over time, 3 of my side projects allowed me to move country, take a 5 year 'sabbatical' (for me that mostly consisted of programming and repairing old 70-80s computers and developing new projects) and basically do whatever I like. If only for my 'main job' I would've not made that happen for a while (note; this was 8-9 years ago).
I just went to DisneyWorld and saw Walt Disney's 'Carousel of Progress' attraction, which is one of the oldest attractions there. It was basically about how awesome electricity is for automating so many of our chores in the household. Although it was supposed to allow more time for family and recreation, not work...
IMO, yes it does, but only behind a tiny sliver of developers. You can still have an excellent and rewarding (professionally and financially) without putting in the extra effort and without the "true calling" that some devs have (and many more blog about having).
If you don't have the passion to spend time on nights/weekends coding projects, don't do it. You'll still do OK. You probably won't do quite as well as someone who does, but excelling at work is only one aspect of a happy life. (I think it would be foolish to pretend though that someone else equally talented who has greater passion and puts in 50% more effort won't have better outcomes in their field over a large population study.)
I don't think it's about side projects. When I am on a good project the 40 hours for my employer are really interesting and i may spend more time at home reading up stuff because it makes sense. But it's hard to spend 40 hours a week with some dull, uninspiring work and then go home and be motivated do something cool. The dull work pretty much drains all energy out of you.
This has been a serious problem for me. At best it makes slogging through the workday much harder. At worst it sends me into a depressive tailspin where I feel like I am destroying my career.
I honestly believe that as long as you are always trying to improve and don't coast, you should be good. I do not do side projects after work, but do try to work on my coding skills, focus and discipline during the workday. 17 years and counting, and every single year I improve (some times only by a little bit, but it really adds up).
I wouldn't worry at all if I were you. You're incredibly lucky to enjoy your job, and life has so much more to offer than coding, including family and friends. Your lack of all-comsuming passion for coding could easily be your ticket to a better life.
I have pride in my work, but I'm not going to kill myself for the company.
I work a 35 hour week, and if you want more out of me, pay me. I'm good enough to be worth a wage, I'm not about to undermine my own health and the hiring market to satisfy some fad about over work.
Just look at the games industry. Overwork is endemic. The only way its sustainable is by creaming off a new layer of young star-eyed programmers each cycle.
In areas that are not as glamorous, its just not possible.
I do not derive my self worth by how many hours extra that I put in at work.
I want to believe that things are changing, because the truth is coming up more and more: you will be a developer, they will get a shload of money. You will do it for yourself, because it's an honor towards the company, a sort of loyalty. Seriously??? I remember in a previous company one manager had the courage to say that "they pay our bills". Thanks, man! I am just giving you my time, you know, not that I need it, seriously, I would love to give it to you for free. No.
Working overtime is a subtle lie that many people don't seem to see.
I see some colleagues working on Sunday until 11.30 PM because they have a presentation on Monday. Seriously? I am sorry, but no, it didn't work out, because you didn't give us enough time/because the communication wasn't clear/because I couldn't figure out how to solve this network issue before, which became a blocker/because I can't still figure out why the hell VPN doesn't work yet and you the IT guy is on vacation. If there are blockers, if there are issues, don't make them yours. I work overtime when seriously needed, but then I want that amount of time back - either as hours off or as more money. Otherwise, find a code monkey, they are cheap, don't like to think, and "work hard and have fun".
I'm very much the same way, except you can't pay me to work more that 37 hours a week. At this point I feel that I'm to old to care about whatever random deadline management set on a project. It's not that I don't care about deadlines, I do, but if it's unrealistic, I'm not going to stay late to help meet it.
No one is rewarding you for getting stress or burn out. It's true that management will often reward those who stay late and "put in the extra hours", but in the long run I don't see it being worth the strain on my mental health.
I am young, 20-something developer, but i already conciously slack off and don't give a shit at my job, doing just enough to not get noticed/fired.
How do I take the next step of working less hours? I would like to work at most 10 - 20 hours per week, but still retain my full-time, 40 hr/week payrate. Do you have any advice for me? Thank you.
Sorry, no. I'm in Denmark, pretty much any standard contract here will say 37 hours a week. I tried to have my contract changed to say 30 hours (and of cause having my salary reduced), that not something management really like.
I don't slack off, and I do care about my job. What I don't care about are deadlines set by random, or unwillingness to adjust deadline if issues show up along the way. I view it as a "I can be just as inflexible as management" sort of deal.
Of cause it helps that I'm not worried about losing my job. There's plenty of job for developers around here.
I think it varies by country: some have work cultures where working more is somehow seen as a good thing and then everyone gets very confused about why people take weeks off with medical leave due to stress.
I find a scenario where I work more than my 37 hours for free inconceivable. If the deadline was missed then the planner needs to plan better next time. Even if I'm paid I don't think I've ever exceeded 42 weekly hours in my life. Nothing is as important as a good work/life balance.
I guess it depends on what you consider "work". I have a job and they pay me to produce software, and I spend 40 or so hours a week producing software that somebody else sells and makes money off of. I love to read about programming, though, so when I'm not working, I may be reading programming books or learning new programming languages, but not ones that are in any way related to the work that I do for my employer, just things that I think are interesting - and I get to decide what I focus on, not my employer.
A lot of development work is boring, unglamorous stuff that pays the bills and can't be avoided. Passionate developers hate that.
I've had to intentionally recruit "boring" developers, who weren't passionate at all. They just get on and do their 9-to-5 because it's their job. Without their help, we'd have lost most of our A-players due to a lack of sufficiently interesting work.
Relatedly, there's a difference between being motivated and being disciplined. Passion and motivation are essential wherever innovation is required, but otherwise discipline is what gets the job done. Turns out, in any team larger than a handful of people, you need a mix both.
Sure, I remember one non-passionate developer got very upset when companies asked him for code samples. He said "f that, I have a life. When I go home I cook, or read, I don't write more code. Any code samples I have belong to the company where I coded them. I'm not a nerd that does open source projects." So yeah, there u go. People like that exist and are part of the workforce.
Or more absurdly: Do plumbers re-do their home drain piping as a hobby because of their passion for PVC? Do landscapers go home and trim hedges after hours for fun? Do doctors spend their off-ours doing minor surgery in order to have "remarkable careers"? Maybe some do, but it's not expected. Why is it that software practitioners are expected to always be coding in their free time and working on side projects?
Yes, but that's not concurrent with working a full-time paid position either. When the go to another country with a group like MSF that is basically their full-time job, paid or not.
> Why is it that software practitioners are expected to always be coding in their free time and working on side projects?
They aren't, and plenty of places don't expect and look for that; OTOH, there are enough in the field that do do that, and enough of a perception that is correlated to ability to deliver value, that places looking for the best often do use both doing that, and the evidence of the work done doing that, as a signal.
OTOH, if you want to get a boring, fairly low paying (compared to Silicon Valley tech-co standards) job as an internal enterprise developer at BigNonTechCo (or BigGov), you probably don't need to worry about it.
I think the key is that the correlation to ability is merely perceived. Has this ever been shown? Do people who code side projects in their free time actually tend to provide more value at work than people who don't? That would be interesting to find out.
Or project managing the oss projects us coders are expected to contribute too.
Seriously spend 2 hrs creating a simple program on github. use a timeless language like Java or C++. Then you can tick the I have a github box and that'll sort you for a few years.
Prior to interview push a bunch of commits backdated over the last 6 months.
> Prior to interview push a bunch of commits backdated over the last 6 months.
That's a bit dishonest, isn't it? If you'll lie to look more productive you'll ultimately lie on the job, and that makes you a liability, not an asset.
It's not a lie per se as you wouldn't make any claims in the cv etc. about how often you work on the project. Just here is my github url: xyz
I don't need to do this myself as I often have commits from tinkering and being a perfectionist. But for the time strapped it could be useful. Remember it's about impressions. You could do 1 min a day with commit for 60 days and that'll look better on github than a single.one hour session. Even if the code commited is ultimately the same
I guess I'm predisposed to be against such...how to put it nicely..."enhanced truths". The organization I work for considers honesty to be the most important aspect in an employee; you can be the very best at what you do but if you lie for any reason you're out the door.
It's far better to be honest right out of the gate, even if you think it reveals a flaw or deficiency, rather than found to be a liar in the future just because you wanted to look better for your interview.
> a programmer who claims to not be a nerd is self-deceived lol
You'd be surprised. Most of the industry is now very much dominated by "normals". That includes a lot of people showing up on conferences and hackatons - doing stuff for your work while after hours is not in any way "nerdy".
There is room for both the passionate and non-passionate developer.
Because passion doesn't necessarily equate to skill. Passion looks like an eagerness to be immersed in a topic and invest time in that topic. Some people work out of necessity and not necessarily passion (maybe just passion to make a living, pay the bills, and support their families).
What actually matters is that you:
- follow through with your promises and claims to your team or manager/boss/founder/yourself
- you leave things better than you found them
- you're reliable
If you adequately do those things, there is plenty of room for you, passion or no passion.
My dad was a fast jet pilot, I grew up on RAF bases watching jets fly overhead, as a scout I worked at air shows. It was all I wanted to do, but unfortunately I was too tall to make the entry requirements.
I'm 34 and still haven't really got past that. As a student I looked for job adverts for well paid positions and decided that I'd look to become a contract Java developer in London on an income that would put me in the top 1% in the UK. It took me 5 years and I didn't have to go to London. Many of my peers are still struggling to get a mortgage with some looking at 40 year terms. While I have one, I have the funds to pay it off. Now my family are financially secure I can start taking on fixed price work with more risk and more reward; building out a business and getting away from a cripplingly sedentary job is the next goal.
I think you need commitment (amongst other aspects) and passion is one vehicle to achieve that, I'd imagine a more rewarding one, but it's not the only one.
The best developers I've worked with are the ones who realize that while passion is helpful, it often fails you at the times when you need it most.
As an example, if I'm in the middle of a 3 a.m. debugging session because someone slipped a bug into production and customers are complaining and the company is losing money, I find that stone-cold professional determination is more reliable than passion.
I've worked with developers who has busy lives and families. They didn't do much programming outside of work, and they mostly worked 9-5. But they were so locked-in, determined, and professional while on the clock that they kicked ass and outperformed most of their colleagues. What programming they did do outside of the office was carefully chosen to help them keep up to date with the latest and greatest.
This isn't meant to knock passionate developers; I consider myself one of them. But given the opportunity in the future, I'd gladly work with a team of hyper-productive, focused, professional developers even if they don't have the 'passion' for programming that a lot of job postings seem to be looking for.
Passion doesn't even correlate with outside events OP lists.
Little point having a side project when your employer often asks you to sign a contract giving them ownership of all code inside or outside of work. I've walked away from job offers because they wouldn't strike this.
Where's the passion coming from in the 90 of 100 programming jobs that are programming payroll, fuel pump displays, stock systems and the 1,001 other not exciting, not full stack, not web dev role? OK, there's probably someone, somewhere, who can get passionate about fuel pump programming, but...
Also consider the employer's point of view. Unless junior code-monkey is needed, and even then, I would far rather see a well rounded individual with some non-IT to the fore. With at least a fighting chance of some social skills and some other interests than discover all free time is spent at the laptop working on other stuff. It can help when understanding client needs, or bring the idea from the model engineering or some other hobby to the task at hand.
As with almost everything, balance is the key. If, as a parent, you can't read one programming book a year, or spend a couple of weekends worth of time on a bit of tinkering there's something wrong. The reason a lot of parents end up no longer developers is they probably became senior enough that they're herding cats (staff) instead of bits.
So I'll stick with DHH and heavily favour work-life balance.
I'm super excited about programming "boring" stuff like the things you listed, because there are often huge usability improvements to be made and the people who use them express a tremendous amount of gratitude when they experience process automation. However, from what I can see, the bulk of them are in huge corporates and/or huge consultancies that work for them. Where are these 90% of jobs from your pov?
Well a good proportion are in those huge corporates or consultancies. An awful lot of people end up at those places, often straight from uni. Only later do they realise it's not usually the best place for your career or job satisfaction!
Often something vague buried in the general terms, such as "All software developed while an employee of company is owned by company". Usually in addition to a standard no-compete clause.
You have a passion for CRUD apps. You dream about CRUD in your sleep.
You attend (or give talks at!) CRUD conferences. Your bookshelf has at least five books on CRUD. You attend CRUDathons, and maybe have won first place in the most READs or most CREATEs category.
CRUD is a "hard problem". There are currently no RAD frameworks for simple CRUD apps — nothing like FoxPro or FileMaker of their heyday. The amounts of redundant labor being put in CRUD apps all over the world is insane — and no one seems to be doing anything about it.
So yes, I am mildly passionate about CRUD apps development, and it is not hard to imagine someone who is really passionate about it, coding next-gen rapid development environment for CRUD webapps weekend after weekend, and on its way to becoming yet another garden variety tech billionaire.
If some industry is "boring" and monotonous, it is ripe for disruption by something exciting. Truck driving. Filing taxes. Accounting. Paralegal. And yes, CRUD app development — will be automated nearly out of existence soon.
There are such systems.[1] The first one is very old - it was Viamall, which became Yahoo Store. That was the first system that let you build a complex web page remotely from a browser. Shopping cart, checkout, and payments were all included. It was written in LISP.
Agree with you here that CRUD is a surprisingly hard problem. I've been playing around with Rails however and find it really helps with getting past CRUD.
Rails tends to deal with CRUD not by raising the level of abstraction, but by automating the generation of code. That helps when every different CRUD route grows little hairs of difference, but is less than ideal if you have bigger refactorings to make.
Yes I see adds for startups wanting developers like "we're disrupting the plumbing business we need a developer that is prepared to sleep and eat 80 hour weeks for equity" and I think pass, who'd do that? There are very few startups I see that are doing something interesting, just CRUD business apps in some business vertical market
If you are interested in the craft, it's hard to imagine the interest ends when you cross the threshold of the workplace on your way home.
But how that interest is measured is more interesting. A friend of mine just creates things for his kids, another has small hacks around the home, another is playing with his music setup and creating his own pedals, I run lots of forums and the systems for them.
It doesn't have to be a "Where's your OSS contributions?", or a "Work outside of work".
You just cannot make someone deeply interested not take an interest outside of work.
The hard bit is how to detect this fundamental curiosity, because I agree strongly with others that it isn't "What are your side projects, where are your OSS contributions?". It may surface in many more subtle ways, mostly private noodling around, wondering how things work, and could they be made better.
The thing is... if you're interested in almost anything else, there's no particular expectation that you spend every possible waking hour doing it. Most hobbies, you spend maybe an hour or two a night on, if that, and spend the rest of your evenings doing something else.
If you get enough flexibility to explore things you're interested in within the context of work, it seems perfectly reasonable that 40 hours a week of that is enough.
> If you are interested in the craft, it's hard to imagine the interest ends when you cross the threshold of the workplace on your way home.
It's not that I'm not interested in programming but there are a lot of things that I'm FAR more interested in. My personal example: I love working out, I love computer games, I love snowboarding, I love geocaching and I adore playing with my car. It's extremely rare that I ever choose to dedicate my free time to developing software when I have something to do related to one of those things. I'm an experienced professional and consider myself to be pretty decent at it but when it comes to fun things I can do on my own time, it ranks abysmally low.
The result? Total amount of software development that I've done outside work hours in the past year: 0 and I can't imagine it ever changing.
edit: in fact the quickest way to make me stop reading a job ad is to write too much of those "we expect you to breathe xxx technology". No thanks, I will breathe it for exactly the 37 hours I'm paid for and not a single one more. Fortunately enterprise development is a nice fit for me :)
For an internal project over a certain size for a large enough organization you actually want people that will just do their thing, be happy, collect a pay check and carry on.
your über 10x coder won't make any difference in these environments.
Yeah, that über coder is likely to make things worse because spending 40+ hours a day in a typical software job makes you feel your brain is atrophying and doing some overly clever stuff suddenly becomes a good defense strategy.
It's simple: If you spend more than 40 hours per week at the office, then you are bad at your job.
There are only two reasons. You either aren't productive enough, which means you are bad at your core job, or you are taking on too much, which means you either lack the social skills to say No, the maturity to manage your time, or that you are fucking around too much at the office. Basically, anything more than 40 hours means that you are either bad at your job or at managing your job.
That said, coding outside of the office with no particular purpose in mind is a lot of fun. The whole "play" thing. It's important to keep it at the level of play, don't get too serious. Serious ruins the point of play.
Funny how most articles mention family as the only acceptable thing to do outside of work, Even, or especially when you're young, there's more to life than shaving milliseconds from that query code.
Working OT should not only be discouraged, but disallowed to force people into hobbies or things they care about - watching loads of TV or whatever they feel like as long as it's not homogenous.
We know it in biology and other science that too sterile ecosystem is not good - you need diversity and variety. If all you do is code or later code and have kids, then on a global scale it leads to a really dull society.
My wife is going to school to become a programmer. She is the exact opposite of me. She is passionate about programming and it's a job to her. She hates talking about code outside of working hours. Yet she's a good programmer that can get the job done and has a part time job while at school.
I believe there are many people like her in the industry and they are the ones who do the majority of the work.
I have a super passionate colleague. It's actually counter productive working with him because most of our energy goes into design debates and office politics and competition
By any measure I'm a workaholic and I love programming, but something feels off with the word "passion" in this context. I don't think you need to be passionate to be good at anything, what you need is motivation and practice. In the case of programming, I believe you need enough curiosity such that the dopamine hit you get from figuring something outweighs the incredible pain of getting to that point. Only by stacking up those gains over a period of years will you achieve competence. If you don't feel that satisfaction and drive to continue learning then you will definitely burn out before you are competent.
In other words, I believe there's an intrinsic quality one needs to become a good programmer, but it doesn't necessarily manifest as passion.
There is quite a bit of room for the non-passionate developer.
The fact of the matter is that there are a lot of companies out there doing CRUD web development and there are lots of jobs that only require mediocre skills.
And it turns out that the Tech shortage is so bad that those mediocre jobs still pay very good salaries.
This is why tech bootcamps are so successful. It is not that these bootcamps are able to pop out high skilled developers in 3 months that are better than Top Tier CS grads. Thats ridiculous.
They are so successful because it turns out that you don't really have to be that great of a programmer to do CRUD web dev at your average startup. But these startups still pay insanely good salaries when compared to the median US work wage.
It seems like you're implicitly asserting that non-passionate developers have 'mediocre' skills, and are best-suited for CRUD work. Do you mean to say that passion is a prerequisite of professional excellence in our field?
It also seems like you're saying that bootcamps only produce mediocre CRUD developers - who, presumably, are non-passionate? I know some (passionate, highly-skilled) bootcamp graduates who would be really quite insulted.
You might be a little more deliberate with your axioms.
What do you consider so lowly about CRUD work?
CRUD can get pretty sophisticated. In fact my guess is that the majority of applications are some sort of CRUD.
"passion: a strong feeling of enthusiasm or excitement for something or about doing something".
I am sure there is a place for people who are not passionate but I don't even want to work there. I have been programming computers for more than 30 years and it still excites me. I want to build great things and make the small things perfect. There is always a place for passion and always something interesting about everything.
Being excited and enthusiastic hasn't killed me yet.
It is not about huge hours. The world is full of dumbasses who work massive hours and write shit code.
I consider myself a passionate developer, and while strive to put myself into scenarios and projects where that is a plus, it's generally not the easiest route. People who care about what they're doing technically become bored or aggravated easily in their daily work. Being opinionated about things that are considered taboo is not always a good thing either, especially if that goes against common tropes or when you're on a buzzword-driven project. It's also easy to aggravate other passionate developers if there are different opinions. Passion-induced skepticism about a solution or tech stack can sometimes even be construed as incompetence.
If your passion is programming in general, chances are you have a broad experience background, which is not always perceived in a positive light by management. I recently had a meeting with a potential client who told me they would not hire me because they found it strange and implausible that someone would be able and willing to do both script language programming and also develop native modules in C.
I would say, all things being equal, non-passionate developers are very feasible career-wise and absolutely essential for many projects, because chances are they're going to be doing the brunt of the work.
Especially in a team, these players are important for follow through. I like to think of teams as RPG adventuring parties: you need people from all character classes to make it work. While all-mage or all-beserker parties can sometimes pull through, a balanced and diverse approach is a better generalized strategy. You want tanks and support characters.
When I started working, I lived with my parents to pay off student loan debt. I didn't have to go shopping or fix my house. I worked from 8 to 7, forgot to eat lunch sometimes, went to sleep at 8:30, and woke up at 4:30 to hit the gym before work. I'd code in my off time and go in on the weekends. Now, 3 years in, I have a house, a dog, a girlfriend, go to the grocery store and cook my own meals, try to work out some of the time, too many home improvement projects, a lawn to attend to, an old motorcycle I want to restore. That is, I now have everything I dreamed of and went to school for in the first place. But some part of me thinks that maybe I should be doing more, or I should be studying to try to work for one of the big software companies, or developing a portfolio. Part of me wants to, but mostly I just want a decent life, and maybe once I have that worked out I'll come back to software in my free time, because really, I do like it, maybe even a little too much, but right now I'd rather just try to get my shit together in the real world for once.
No, it does not - as evidenced by most of the industry. Being deeply interested actually hinders your ability to work in a lot of typical programming jobs, because it'll make you get bored out by the realities of business and pushing the same pointless CRUD or boilerplate JS code.
I feel that the reason startups like young people is that only fresh programmers can feel passionate about or impressed by this kind of work.
OK I see you are doing the HN thing and pedantically interpreting the words literally.
Programming well requires that you be interested in the topic. It is of course possible to program a computer without being very interested and many do.
Not trying to be pedantic here. You wrote, quote, "programming really requires that the programmer is deeply interested in doing it", and I disagree with that.
As for your clarification, it depends on how you understand the word "well". In general, mastering any skill requires interest in it, otherwise a person settles down on the minimum level that lets them do their job comfortably. But a point I think is important to highlight is that this minimum skill level is often "programming well" in the business context. No matter how many buzzwords companies put into their job offers, what most of the industry really wants is replaceable cogs that follow orders well and don't think too much. Being actually passionate about programming seems not only a bad proxy; having passion can be counterproductive at work.
True, but neither should be a job requirement. I don't need to be a domain expert in marketing to write a relatively simple SPA and API over your "big data" idea, and whether or not I know Go or ES6 (or any other "bleeding edge" technology) has extraordinarily little impact on my value to the organization.
I believe that people don't understand that when you work with a computer you are working with a machine that can work for you. Specially when you are a programmer.
That is the first mindset that I will implant in any young programmer, make the computer work harder, but learn to work less yourself.
Forget about working more hours, you will get older, you will get ill, specially if you work too hard. Start working today in making the machine do your work.
As a professional you should be able to compete working 40 hours a day easily. If not you are making something wrong. You need more skills and not just learning a new language(of the week).
I will study less programming and start studying other things like art(music o painting) or psychology(how humans work) because that way you can improve interfaces and your own tools.
In fact I had this education myself, and I can do lots of things that other people can't. For me is obvious how to make it and why but for the rest of the people is very hard. I realize now that is my education in those areas that people had not studied because in theory they are useless for the technical work.
When I see programmers that only know about programming I see how fast they dig their own grave, just working too much. Maintenance goes up over time and they could barely sustain their own code. They can't progress as they are stuck with old code maintenance. The code gets too complex to understand just using text alone.
Quite interesting they only develop visual tools and test when asked and for non programmers. I see it as people not wanting to use screwdrivers because they have their nails or teeth, but technically able to do it for others.
They ignore how to make great documentation,structure the code(to constantly reduce complexity) or how to communicate graphically in order to make tools that make their life easier and life gets harder and harder for them.
I am training right now people and I teach them something as simple as using (Dear) IMGUI over their own program to visually control their own code and memory. After a month or so they start getting it on a big AHA!! moment why they were so much unproductive before.
Would it be fair to say that we expect people to really like solving problems, and implementing the solutions, rather than being passionate about coding?
I really, REALLY, enjoy solving problems that will make people's lives easier and while implementing the solutions will frequently get the feeling it's not the right way to code it or it's not the most elegant way, and will devote a sane amount of time trying to make it better (after making it work), which usually ends up with the application of the SOLID principles (fun fact, there are more than the 5 letters).
However, ignoring the rare events where a problem consumes me and makes me go almost a day without eating properly (relax, I drink a lot of tea/infusions and I'm not exactly thin, also not obese) just wanting to make it work and feeling energised, I too don't feel incredibly motivated to put time into coding after work.
After work I usually read about current affairs (politics, economy, science), read some pages of a book, play a game and binge watch something on a streaming service. Not the first time the solution to a problem comes to me when I'm almost falling asleep, or sometimes when I wake up in the middle of the night.
Guess people are different, which doesn't mean people that aren't always demonstrating passion are incompetent or will provide worse results. Do I dare to say they will be the most consistent in the long run, though a mix of these types of people will probably be the best combination, as they will support and learn from each other?
So I had this discussion in another group today, and I guess one point that no one brought here is the fact that some people/managers/companies faces software engineering as an art.
Under this point of view, we should compare software engineering with painters, musicians, writers. Isn't it expected from this guys to "breath" their areas even when they are "not working"?
I'm not saying that I agree with that point of view. Just adding another point of view to the discussion.
> As my Aïkido professor says, the more you practice, the better you get …
Oh, sure, because every Aikido practicioner who has practiced the same number of hours has the same ranking. (That's sarcasm, btw...)
> Studies have repeatedly demonstrated that 40h per week is the most productive work load [...] But then, how do passionate people manage to remain productive when working more than 40 hours per week ?
I don't know what studies you're quoting, but this just makes no sense. For the same work output over longer time, you will have more productivity. The trick is keeping up the pace. At the same time, there is absolutely no evidence that "passionate" programmers are more productive for the same amount of time than
"non-passionate" programmers.
And yes, you need time out of the box to make out-of-the-box solutions. Archimedes' bathtub, Newton's apple, the Apple Computer's fonts, ...... you really have to get the hell out of the office once in a while.
I dunno. Enjoying programming is not even on the same planet as having a passion for it. I have a genuine passion for programming. I do it in my spare time, because I fucking love programming. My employer gets forty hours a week. More, very occasionally, you know, when there are fires or whatever. But I spend some of my spare time programming that I would otherwise devote to personal relationships, or watching cat videos, or whatever everybody else does. There is a mountain of difference between the programming that happens at work, and the programming you do in your spare time because you are passionate about programming. I am 100% confident after twenty years in the industry that if you aren't taking some amount of your spare time to write code for yourself, you aren't really passionate about programming. End of story. Nobody says you need to blow your weekends and stay up all night behind your computer. But if you are clocking out at 5pm and never touching your IDE until 8am the next morning, you just aren't passionate about programming. And if you used to spend some personal time programming out of passion, and you don't anymore, consider that you might have lost the passion you once had. That happens, you know. You've just become passionate about your kids these days, instead. And is that wrong? No. But it's not wrong either that employers are rewarding people who are genuinely passionate about programming. Can it be an expectation? Sure! Why not? Go work for BigCorp or whatever, if the position here requires passion for programming. But think for a minute that every company that says they only hire passionate programmers also says they only hire 10x programmers. We all know that's not true. So if you enjoy programming, but you aren't really passionate about programming, there's nothing stopping you from telling people in an interview that you've got "passion" for programming. Might as well tell them you're "10x for sure, bro". They won't know the difference anyways.
Absolutely. You might be more interested in solving real world problems and hence you learnt programming. You might not be passionate about programming, but he tools it provides to solve problems. It's like using Microsoft Excel, I am not passionate about it but use it extensively to solve problems I am passionate about.
> that might also be the moment in your life when you become a parent
> That is when things get tricky. Neither can you jump ship for the next cool and risky startup where you’ll do great things, nor can you find enough time moonlighting to improve your skills
I have opposite experience. Just before becoming parent, I quit my cubicle job. I started 'cool risky opensource startup', to be at home with a child.
9-5 had lot of overhead (socializing, commute, babysitter...). Now I can organize my time better, work longer and do more work, while spending more time with my kid.
How about spending the first 40 hours of work with passion? There seems to be this belief that workplaces have to be demotivating and therefore all learning has to happen outside of work.
banks and insurance company IT departments are littered with non-passionate devs. They probably started bright eyed and bushy tailed, but then they had to maintain 30yr old systems and make fixes for patches that fixed another patch. New projects and passion come together. you dont find any passion in maintenance.
Counterexample: I was more passionate about my last maintenance job, where I could shape the system through slow, but steady refactoring, compared to my current job, where I mostly string together buzzword-worthy components.
I think that one should only spend 36-40 hours a week on work, but one should also spend plenty of time outside of that honing one's craft. I think that neatly squares the circle of burnout vs. getting to 10,000 hours.
How can you be passionate about your work when the company you work for is pushing product that are uninspiring and you feel every day the breath of management to deliver something that dull thing?
Look at team fit first (If you're gonna spend at least 30% of your time with them, they better be pleasant to work with) and then their future potential (based on their past experience)
A passionate programmer should work overtime - just not for their employer. My overtime goes on my own projects only - why put overtime into something you don't own?
"The great majority of employees are quite enthusiastic when they start a new job. But in about 85 percent of companies, our research finds, employees' morale sharply declines after their first six months—and continues to deteriorate for years afterward. That finding is based on surveys of about 1.2 million employees at 52 primarily Fortune 1000 companies from 2001 through 2004, conducted by Sirota Survey Intelligence (Purchase, New York)."
Seems like a large sample. I don't see how an employee who happens to be a developer would somehow be different.
I am pretty sure there are many accountants/writers/designers/brick layers who are passionate about their jobs, and many who aren't.
I have ideas to explore (Nothing I'd ever want to turn into a business, perish the thought), but I just... can't find the motivation to spend more hours doing what I already spend about a third of my life doing. I enjoy reading articles and the like, sure, but if I wanted to work on side projects, I'd need to take extended time away from work to "reset" and get into something.
Does this make me destined to fall behind? I'm hoping not, but given how many people talk about needing one's job to be their all-consuming passion, to be something they spend spare time and weekends on... I'm not always hopeful.