News for hackers. Stuff that matters.
Re:Programmers are most likely to work from home by CydeWeys on Wednesday April 12, 2017 @11:05AM (#14098344)
That'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.

Re:Programmers are most likely to work from home by bjourne on Wednesday April 12, 2017 @01:52PM (#14100003)
What's wrong with asking questions over email? Is physical presence actually needed for effective mentoring?

Your view taken to the extreme would mean that this thread itself is dysfunctional because people aren't face-to-face and instead discussing on a message board.

Re:Programmers are most likely to work from home by CydeWeys on Wednesday April 12, 2017 @02:08PM (#14100173)
There are a variety of situations for which direct face-to-face communication, or two people huddling in front of the same computer, is the best low-latency, high-bandwidth mode of communication. I use email all the time, but it's not always the optimal mode of communication. Just yesterday I spent an hour mentoring the most junior member of my team through our tricky dependency injection setup by sitting in front of the same computer with him. It would have been harder remotely.

I don't find your slippery slope argument compelling.

Re:Programmers are most likely to work from home by bjourne on Wednesday April 12, 2017 @05:40PM (#14102016)
Why couldn't you have provided the same kind of mentoring over email? If you had a guide detailing the steps of the setup your junior developer could follow it. If he or she had any additional questions then he or she could have mailed them to you.

I would understand if you said you didn't like typing or that you enjoyed being in proximity of others. But I don't buy the claim that methods other than face-to-face communication would be objectively inferior.

Re:Programmers are most likely to work from home by CydeWeys on Wednesday April 12, 2017 @09:17PM (#14103289)
What you are describing would've taken days, whereas I got him squared away in an hour. I know because he'd already been stuck on it for days, with him asking the occasional question in person and via chat. It wasn't until we sat down together and went through the process of how to make these kinds of modifications step-by-step that he really got it.

We don't have guides for how to make every different potential change to the code. That'd take more time to write than I currently spend coding, and they'd constantly be getting out of date with every refactoring. And anyway, the change I was walking him through was a refactoring of a kind we hadn't yet done before, so no guide would've existed anyway (and, if written, would likely be a one-off). I'm not spending hours writing a speculative guide on how to make that change, which I couldn't even write properly without actually making that change, when it takes much less total time just to sit down with him and work through it together.

I don't understand what programming world you are talking about, because it's completely different from my own. My experience has been that collaborative, high latency development mentorship via email tends to take an order of magnitude more walltime than sitting down and writing the code together end-to-end (similar to "extreme programming", but for mentoring).

Re:Programmers are most likely to work from home by cstrahan on Wednesday April 12, 2017 @01:15PM (#14099674)
I'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.