Hacker News new | ask | show | jobs
by snakey 1533 days ago
Forgive me for this digression and for sounding selfish, but as a junior, I’ve really struggled for the last 2+ years to fully adapt to remote / hybrid working.

I’m wondering if anyone has advice on how I can continue to grow and become a top-class engineer within a remote environment?

Based on my experience so far, it’s very difficult to both onboard and mentor a junior from a remote setting. It’s not impossible, however, a lot of employers / teams still have not setup effective means for including and training the less experienced members of the team. I realise that much of this learning is of my own responsibility but I really, really miss spending time with my team and learning from those more experienced than I. I feel as though I have stagnated an awful lot over the last two years and there’s only so far self-learning can take you when software engineering is such a collaborative process.

17 comments

During COVID, as a CTO, I tell my team to DM me after stand-ups if they aren't sure about their tasks or work, or even how to get started. I'm more than happy to spend 2-3 hours on a separate remote call with an individual, where we go through a socratic'ish discovery, using things like draw.io or mermaid to quickly sketch out concepts and architecture. Often this then sparks them to go through their own discovery, and the next day or 2 they will request yet-another call to then propose their design and implementation, and this is yet-another opportunity for us to discuss and hone their work.

So in-short, yes, self-learning is required (always is, always will be), but if your senior can do some sort of guided self-learning, I'd like to think you would then gain the confidence and be more than capable of picking up the necessary skills, along with the sometimes-serendipity that comes from such paths to discovery.

(sadly, my CEO is does not share this remote work mindset, which is why if anybody is looking for a CTO, please DM me...!)

> I'm more than happy to spend 2-3 hours on a separate remote call with an individual, where we go through a socratic'ish discovery, using things like draw.io or mermaid to quickly sketch out concepts and architecture.

I'm sure you are.

If you have time.

Thing is, at most companies, most employees are perpetually swamped. Or at least quite frequently.

I'm a new employee (3 months) at a company. The documentation is quite bad. In other words, it's quite standard compared to all other companies out there. There are some wikis, tutorials, confluence pages, etc, but the links tend to get reused, and in the end you have just a handful of true documentation sources, all being 10 or 15 or 20 years old. My team members are friendly and eager to help. They have all gone through the same pains as me. But they are super busy. Some times, I say "hi" on chat, and tell them I have a question, and sometimes they help me, but some times they tell me "can you write your problem in an email, and I'll take a look by tomorrow". And sometimes they tell me they are super-busy "this week".

In the end, I got the most help from another new joiner, who joined 2 weeks after me. He's helping me, I'm helping him. We really depend on each other. Because of him, I'm probably twice as far as where I'd be without him.

But here's the thing: our company has a 3-day-a-week policy. And his desk is just next to mine. Whenever we are physically next to each other, we interact a lot. But when we communicate on zoom, the interaction goes down maybe by a factor of 10.

Always include the question with your greeting.

https://nohello.net/en/

I hate no-question-his because people always assume any response is synchronous after response.
If your team is that busy it’s grossly mismanaged. Get a new job.

I’ve never worked at a company where the programmers were so “busy” they had no time for at least ok documentation and time to train.

It’s simple. You assign an onboarding mentor, and it it one of his deliverables that you get onboarded and proficient in say three to four months.

> I'm more than happy to spend 2-3 hours on a separate remote call with an individual

Bingo. I've been doing the same with new remote hires (especially jr). I try to block off a couple hours every other day that are 'open'. When they send their first few PRs, I'll call them and go over it which inevitable leads to lots of random questions about the code base.

Finally, I make it clear this time is open to them as long as it's needed.

My goal is to replicate the ability for someone to stop by my office. I think so far it's been ok.

I try to do the same or I'll pair a junior with a senior if the hand-holding required is beyond my capacity.
how to dm?
> how I can continue to grow and become a top-class engineer within a remote environment?

Yes, three things:

- Learn to write detailed yet succinct prose, and practice this often.

