Do I wait until they are finished, and then fixing it will take so much longer... Or I can offer help earlier on and get it back on track sooner.
We have an issue here that someone will work on something for days or weeks and are producing complete garbage. But then when they've finished and they show the pile of crap they produced you can't tell them that's crap. As they've spent too many hours on it to redo it.
So if I see something like this happen, I'd rather "offer help" early on and try and get it onto a sane track and save a lot of headaches down the road.
Then offer to help. Even if this study was anything like statistically significant, all it would show is that you'd get less gratitude than if they asked for help. It doesn't look into outcomes other than gratitude.
So, unless you're helping because you want praise, this study is irrelevant to you.
If you work in a kind of company where someone can work for weeks or months on some feature without any code review, design and architecture review, merging to mainline and testing processes, it's quite possible that the "complete crap" that "kinda works" is completely acceptable solution.
And it's like that in most of the enterprises.
We also have no testing process, no code review process. I find out about stuff when I have to fix a bug in it. That is often the first time I will see something that is deployed to production.
Also deploy is basically the drev works on something, which like I said is often garbage with no thought put into it, then just copies it to a live server.
I then get told it's not working and can I have a look, see that it looks like it's been writen by someone that suffered blunt force trauma to the head before they started and die a little inside.
Every. Godamn. Time.
I need a new job.
An example:
A database update that was taking 9 minutes to insert a few thousand rows. Why? Because it was a nested foreach loop with a sql call in the middle...
Or when they had an array (in C#) but they didn't know how big it was going to have to be. There solution was to make it way bigger than it needed to be, by a lot, add to it. Then have a loop where they started at the end and resized the array by one item at a time until they had no more nulls... At least they left a comment in that saying someone needs to rewrite this as it was bad performance wise... I guess that's something.
The worst part is that, when you push for some basic SE practices, the senior devs/researchera/PMs say (1) but we don't have the time to do planning/reviews/testing/mentoring, just look at the schedule, and (2) they don't want their own code to be subjected to review.
I slid sideways away from that endless crunch / hero 10x coder / code solo project, but I need a proper new job too.
I think the biggest issue is not the offering of help (or requesting it ftm), but just timing and approach. I've notice, so this completely anecdotal, that if you make an appointment, albeit a 'hey, i noticed you are working on X, had some ideas, have some time to discuss/update me on that' or 'hey, i'm working on Y, could I run a few thing by you', ppl are much more open to a constructive dialogue.
That's the main issue. As a company, you must be able to make the decision to throw away stuff you've built, IF it's complete garbage from an objective point of view (the last bit is important: Just because you think it's complete garbage doesn't make it garbage.)
You still do nothing.
In these days of 'personal spaces' and talks of 'discomfort' and 'creepy behaviour'. Nothing is worth meddling with anything unless explicitly asked. Even then I would keep huge distance, even in emails and chat.
This is also called 'Consent'.
I don't think I myself would be greatly bothered by "crap" if I didn't have to deal with it constantly.
So in the end you _still_ have to deal with the mess they made? And you further enable their behaviour by both making it your problem to solve and fixing it?
This approach only works if the other person is interested in improving - and if they were, they would ask for help in the first place.
You assign a task to someone, then say:
You come back to me, as soon as you find it hard to move forward, ok?
They screw up
You should have come to me for help, like I advised you. Nevertheless, lets look at how you can solve your problem now
I'd wager someone eager to improve their skills will often happily share their progress and code and be open for input. I don't think that's the kind of dev that triggered GP's rant :-)
So a way too small base to gather any helpful information from.
You will alter the study based on your assumption on what is going to be the result. If people know they are surveyed, they will act differently for at least a few weeks. If you have too many different departments, your results will vary so much, you cannot make any assumptions about the result. And on and on and on.
My rule of thumb is that if you feel "stuck" for more than an hour you need to: (1) stop what you're doing, (2) go for a walk, and (3) let ~everyone know you're stuck.
If nobody can help because they don't understand what you're working on, then that's a huge red flag. You definitely should talk to them. The more people that understand that problem the better.
It's a big step for a lot of people at first, because they are afraid of showing that they are actually stuck (“I'm afraid others will think I'm incompetent”).
Can we just get the following out of the way?
1. Sometimes it's good/necessary to offer help to inexperienced colleagues
2. Sometimes that which is called help is actually counter-productive or manipulative
The above are simultaneously true.
With that out of the way, a more fertile topic of debate might be how to distinguish the two scenarios. Here's a good start: https://news.ycombinator.com/item?id=18290901
This is the topic of personal communication, and it is much more complicated then it is being given credit by the article. Furthermore, none of the experiences described match my own at Forestryio.
For example:
> Johnson explained that there are two basic kinds of help one can offer – proactive and reactive help.
This is a pretty coarse simplification. Further, it does not describe how help is given at Forestry.
First, if I have no work queued then I will offer help to the team. This may be a specific offer, but I will state "I have nothing to do right now" and then I will ask either:
* Does anyone (needs help/want to pair/need some eyes, etc.) * What is the most important thing I could help with?
I am _proactively offering_ help, but I'm not forcing my way into their problem space. In a sense, I am proactively making it known that you're not going to fuck up my flow by asking me a question now.
Second, we really try to make it clear that if you're stuck on a problem for more than a couple hours. You should look for help–someone has problem been down this road before. Working in isolation increases the likelihood you're going to go down a rabbit hole and waste a bunch of time.
> What we found was that on the helper side, when people engage in proactive help, they often don’t have a clear understanding of recipients’ problems and issues, thus they receive less gratitude for it,
This just isn't the case at Forestryio. The team takes responsibility of the problems and issues, not the individual. If I offer to help and I don't understand the problem, then they will be explained to me. Having two people understand the problem is important. If they can't explain to me what the problem is (or admit that you're not sure) then why are they working on solving that problem?
> On the recipient side, if people are constantly coming up to me at work and asking if I want their help, it could have an impact on my esteem and become frustrating.
This is an ego problem. Grow the fuck up. Learning to _accept_ other people's help is a must if you want to work on a great team.
Not to mention countries and cultures.
This seems reasonable, but it also seems a bit short-sighted; not all that happens at work is about people's feelings, surely?
Sometimes making mistakes can lead to problems later, so stopping someone from doing The Wrong Thing(TM) ahead of time can actually help make them feel better in the long run, even if the immediate response is one of discomfort.
Judging who is performing bad across a large team is not (always) an easy things to do.
OK, but what if maximizing gratitude is not my primary objective?
So we decided that if someone was stuck for more than 1h thinking about a solution to some problem it was against best practice not to ask for help.
Enforcing this policy didn't result in people asking more questions but instead problems being broken down to smaller sub problems. It was kind of a good thing.
And if I'm offering that kind of "help" it's because it's not realistic to wait until I'm asked.
unless a company is rewriting the same 10 input form over & over again, I don't think that will work out great for anyone.
That still has effects today as I was asked by an agent about a job at a company where he now has a senior role and I had to stifle a laugh and turn them down.
They could have done with some advice at the time.
By the way I definitely wouldn't hold it against an intern 20 years later, so I'm surprised that you do. An intern by definition is going to make mistakes, even huge ones.