Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Ghost of Reagan Past
Oct 7, 2003

rock and roll fun

Maluco Marinero posted:

On the other hand, mentorship and some degree of pairing can mean the mentor can decide when it's of value to you to find the solution, or save you some time straight up.

Excessive reliance on async comms is something I think to be wary of, especially early on. All the humanising conversations don't tend to happen in terse async comms, and they can sort of block someone truly joining a team.
Not just this, but I for one (I can't be alone) get frustrated by people that actively avoid other forms of communication. Instead of looking at 50 line blocks of code in Slack, you could just share your screen, or if you're in the same physical space as me, just give me a bit to finish what I'm doing to come over there and help you.

I know the code base but I'm not telepathic and even a 5 minute question could probably go smoother if we look at the same thing.

Adbot
ADBOT LOVES YOU

Pollyanna
Mar 5, 2005

Milk's on them.


Ghost of Reagan Past posted:

Not just this, but I for one (I can't be alone) get frustrated by people that actively avoid other forms of communication. Instead of looking at 50 line blocks of code in Slack, you could just share your screen, or if you're in the same physical space as me, just give me a bit to finish what I'm doing to come over there and help you.

I know the code base but I'm not telepathic and even a 5 minute question could probably go smoother if we look at the same thing.

This only goes so far when the other person decided to hang out in Maine for the week and their internet is nearly non-existent.

Doh004
Apr 22, 2007

Mmmmm Donuts...

Pollyanna posted:

This only goes so far when the other person decided to hang out in Maine for the week and their internet is nearly non-existent.

That means the person is out of the office and not available to work. Relying on folks when they're not working is just setting yourself up for failure.

Also, I'm also a tech lead (although it seems the new term is slowly becoming an engineering manager? who knows). There's definitely a careful balance of asking questions versus self education:

1. Identify the problem and rubber duck the question.
2. Google it if isn't domain specific (as opposed to general knowledge)
3. Look around for other examples of what you're trying to do already in the existing code base (timebox it to ~5 minutes)
4. Then ask for help in whatever instant communication platform you use but don't demand an answer initially. Adequately write out what you're trying to do, the problem you're experiencing, and the steps you've already taken to get to this point where the next best thing is for someone else to help you out.
5. All the while while waiting for a response (people are busy, in meetings, lunch etc) keep working on it. There's nothing more frustrating than someone waiting around, expecting help.

Of course there's pairing, but unless your team is properly set up and structured to allow for a fair amount of pair programming, it's hard to rely on it for folks to get their help. I tend to suggest pairing for when dealing with more intricate or tougher problems that you know more than one set of eyes on at the start will really help in the long run. Now, when newer, especially junior, engineers join the team, pairing should be part of their onboarding program. Because everyone has one of those clearly laid out, right???

Self sufficiency is so so valuable to an engineer's career.

Pollyanna
Mar 5, 2005

Milk's on them.


Doh004 posted:

That means the person is out of the office and not available to work. Relying on folks when they're not working is just setting yourself up for failure.

Also, I'm also a tech lead (although it seems the new term is slowly becoming an engineering manager? who knows). There's definitely a careful balance of asking questions versus self education:

1. Identify the problem and rubber duck the question.
2. Google it if isn't domain specific (as opposed to general knowledge)
3. Look around for other examples of what you're trying to do already in the existing code base (timebox it to ~5 minutes)
4. Then ask for help in whatever instant communication platform you use but don't demand an answer initially. Adequately write out what you're trying to do, the problem you're experiencing, and the steps you've already taken to get to this point where the next best thing is for someone else to help you out.
5. All the while while waiting for a response (people are busy, in meetings, lunch etc) keep working on it. There's nothing more frustrating than someone waiting around, expecting help.

Of course there's pairing, but unless your team is properly set up and structured to allow for a fair amount of pair programming, it's hard to rely on it for folks to get their help. I tend to suggest pairing for when dealing with more intricate or tougher problems that you know more than one set of eyes on at the start will really help in the long run. Now, when newer, especially junior, engineers join the team, pairing should be part of their onboarding program. Because everyone has one of those clearly laid out, right???

Self sufficiency is so so valuable to an engineer's career.

No, they're in, and said they'd be available - just that they didn't respond until hours later.

Doh004
Apr 22, 2007

Mmmmm Donuts...

Pollyanna posted:

No, they're in, and said they'd be available - just that they didn't respond until hours later.

Well then that's unacceptable and not behavior that should be tolerated. Sounds like they want to get away with not being out while also taking a vacation.

CPColin
Sep 9, 2003

Big ol' smile.
Yeah, if you're expected to be available to your coworkers and you decide to work remotely in a place you can't be available, people have a good case for you being dishonest. It's another matter if you tell your team, "I have to work remotely today and the cable company is messing around with some utility poles, so my connection might drop." At least then everybody knows you're going to be 50% available or 25% available or whatever.

When I got laid off from my last job, they took the rest of my team away from my former PO, who works from home and had been PO for two teams until that point. So she was used to getting her work done for two teams at once and suddenly found herself with just the one. She sent HipChat notifications to her phone and painted her kid's bedroom during the time she would have spent with our old team. I was so proud when she told me!

toiletbrush
May 17, 2010
One of our clients has real production customer data in their dev/sandbox environment and it's giving me the willies. No credit cards or anything like that, but plenty of names, emails, mobiles, addresses, purchase details etc. Given security on dev environments tends to be a bit crappy what with maybe not so much security around usernames/passwords, 'test' admin accounts, sharing backups on shared drives, all the other integration points that might not be locked down etc...is this worth making a fuss over, or if they say 'oh yeah its secure dont worry' do we leave it at that?

Brain Candy
May 18, 2006

toiletbrush posted:

One of our clients has real production customer data in their dev/sandbox environment and it's giving me the willies. No credit cards or anything like that, but plenty of names, emails, mobiles, addresses, purchase details etc. Given security on dev environments tends to be a bit crappy what with maybe not so much security around usernames/passwords, 'test' admin accounts, sharing backups on shared drives, all the other integration points that might not be locked down etc...is this worth making a fuss over, or if they say 'oh yeah its secure dont worry' do we leave it at that?

Is there someone who would be fired if it leaked? Tell them.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

toiletbrush posted:

One of our clients has real production customer data in their dev/sandbox environment and it's giving me the willies. No credit cards or anything like that, but plenty of names, emails, mobiles, addresses, purchase details etc. Given security on dev environments tends to be a bit crappy what with maybe not so much security around usernames/passwords, 'test' admin accounts, sharing backups on shared drives, all the other integration points that might not be locked down etc...is this worth making a fuss over, or if they say 'oh yeah its secure dont worry' do we leave it at that?

Brain Candy posted:

Is there someone who would be fired if it leaked? Tell them.

Yeah PII is a big deal, and there probably isn't a good reason for people to peruse it in dev. Even more so if you know any of them are children.

toiletbrush
May 17, 2010

Brain Candy posted:

Is there someone who would be fired if it leaked? Tell them.
Yeah, it would be pretty catastrophic. I've already told them but not getting much feedback, I'm just wondering how much I should push my concern.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...
PII is never a big deal until it actually leaks and then OH NO HOW COULD THIS HAPPEN??? Well, here's your free year of credit monitoring!

It's doubtful there's much you can do here, unfortunately.

Brain Candy
May 18, 2006

toiletbrush posted:

Yeah, it would be pretty catastrophic. I've already told them but not getting much feedback, I'm just wondering how much I should push my concern.

My wording was very careful. If there's no 'them' that will suffer direct, personal, consequences your options are 'do nothing' 'do something, be ignored, be marked as a complainer', 'leave', 'leave and burn the bridges'

You've chosen the second option, which will make you feel a little better, but otherwise won't work.

Brain Candy
May 18, 2006

People will resent you for caring about things you aren't paid to care about. I'm sure you can think of at least one bossy coworker who everyone holds in quiet contempt because they act above their role. You are currently that person, regardless of whether that's just.

Bongo Bill
Jan 17, 2012

Privately tell the person who has the PII on their machine to delete it and be more hygienic. I handle that stuff like toxic waste on the unfortunate occasion that I have to, because it is dangerous to possess. Alternatively, remind the whole team without naming names. If they refuse, that's when you go over their head, because that's when it stopped being a matter of carelessness or convenience.

The problem is probably not with the person having the data, but with the process that makes it possible for the person to have it. So be careful how you frame it. It does neither you nor the persons identified by the information no favors to put anyone on the defensive.

Although too few people pay developers to care about security, we ought to care anyway as a matter of professional ethics.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

Bongo Bill posted:

Privately tell the person who has the PII on their machine to delete it and be more hygienic. I handle that stuff like toxic waste on the unfortunate occasion that I have to, because it is dangerous to possess. Alternatively, remind the whole team without naming names. If they refuse, that's when you go over their head, because that's when it stopped being a matter of carelessness or convenience.

The problem is probably not with the person having the data, but with the process that makes it possible for the person to have it. So be careful how you frame it. It does neither you nor the persons identified by the information no favors to put anyone on the defensive.

Although too few people pay developers to care about security, we ought to care anyway as a matter of professional ethics.

toiletbrush posted:

One of our clients

I'm doubtful that toiletbrush's management will take a principled stand to drop a customer that's doing something dumb but which won't come back to bite toiletbrush or his company directly.

Bongo Bill
Jan 17, 2012

Still gotta try.

Dirk Pitt
Sep 14, 2007

haha yes, this feels good

Toilet Rascal
What are y’alls reporting structures like? Our CTO is stepping down to focus on founding a company and the CPO and CEO re-orged us into reporting to product owners who have full HR control and then the product managers report to the CPO. I haven’t worked in an organization where there is an absence of an engineering leadership path.

Dirk Pitt fucked around with this message at 11:37 on Aug 16, 2017

Mniot
May 22, 2003
Not the one you know

Dirk Pitt posted:

What are y’alls reporting structures like? Our CTO is stepping down to focus on founding a company and the CPO and CEO re-orged us into reporting to product owners who have full HR control and then the product managers report to the CPO. I haven’t worked in an organization where there is an absence of an engineering leadership path.

Company 1: Highly technical manager (writing code daily), non-technical skip-level who had a lot of trust in the engineers. The "product owner" role was mostly a joke, but the PMs were competent. A good experience; I left for reasons outside their control.

Company 2: CTO was a great person but a mostly-absent manager. In reality, the PM team managed engineering while the company searched for a VP of engineering (and repeatedly failed to find one). CEO did not trust the engineers and I left because that sucked.

Company 3: Highly technical manager (writing code most weeks), non-technical skip-level who has a lot of trust in the engineers. Skip-level is also the product owner. PM team is mostly absent. I worry about our lack of dedicated PM, but otherwise things are great.

I don't think that having a non-technical boss is a problem in and of itself, but I would worry that it's a symptom of not believing that engineers can be effective managers.

lifg
Dec 4, 2000
<this tag left blank>
Muldoon

Dirk Pitt posted:

What are y’alls reporting structures like? Our CTO is stepping down to focus on founding a company and the CPO and CEO re-orged us into reporting to product owners who have full HR control and then the product managers report to the CPO. I haven’t worked in an organization where there is an absence of an engineering leadership path.

I've been told that having devs report to the product owner is Very Not Good, but I've never quite understood why.

GutBomb
Jun 15, 2005

Dude?

lifg posted:

I've been told that having devs report to the product owner is Very Not Good, but I've never quite understood why.

Scope creep is probably a potential issue there. I work for a consulting company and was sent to a client to build an app for them solo and I reported to the product owner and yeah there was a bit of scope creep but overall it was the most pleasant working environment I've ever experienced because I was seated with all of the people in the HR department instead of being with a bunch of other developers and IT guys. It's much nicer to have people who you spend time with every day not be socially awkward freaks.

Maluco Marinero
Jan 18, 2001

Damn that's a
fine elephant.

lifg posted:

I've been told that having devs report to the product owner is Very Not Good, but I've never quite understood why.

It's probably an effect of having problem givers (product owners) in direct contact with problem solvers (developers) who forget to tame expectations with costing/estimates. It's easy to think anything is possible if you discuss possibilities with someone's who has the technical ability, but if they're inexperienced that discussion goes off the rails of what's possible for the project to what's possible given no budget or time constraints.

edit: I don't believe there's in any reason this HAS to be the case though, I run a dev shop with one other person, so we're constantly in direct contact with the product owner, but obviously it's always in our best interest to match expectations to time spent, because even when we collaborate on larger studio projects, the money constraint always falls hardest on the dev team. We come last so an overrun in design with higher execution costs is guaranteed to knock on to our budget.

Maluco Marinero fucked around with this message at 03:09 on Aug 17, 2017

Dirk Pitt
Sep 14, 2007

haha yes, this feels good

Toilet Rascal

lifg posted:

I've been told that having devs report to the product owner is Very Not Good, but I've never quite understood why.

I’m having a hard time seeing how a product manager can provide performance reviews and mentor younger developers. It could work, I just can’t see it right now.

toiletbrush
May 17, 2010

lifg posted:

I've been told that having devs report to the product owner is Very Not Good, but I've never quite understood why.
For the first ~2 years of my current project the product owner had a developer background and it was awful, because requirements would come through as a bunch of very bad technical solutions rather than describing a feature, and untangling what he actually wanted was impossible.

These days we have a technically proficient PM who has total trust in us, and a domain expert who is sort of both product owner and business analyst, and beyond that we have the trust of the business as a whole and are pretty much autonomous. It's def got it's flaws, but its easily the best working environment I've been in.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

Dirk Pitt posted:

I’m having a hard time seeing how a product manager can provide performance reviews and mentor younger developers. It could work, I just can’t see it right now.
It would work in a situation where you have a team lead responsible for technical decisions who's also good at mentorship, but doesn't really care about the nitty-gritty of managing project outcomes at a micro scale. You probably have this in most companies that have a flat management structure and don't suck at it.

KoRMaK
Jul 31, 2012



I'm a lead now, and even before I was I was the most Sr dev, and even insulating myself from product owners was a thing. I have to be real deliberate about telling them to take it to my manager or submit it to support@mycompany.com and then we can get it in the pipeline and setting boundaries.

It's cool to listen to product stuff, but don't do poo poo about it, don't even give an estimate really, until it flows through our process.

trem_two
Oct 22, 2002

it is better if you keep saying I'm fat, as I will continue to score goals
Fun Shoe
In my experience there needs to be an engineering lead to provide balance/friction/whatever to the product manager. Product managers are much too eager to declare a prototype as the final, ready-to-sell final product.

The engineering lead needs to ensure that the software isn't a piece of poo poo, that it is well tested, well reviewed, that it scales, that you can monitor and operate it, that time is allocated to reduce tech debt, that timelines aren't ridiculous, yadda yadda. Ideally the pm and engineering lead roles are a partnership that balance each other out regarding speed of feature delivery vs good engineering practices.

Colonel Taint
Mar 14, 2004


So, uh, what does one do when one has to work with a dev with poor taste? Especially when he insists on 'correcting' you with his lovely way of doing things.

For example, I check in something like this

code:
err_type some_function(handle foo, int bar)
{
	if(!valid_handle(foo))
	{	
		printf("error message");
		return SOME_ERROR;
	}

	...here goes the rest of the fn.
}
About 3 hours later he pushes his 'corrected' changes

code:
err_type some_function(handle foo, int bar)
{
	err_type r_val;
	if(!valid_handle(foo))
	{	
		printf("error message");
		r_val = SOME_ERROR;
	}
	else{
		...here goes the rest of the fn.  Including a new level of indentation
		 for every error checked
	}
	return r_val;
}
I'm pretty sure he's being pedantic about a style guideline that encourages a single point of return, but I still find it pretty ridiculous. I'm also fairly certain the guideline calls out an exception for error checks in the beginning of functions.

He also at one point (just before I started working for the company 5 years ago apparently) convinced the rest of the team that a good rule would be to not allow header files to include other header files. Mind you they could still depend on other headers, just not include them. I don't know wtf line of reasoning he used to make his argument. I refused to follow that rule and to this day we basically have to copy/paste #include sections in C files from that era because the headers have to be included in-order.

I don't think I really expect an answer. I'm mostly just venting a bit, but the next 3 weeks or so is really going to suck especially since our lead is on vacation for that long and there's a bit of a power vacuum. We're also in the middle of moving to a new platform so I'm trying to undo all this lovely reasoning before the code for the new platform is mostly set. I have a feeling he's going to fight me tooth and nail about it though.

Colonel Taint fucked around with this message at 03:23 on Aug 18, 2017

Maluco Marinero
Jan 18, 2001

Damn that's a
fine elephant.
That feels like one of those things that only gets resolved by either bikeshedding an agreed style or getting someone up above to set the style in stone. I mean, it's a pretty easy pattern to codify. Guard clauses ensuring early return followed by a happy path without excessive indentation feels far more readable as a style, but unless you can convince him of that you need to figure out a way to get the style choice codified to refer to.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



Rewrite it with gotos or with nested functions then randomly reorder the functions within the file :black101:

Keep doing that until they drop SPoR from the style guide because it's bad

Iverron
May 13, 2012

New job taking multiple days to grant access to git / jira and slack is a little concerning.

Colonel Taint
Mar 14, 2004


Munkeymon posted:

Rewrite it with gotos or with nested functions then randomly reorder the functions within the file :black101:

Keep doing that until they drop SPoR from the style guide because it's bad

Goto has actually worked out well for me in the past for early return, especially when there is cleanup involved after an error - though even still, there's usually a normal return, then the label right after it to do the error handling stuff, so that's still not SPoR. Could make it fun and have a goto jump over the error handling stuff I guess.

I actually can't find the style guidelines anywhere atm - probably nobody's looked at them in years - should make things interesting. Thinking about it though, I'm pretty sure there's a rule about max level of indendation somewhere in there so I might be able to call him out on that. I had to help him solve an unrelated issue earlier this morning and glanced some code indented about 2/3s into the width of his fairly wide editor :downs:

vvv I basically agree, but management is away for 3 weeks and this dude is in the same cube so I'm trying my best to keep things civil.

Colonel Taint fucked around with this message at 18:32 on Aug 18, 2017

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Any engineer rewriting another engineer's code without talking to them about it is a bad management smell. I wouldn't tolerate it in any organization I managed. The specifics aren't important. The point is that you have someone in your organization who has control issues, who feels the need to own everything of no consequence. They're unwilling to take their case about code style to you, so they're passive-aggressively redoing your work in the hopes that you'll be the one to bring the conversation or, even better, not bring the conversation. You're wasting your time trying to make this about consistent style. This isn't about consistency to this engineer -- it's about control, and management needs to be involved in the situation to tell this guy to knock it the gently caress off.

Vulture Culture fucked around with this message at 18:25 on Aug 18, 2017

KoRMaK
Jul 31, 2012



Vulture Culture posted:

Any engineer rewriting another engineer's code without talking to them about it is a bad management smell.
Yep

also, I hate early return statements. We've gotten rid of them in our codebase. So I agree with the other guy hehehehe

But he should have talked to you about it

Doh004
Apr 22, 2007

Mmmmm Donuts...
Please use a tool (like Github, BitBucket etc) that allows for Pull Requests and the ability to comment on them. If I had someone just going around changing code I was trying to get merged in I'd be pissed.

Colonel Taint
Mar 14, 2004


Well we use TFVC which all said isn't too bad. We only have one branch though because it's a small team and I'm basically the only one under 50 working on this project. The olds won't be arsed to learn any of that high falutin' branching and merging. Nevermind code reviews. If it's in the tree and it doesn't break any builds, people typically won't say anything. It actually works out OK most of the time - our old platform is pretty well segregated and there are rarely merge conflicts, but bringing up the new platform there are a few areas of contention (and I'm trying to stop bad habits from being carried over from the old platform).

meatbag
Apr 2, 2007
Clapping Larry

KoRMaK posted:

Yep

also, I hate early return statements. We've gotten rid of them in our codebase. So I agree with the other guy hehehehe

But he should have talked to you about it

I had a postmortem after a job interview for a job I didnt get, and the HR rep said explicitly that my lack of early return statements was a deal breaker.

Whats the case for/against?

a foolish pianist
May 6, 2007

(bi)cyclic mutation

meatbag posted:

I had a postmortem after a job interview for a job I didnt get, and the HR rep said explicitly that my lack of early return statements was a deal breaker.

Whats the case for/against?

Wait seriously? You were turned away because of stylesheet issues?

Sounds like a bullet dodged rather than a job missed.

meatbag
Apr 2, 2007
Clapping Larry

a foolish pianist posted:

Wait seriously? You were turned away because of stylesheet issues?

Sounds like a bullet dodged rather than a job missed.

I was suppose to improve a Java method actually.

But yeah, the other task was to draw a coat of arms representing myself. Weird place, but huge.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

meatbag posted:

But yeah, the other task was to draw a coat of arms representing myself.
Seconding "you dodged a bullet"

Colonel Taint posted:

our old platform is pretty well segregated
This is a pretty generous way of saying that every component has a bus factor of 1 and every engineer is territorial.

Adbot
ADBOT LOVES YOU

geeves
Sep 16, 2004

meatbag posted:

I had a postmortem after a job interview for a job I didnt get, and the HR rep said explicitly that my lack of early return statements was a deal breaker.

Whats the case for/against?

That's a really weak reason. And taht could be easily fixed by the company saying, "we use them because of reasons x, y, z and you probably would have been "fair enough" in response.

I'm kind of half and half.

I like early return statements when I'm simply modifying (when necessary) or using an object so I can do something like:

code:
if (!foo) {
   return;
}

//logic
instead of

code:
if (foo) {
  // all logic nested
}
This is especially helpful in JavaScript when I want to run something like event.stopPropogation as quick as possible (just an example).

But I generally dislike multiple return points as well. I think multiple return points allows very sloppy coding to occur. I think if there are more than 2 possibilities, then the method could be broken down a bit more.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply