19 ms·
There is a dirty secret that nobody talks about and the real reason that companies want programmers in the office. Companies want their top performers in the o
by humbleMouse 10y ago
There is a dirty secret that nobody talks about and the real reason that companies want programmers in the office.
Companies want their top performers in the office so they can serve as trainers/mentors/teachers to the new college kids and the incompetent older people they hire.
I think this is the real reason companies crack down on working from home. It's infuriating as a top performer - I just want to get my assigned work done and leave it at that. I don't want to teach all your shitty college grads how to actually code.
edit: I'm not against mentoring people and helping build teamwork, knowledge sharing, etc. I'm just saying that an all out ban on WFH makes me feel like I am sitting in an open office all day doing other people's assigned work.
I actually am very social and enjoy teaching and helping people. I just wish it wasn't one extreme or the other - I can still mentor/knowledge share with tools like WebEx.
edit2: I am a contractor who was recently banned from WFH. We used to have a very lax WFH policy and it was great. Now I'm banned from WFH completely. The article was discussing the merits of WFH policies, which I am commenting on.
- umanwizard 10y agoIf you really are a top performer, a big part of the justification for your high pay is because you multiply your impact by mentoring more junior employees.
- humbleMouse 10y agoI respectfully disagree. The justification for my high pay is because I integrate complex systems with shitty vendor web service api's and automate the transmission of sensitive data. The work I am doing has a huge impact on profitability of my company - much more than the joke of a 6 figure rate they are paying to keep me around. I avoid being a fulltime employee because I don't want to have some unwritten commitment/fake loyalty to the company I am working for. I am a contract employee - I am here to get the work done you assign me. If you ban me from WFH, it's an insult to my professionalism and work ethic.
- John23832 10y agoNobody wants your unwavering loyalty... mentorship is a part of any job. From bagging at your local grocery store, to the CEO of a Fortune 500. No offense, but it just sounds like you don't really like being around/interacting with people. Theres not necessarily anything wrong with that, but it's not really conducive to long term success... whether that success be in your job, or life in general.
- la6470 10y agoNo mentoring is not part of the job or it is depends on the
- lovich 10y agoNot that I agree with humbleMouse ,as I view mentoring juniors as something I should pass on for having been mentored when I was a junior, but there are lots of companies I've interviewed for that do want unwavering loyalty. Ones that view <5 years at a job as job hopping even when they give 0% raises every year
- jwilliams 10y agoThen take a job that has a strong remote policy? Each company has different priorities. Some value face to face and direct team interaction. Others flexibility. Find one that suits your values.
- rguzman 10y ago> The justification for my high pay is because I integrate complex systems with shitty vendor web service api's and automate the transmission of sensitive data. The work I am doing has a huge impact on profitability of my company - much more than the joke of a 6 figure rate they are paying to keep me around. be that as it may, mentoring, helping others, and setting examples are high-leverage. you may become 10x more valuable if you do your job while being effective at those. these things are only at odds with your engineering work in that they take time, but a highly skilled professional knows how to manage their time to maximize impact. they are also not at odds with working outside of the office -- there are many ways to communicate, you can be at the office only some times, etc.
- pjc50 10y agoIndeed. I've been interviewing candidates for "Senior Developer" and mentoring is in the job spec and list of questions we consider when evaluating candidates. If someone gets hired with "mentoring" in their job description I don't think it's reasonable for them to expect to do none of it. Now, if their performance metrics don't account for this, that might be unreasonable .. (C++ in Edinburgh, if you happen to be looking for a job)
- laythea 10y agoC/C++ amongst others, 10+ years, available immediately! (Seriously)
- pjc50 10y agoWas trying to work out how to give you the info without either of us posting personal information in the absence of a PM system AND the job is erroneously not listed on our website. Sigh. Probably easiest to phone the number on http://www.zonal.co.uk/zonal_careers/ http://www.zonal.co.uk/zonal_careers/ and ask about the C++ job in Research&Development at Edinburgh.
- laythea 10y agoThanks, will do.
- droopyEyelids 10y agoIf thats true, it should be an explicit part of a job description. Not an implicit expectation.
- ebola1717 10y agoAt most big companies with a formal title ladder, this is an explicit criteria for being a "senior" engineer.
- hamandcheese 10y agoI work at a 100% remote company and I have no trouble getting the mentorship I desire/need from more experienced folks. Maybe the key is 100% remote though. I hear remote sucks if it's not ingrained in a companies communication patterns.
- pkaye 10y agoHow do you handle discussing complex code, data structures and such concepts over online? In such cases, I find that being in the same room and using a white board makes it easy to communicate across. Maybe some programming domains that type of issue if less common?
- roughcoat 10y agoSome kind of screen sharing app with Krita = virtual whiteboard. You have a lot more room than a real whiteboard offers, since Krita has a "pseudo-infinite" canvas, so you don't need to erase things. And you can save the file for reference, or to send it other people.
- Const-me 10y agoSometimes (not too often) I do such things remotely. In my case, voice call + screen sharing works OK. On the screen sharing I can use whatever software I find adequate, be it Word, Visio, Paint.net, balsamic mockups, etc. As a side effect, we can continue working on those documents/diagrams/whatever after the discussion, e.g. include it in the documentation. Much harder to achieve with a white board as someone needs to digitize those drawing. In my experience working offline with whiteboards, no one actually doing that. In the best case, a digital photo is kept somewhere no one will be looking, in the worst case the board is just wiped clean.
- hamandcheese 10y agoIn some cases people literally point their camera at a whiteboard!
- pklausler 10y ago
- HenryBemis 10y agoIf the scope of your work is to "just code" then fair point. On a previous job I was supposed to: a) do my thing, b) teach people to learn to do my thing.. Lync worked miracles doing that and we could all WFH while doing the (b) (I still dislike the "Skype for biz..." name)
- Nursie 10y agoHow is that a dirty secret? Helping build the team, sharing your knowledge and expertise, it's all part of your work. Odd attitude. If you purely want technical tasks, go freelance. Of course then you need to spend time getting business so...
- deleted 10y ago[deleted]
- finder83 10y agoMaybe still not a secret, but the dirty part in some companies is that if there are layoffs, they'll lay off the people who are paid the highest and keep the people that they trained.
- CydeWeys 10y agoStill though, treating all junior developers as competition and your potential replacements, and thus refusing to help them, is shooting yourself in the foot. On the rare chance that you do get laid off, you can always find a new job, but what's much more likely is that a pattern of good mentorship will help you to advance in your career.
- Nursie 10y agoPlus those juniors might end up being part of your network next time around!
- CydeWeys 10y agoAnd having good peer reviews is helpful for performance reviews and promotion anyway. If everyone you've ever worked with hates you because you go out of your way to not ever be helpful to anyone, your career trajectory is going to be terrible. Working well with others, which includes enabling other members of the team to be maximally productive, is hugely important.
- eagsalazar2 10y ago
- John23832 10y agoI get what you're saying, it sucks training the new guy. It is however, the sign of a good/great programmer/performer to be able to train other people. Also, frankly, it just has to be done. Companies don't want to lock their knowledge into a few good people. You take on the challenge of efficiently "getting your assigned work done". I'd challenge you to take on the task of teaching others with the same mentality you approach your "regular" work. Do it as efficiently and productively as possible. Then when you're done, go about your day.
- qandb 10y ago> Companies don't want to lock their knowledge into a few good people. It is not their knowledge. It is these "few good people"'s knowledge. > I'd challenge you to take on the task of teaching others ... Never, ever. Only idiots agree to train their own competition.
- CydeWeys 10y agoYou sound like a horrible person to work with. Software development is a collaborative process. I would never want to work with someone who treats all of their peers as competition and refuses to help them achieve the team's mutual goals, and were I your manager, I'd likely fire you.
- antisocial 10y agoIt is not uncommon that the people seeking to be mentored are lazy to put any effort into learning. It is also not uncommon for a lazy manager to put an effort to see how much this senior programmer is mentoring other. It is also not uncommon that this senior person might have learnt all his/her skills from books/discussions forums etc. Some of these senior programmers put their personal time because they are passionate about their craft. Please don't make assumptions that anybody who is not so pleased about sharing his skills is not a team player. Oftentimes, a lazy manager pits team members against each others. You sound like that horrible manager to work with. If I were your team member, I would find another manager.
- 10y ago
- cliffy 10y agoThis is likely true, and I've actually been told that directly by a company's recruiter. They wanted me on-site to mentor and guide other developers. A good video chat system and IRC can substitute well enough though.
- SomeStupidPoint 10y agoPeer mentoring is part of your job in any field. It's not a secret that your better people are supposed to help train other employees. Senior people train junior people, people with expertise in a domain share it, etc. Some fields even make this formal at the early levels, with apprenticeships, but I've worked in a number of fields and never had this not be the expectation. It's part of why you (should) get paid more than them. The real "dirty secret" is if you're not a team player, you're not a top performer because force multiplication through mentoring adds more value than the difference in your individual work.
- qandb 10y ago> Peer mentoring is part of your job in any field. All morality in a corporate setting is fake by design. Everybody simply maximizes their own bottom line, and if you don't too, you are an idiot. Training your own competition is simply not a way to maximize your revenue.
- SomeStupidPoint 10y agoI disagree on three levels: 1) I don't think the premise is true, that everyone maximizes their bottom line figure. 2) Prisoner dilemma logic is suboptimal in the iterated prisoner's dilemma. Alliances are a thing in ongoing relationships. 3) Even if I were trying to maximize my individual value, training would still benefit me. Programmers with strong mentoring and management skills are more valuable to the corporations than programmers with just technical skills. Mentoring increases my value as a force multiplier faster than it increases any individual mentee's value.
- watwut 10y agoIf you are immoral in corporate setting, then you are immoral person. There is nothung special about work that would up it outside of morality. Besides, training less experienced people is job expectation, exactly as writing unit tests and readabe code is job expectation. Nothing to do with morality.
- deleted 10y ago[deleted]
- antisthenes 10y agoWith that attitude, you should stay remote.
- CydeWeys 10y agoThat's a very myopic view of your job responsibilities. Presuambly you had mentors yourself earlier in your career that helped you out greatly. I know I did. If they'd all been working from home, and thus were unavailable for the kind of help that they gave me, I might not be where I am today. Helping along the next generation of coders is part of your job description. Most employers would rather have a good programmer who can build up the effectiveness of the rest of their team than a great solo programmer who doesn't have any knock-on effects in making the rest of the team more productive. > I just want to get my assigned work done and leave it at that. I don't want to teach all your shitty college grads how to actually code. That's not a healthy outlook, and if any of my coworkers held such a view, it would be a negative for me.
- cstrahan 10y agoI'm not the person you replied to, but ... > Presuambly you had mentors yourself earlier in your career that helped you out greatly. From personal experience, that certainly isn't a given. My first job writing software was working solo. They had someone before I showed up, but that person left for greater things. As the only person there, and having been hired right out of high school, I felt a strong responsibility to get things right. So I'd do my best during the day, and then then I'd spend 6-8 hours after work reading blogs/books, poring over my work, seeing if I could make anything better. I didn't have anyone to mentor me in the things I did: * Set up a Subversion server * Set up automated testing, and imposed a strict lower bound for code coverage * Sped up the existing code-base 20x over a weekend with FP-inspired parallelism (Microsoft's Task Parallel Library, PLINQ) * Reduced the code size considerably through better approaches to architecture and design (OOP stuff like SOLID, and general good judgement), though I can't recall the exact reduction * Proposed, designed and implemented systems that automated away many hours of daily work for each of the non-technical staff (takeaway: eat lunch with the people you're trying to help, try to find stuff that they take for granted that could be automated away) And the list goes on quite a ways. And then I got an offer somewhere else that subsequently doubled my (at the time, minuscule) salary. They were impressed that I had written an interface in my programming assessment (this was C#), as they "hadn't personally found a use for them". There were no automated tests, because tests were impossible to write due to coupling (recall that they didn't user interfaces -- there was zero abstraction). When Inversion of Control (specifically Dependency Injection) was suggested, implemented, and example tests provided -- all during my lunch hours -- the entirety of the work was rejected as being too "weird". Bear in mind that the effort had also removed 20K lines of copy-pasted-and-slightly-edited boilerplate -- boilerplate that would continue to accrete in a similar fashion with each new feature. It was a major bummer: these were industry veterans (20+ years of development experience each), and yet the code was in shambles, and they couldn't recognize when things were an improvement. As someone who would desperately love to be the least capable person in the room, I can't say that's ever been the case throughout my career, at least professionally. Conferences are an entirely different thing: when I go somewhere like Compose Conference, I chat with people working at the frontier of type theory, optimizing automatic differentiation, etc. It's equally inspiring and humbling. While all of those people would be super awesome to work for/with, they're invariably either starving academics or they can't afford me by a wide margin. So no, not everyone has had the pleasure of having a mentor. Interestingly, I think it's precisely because I haven't had a mentor that I always extend an offer to mentor others -- including people I haven't even met in person. I reflect on all the stupid shit I've done in the past, and how I could have avoided many hundreds of hours chasing my own tail if someone had been in my life to: * Point out when something is provably impossible (e.g. solving the halting problem) * Point out the best algorithm (or class of algorithms) for an unfamiliar problem -- or perhaps most importantly, give a name to the problem you're trying to solve * Distill and share the essence of wisdom / good judgement when it comes to design (instead of me spending many hundreds of hours reading over open source, trying to learn bottom-up while attempting to glean the author's mindset) * Give me a vocabulary to help accelerate my learning (things were often hard to research because I lacked words like: extent, binding, continuation, etc) * Etc, etc, etc Sadly, very few people reach out. Every now and then I'll see that someone is struggling with something, and then I'll help them flesh out their understanding. Once it clicks you can see a big smile light up across their face, and then they'll say something like "damn, where were you when I got stuck a couple days ago -- that's precisely what I needed!" And then I don't hear from them.
- nathanaldensr 10y agoThat can be one of the reasons, but not necessarily the only reason. I have experienced this in my own career, for sure. Top performers sometimes are implicitly disallowed from performing because they are too busy making up for the mistakes of others. Unfortunately, often these top performers don't have the authority to make the necessary staffing changes that would actually lead to success.
- fsociety 10y agoAs a junior software developer, it's sad to hear this point of view. Many of us put an extraordinary amount of time towards improving our craft. On the other hand I've worked with many people who have very similar opinions as yours and they suffered from reality distortion. Their code was poorly implemented and poorly tested, despite what they say, and caused many headaches. Are you actually a top performer in the software world?
- pc86 10y agoTrue top performers are constantly trying to expand their skills. The only way you do that is by interacting with other people, even less experienced/talented folks. You don't get new insights by being around the same great people all the time.
- nickthemagicman 10y agoLinus Torvalds wrote Linux from his dorm room. John Carmack wrote the Doom engine solo. Einstein worked alone, the inventor of PCR did it alone, Wozniak, Picasso, Hendrix, Mitnick. Holy crap almost all incredible innovations were invented by solitary passionate people working alone! Then we have Cascading Style Sheets..that.. was invented by a committee...
- hackermailman 10y agoEinstein didn't work alone http://www.nature.com/news/history-einstein-was-no-lone-genius-1.18793 http://www.nature.com/news/history-einstein-was-no-lone-geni... Torvalds didn't either https://en.wikipedia.org/wiki/History_of_Linux#Chronology https://en.wikipedia.org/wiki/History_of_Linux#Chronology note 100+ devs in 1993 working on the kernel to build a userland for it. If they didn't you'd just have another toy kernel floating around nobody uses. Edit: Apparently Hendrix didn't work alone either he claimed Foxey Lady was just something him and his band put together while randomly playing during a rehearsal.
- nickthemagicman 10y ago
- grardb 10y agoThis comment doesn't read like it was written by a "humbleMouse" :) I don't think this is a healthy attitude to have towards less experienced developers. Literally every experienced developer was once inexperienced, and I think for the vast majority of people, it's hard to become a senior or even intermediate developer without some mentorship along the way. I believe this is especially true for aspects outside of writing code. This probably isn't true at every company, but from where I've worked, a big part of being a senior engineer is understanding how to tie in business goals to development. That's not really easy to learn in a tutorial online or by contributing to open source. Anyway, I would just take caution when writing comments like this, and realize that in order for our profession to live on, we need experienced people mentoring inexperienced people. You were there once upon a time, and you probably wouldn't have liked it if people called you a "shitty college grad" and refused to help you out.
- jt2190 10y ago> I think for the vast majority of people, it's hard to become a senior or even intermediate developer without some [on the job] mentorship along the way. Doesn't this assume that the only mentorship (edit: We're really talking about "job training") is peer mentorship? What about classes, self-training, etc? Why should the onus be placed 100% on the senior employee? Why no onus on the junior employee?
- grardb 10y agoAs I wrote in my comment: >I believe this is especially true for aspects outside of writing code. This probably isn't true at every company, but from where I've worked, a big part of being a senior engineer is understanding how to tie in business goals to development. That's not really easy to learn in a tutorial online or by contributing to open source. I went through four years of computer science education, had multiple jobs/internships in college, and even took over 10 MOOCs across Udacity, edX, and Coursera. None of those things prepared me to be the developer I am today (I won't deny that they helped, though). They certainly put me in a great position upon graduating college and got me a great job, but nothing increased my skills more than simply working with more experienced developers in a full-time role.
- pc86 10y agoWhat a horrible attitude. I hope you're just having a bad day and this isn't how you typically act around other because I wouldn't even want to work in the same building as you when as a supposed "top performer" you don't feel the slightest obligation to share your knowledge, your skills, your experience, etc with "shitty college grads." I'm sure you were born knowing how to code so you can't relate, but for everyone else, we were all terrible programmers at some point. The only reason we're not is because someone took the time to document their knowledge, be it through a book, a blog, an online tutorial, or college.
- qandb 10y ago> you don't feel the slightest obligation ... No morality whatsoever emanates from a company's bottom line. It can certainly not compete with my own bottom line. How can you expect people to agree to train their own competition? Publishing general open-source code is ok, but telling other people how the code works that you write and maintain for a living ... why would anybody do that?
- akingabramson 10y agoOne compelling reason: if you need to hire down the road (once you're CTO/manager/equivalent), it makes much more sense to hire devs who you've trained and invested in at a previous company.
- pc86 10y ago> telling other people how the code works that you write and maintain for a living ... why would anybody do that? Just so I know I'm understanding you correctly, are you saying that you refuse to tell your coworkers how code you write works?
- NoCoastCoder 10y agoBecause your job is not to gatekeep at the companies expense?
- humbleMouse 10y agoI'm not saying I don't enjoy mentoring people and sharing knowledge! I'm saying that it is unreasonable for companies to ban WFH, and I explained what I think is the true motivation behind that decision. To clarify - companies are banning WFH so they can lower their hiring bar and take on incompetent people and not have to pay for or provide any company training. They just rely solely on their senior people to teach the new people everything. The article was about WFH policies, and that's what I am commenting on. I'm not saying mentorship == bad or coming into the office == never. I'm saying mentorship can be done while working from home, and banning it is a terrible company policy.
- gdulli 10y agoMaybe companies want their top performers in the office in order to force them to develop their social skills.
- jt2190 10y agoIn "The Mythical Man-Month", Fred Brooks writes about two concepts that I think are important considerations when deciding whether to leave the experienced programmer alone or train up the team: * The communication overhead that adding more programmers adds. Training time can be thought of as a manifestation of this tradeoff. * The conceptual cohesiveness that comes from having one developer or a small team design a system, as opposed to a free-for-all design that can arise when a large team is unleashed on a program. Whether or not to train teammates is (ideally) a development strategy, given the needs of the business.
- onion2k 10y agoI don't want to teach all your shitty college grads how to actually code. Only a very inexperienced developer would actually want to work with people who aren't as good as they are. I genuinely want to be the worst person on my team. I'm pretty good, so that would mean we could do some amazing stuff.
- shrimp_emoji 10y ago>Only a very inexperienced developer would actually want to work with people who aren't as good as they are. Not true. >I genuinely want to be the worst person on my team. I feel the same way, but only because I've adjusted to the role and enjoy relentlessly leeching knowledge from the top performers.
- thethirdone 10y ago>> Only a very inexperienced developer would actually want to work with people who aren't as good as they are. > Not true. Could you explain your position on this? I feel that perhaps "inexperienced" is the wrong adjective, but rather developers whose ego or lack of desire to progress would want to work with people who aren't as good as them. "Inexperienced" is a decent approximation of that description as experienced developers with no desire to progress would be rare.
- watwut 10y agoIt could also mean you will do all the routine menial work and will never get a chance to touch something more complicated :). I have seen more experienced seniors to treat less experienced junior pretty badly in the past. Junior did not learned all that much imo nor was given chance.
- qandb 10y ago> Companies want their top performers in the office so they can serve as trainers/mentors/teachers to the new college kids and the incompetent older people they hire. It is not hard to avoid training your own competition. Three people have left in despair over the last two years trying to get me to train them. I just happen to be not particularly talkative when it is about the details of my work.
- maxxxxx 10y agoYou are rationalizing this. If they were into mentoring they would push for pair programming or trainee programs. It's a pure control thing.
- urda 10y agoYou can't consider yourself a "top performer" if you are unable to mentor the more junior folks below you. You should check that chip on your shoulder, because "top performer" programmers do not self apply such a title.
- beaconstudios 10y agoprogramming is a team sport - you might well be better than average but if you're leaving your team to eat dust then you may well be causing more harm than good.
- intrasight 10y agoYou had it backwards - should have read "new older people and incompetent college kids"
- debt 10y agowhat did you do bro
- return0 10y agoSome people like to learn by themselves, some others are careful to only ask the necessary questions, and some others think it's part of your job to teach them. That's a common situation in an office, though i m not sure its the real reason why someone would not offer you work-from-home arrangement. I do understand how annoying it must be for a contractor though.
- komali2 10y agoYou're backpedalling hard, but it doesn't change the fact that you said: > I just want to get my assigned work done and leave it at that. I don't want to teach all your shitty college grads how to actually code. I'd say stay behind your statement, man. If that's how you feel, that's how you feel, and despite the fact that your feelings are generating ire from those that are more generous with their time, backpedaling isn't going to make anybody think you don't feel that way.
- theandrewbailey 10y agoI'm not buying the training/mentoring argument. Companies want their hires to have all the knowledge about what they use before they are hired. If you don't have those skills and this experience, you simply won't be hired in favor of someone who does.
- geofft 10y agoAre you compensated / rewarded for your mentorship? That is, come performance review time, does "I spent half of my time at work in the last year training folks and they said it was great" count as a positive, or a negative because you were expected to get other things done?
- nstj 10y ago> the real reason that companies want programmers in the office pretty broad statement to make, though I can see it having some merit in certain instances
- paulcole 10y ago>It's infuriating as a top performer - I just want to get my assigned work done and leave it at that. I don't want to teach all your shitty college grads how to actually code. Did you ever consider that "top performers" are those who do more than "get [their] assigned work done and leave it at that"?
- _e 10y agoFor engineers/developers, mentoring is not necessarily having a seasoned person training someone with no experience. Everyone on the team has a different background and experience. We ran into an issue the other day where we identified a developer misunderstanding how a certain kind of technology is supposed to be used. This developer is outstanding on many levels, super focused and a great asset. English is also not their native language. Try describing a concept over Skype with paint.exe. It is much easier to put it on a white board so everyone can see how their piece fits into the larger picture. Having everyone in the same location brings synergy you can’t achieve in remote locations and timezones especially if you are a startup.
- romanovcode 10y agoIf you are senior and getting paid enough it is kind of part of your job.
- etler 10y agoI'm not sure why you call it a dirty secret. It's not dirty or a secret.