- Learn to unblock yourself, so that asynchronous communication does not become a barrier. Be prepared to dig in at least 1-2 layers of abstraction below where you typically work and spend lots of time researching unfamiliar topics.

- Decide whether you want to be a generalist or a specialist. There is room for both in the industry. If you want to be a generalist, make sure you are getting n years of experience and not one year of experience n times.

These are largely the same actions to take to be a top class engineer in an office too though.

When you say "make sure you are getting n years of experience and not one year of experience n times", do you mean to try and work on something different each year? Or did you mean something else?
Something different in that you aren’t working on slight variations of the same problems over and over again. You’re going deeper or wider or something that forces you to grow.

The failure mode of taking this advice is to constantly churn technologies and spend all your time learning superficialities about the new shiny.

It means continue to grow your experience either wider or deeper or both. You don't have do something completely different each year, but you should be thinking about how to expand your skillset. Unfortunately, this oftentimes means changing jobs, but not always.

An example of getting deeper if you're a Java programmer would be to really learn all the collections available (beyond ArrayList and HashMap) and when to use them. Wider would be to learn and improve on your SQL.

> a lot of employers / teams still have not setup effective means for including and training the less experienced members of the team

In my experience, this is not correlated with remote or office work in any way. For the most part of my career, spent in the office, I have not received any form of mentorship, even though I would have liked it. Most people I've met don't have the "mentorship gene", so to speak. They don't really care enough to stop what they're doing and share this knowledge with you.

The company I'm currently with is an exception to the general rule I've seen in the industry. Specifically, they put a lot of effort into actively sharing knowledge (as in, you don't have to ask for it, it will be given to you even if you're too shy to say anything). And they're fully remote.

So, to put it another way - if a company doesn't put any effort into training while remote, I find it difficult to believe things are any different in an office. Maybe what you miss is those interactions that are inevitable when you're physically working next to others; maybe it was a way to get "training" by accident. But there's no reason why you can't do the same remotely. You could try pair programming, for example, or you could all be in a Discord channel and just work in the same virtual place.

I've noticed this as a serious problem for our new hires as well.

The unpleasant truth is that mentoring someone is something that works far better in person, where they can learn from you both directly, through explicit tutoring, and indirectly, through experiencing the kind of person you are and how you navigate your environment.

I feel like this is one good reason why a hybrid working approach might end up being the sweet spot between all remote and all in person. A few days a week, a few days a month, or a few weeks a year in the office together to facilitate these kind of activities.

Unless you are working for a 100% full time remote company, my suggestion is to go into the office.

You'll get more exposure to people, more chances for one-off conversations, your boss will know what you look like and you'll be closer to the action - all important things early in your career.

Once you're an old hat at things, it doesn't matter nearly as much. You know who to reach out to, know how to navigate politics, know what the resources are.

My prediction is we'll see people slowly return unless their company strongly enacts 100% remote (or the role fits remote well - little to no team interaction).

Once a few ambitious people start finding out the project they really wanted to work on went to someone else who has been having lunch with the boss 3 days a week, they'll get in the office too or find another job.

No need to apologize! It’s reasonable to have needs, and these make total sense.

I’ve had success doing very long screen sharing while someone works normally. Let them forget you are there, in some ways it’s a lighter ask than breathing over their shoulder. Take notes on things which don’t make sense and batch your questions for when they want to take a break from coding (maybe on the phone, they can clean dishes out whatever). If no teammate is willing to do that, you might be seeing cultural problems unrelated to remote - maybe explore other teams at the company.

This is so different from my first job experience, I can't imagine a more night and day comparison. I literally got stuck at a desk and had no mentoring at all, team meetings were blind leading bling into ditch, and all work was 100% individual. Nobody would have helped me even if I had asked, they probably would have told me to fuck off since they had their own tickets. Since I am really introverted and flat out don't like dealing with people, this was pretty nice for me, bu being remote during the whole thing would have been heaven. I'd still be working there if that were the case.

To your question, what do you want to learn? I can tell you that if you want to broaden out, just do projects in new languages/frameworks. If you want to learn technique, I would suggest you go find quality academic publications on the topics you want. The chances that your teammates are anywhere near as "good" as what you might observe in such books is honestly very low. Most engineers are mediocre, that is just a fact, so your team may not be imparting as much wisdom as you feel it is. I know mine didn't.

it might be that after a few years in your career the novelty of being in the office wears off and you start to notice the time you lose by being in an office, due to people asking for more “quick chats”, which are disruptive and cause repeated re-starts of the mental processes of understanding code and fixing hard bugs. this lost time then needs to be made up after hours leading to stress and burnout. i personally think the future is completely remote. as a contractor i cannot imagine going into an office everyday dealing with ass in seat mentality. i have written some of my best code in a bar, with a pen and paper.
You're right.

What's weird is I've found collaboration works shockingly well remotely. You can jump on a Slack huddle and share your screen or use VSCode LiveShare to pair on hard problem, or a document, and while there's more fiction in drawing, it turns out my whiteboard handwriting is terrible anyway.

The thing is, you have to do this deliberately. You need a culture of teaching or you're going to be bad at teaching, and since it's harder to read the room, your experienced folks and managers might not even realize you feel stuck.

I'd suggest you raise your concerns to the people around you. "I don't feel like I'm learning this way, can we do more pairing or can I join on some of the harder projects" is a fine place to start.

There are many thing to be put into the basket:

- on your side you need two life, if full-remote, two life means a local, physical social life and a remote social life, without both you'll miss a part of humanity that we need to advance well;

- a room, silent/isolated enough, dedicated just to WFH, enough to been able to talk out loud without earpieces etc, with a good conference speaker (just because a good speaker+a good cam that follow you is too expensive for most);

- on the company side remote work should be organized as remote work, not as "the same but in a virtual office", and that's really hard for most companies;

- time to be dedicated to "coffee machine talking" must be considered, it's needed to be an efficient team.

Generally speaking WFH works after a bit of "team experience", few in-person meetings to getting to know each others a bit, a bit of practice to adjust things etc, it means a slower "personal development" but thanks to more free time and home setup you can grow at your personal peace. Self-learning does not means learn alone, without help, means that you evolve alone following external stimulus, desires, needs, but you still have colleagues to talk to around for suggestions, idea exchanges, support etc.

If that's new for you it's "just" a matter of time to learn a new thing, "just" means not exactly automagic or easy but doable.

Oh boy.We have this onboarding buddy system where the new hire get paired with someone HR just send out an email to connect the two of u and then that's that.Last month we got a new guy, and I was assigned as his buddy. I had a rough week and that email got buried. This man went a whole week under the radar, besides HR and group onboarding called he's had no communication with anyone. He didn't know what Dept or team he was on, or who his direct report was. It was only when I was cleaning up my inbox that I saw the email and reached out.

So moral of the story is to not be shy any take initiative to reach out. We have chats and emails and internal forums message boards, so use all of them. If you're nice, ppl will be nice to you and help out. I've noticed that most new hires are not comfortable with messaging people they don't know, but this needs to be overcome. Even couple years in I DM people knowing nothing but a keyword, and I get a lot of help, and I get to have a nice chat and bitch about the lack of documentation etc .

You are completely correct, orgs need to do a lot better but I don't have a lot of hope but you can totally take it upon yourself to be more forward. Also bring it up with your manager maybe they can find you a dedicated mentor

Remote work is not good for neither personal nor professional growth. In other words avoid it if those things are you main concern.
Your experience is pretty much on point. If you can meet your team in person, do so. Being able to work remotely requires a lot of autonomy and confidence in general.

Bing remote, not having direct contacts with your team/department/etc. tends to be demotivating for a lot of recruits.

IMO what works best is to get 1 or a very very small few people and hop on a zoom and share screens and ask questions.
If you can get a few juniors together to as for a pair programming session, that could help
There are a lot of companies where, even pre-COVID, the expectation of training or mentorship just isn't there. Startups, small companies, non-tech companies is where this can be common.
Basically, the code is all there for you to read, and if you can’t, you can’t.