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
duz
Jul 11, 2005

Come on Ilhan, lets go bag us a shitpost


PederP posted:

Why is your BA responsible for planning development work?

Because Product Managers were asking to be paid too much money and a BA was cheaper.

Adbot
ADBOT LOVES YOU

Cuntpunch
Oct 3, 2003

A monkey in a long line of kings
I feel like there's been a little bit of koolaid going around at work lately. So I just need a reality-check:
Writing modular, testable code hasn't somehow gone out of fashion with a fury lately, right?
And by that I mean there's a bit of a movement starting amongst some of the other senior engineers in other teams that:
DRY is useless, just inline everything.
SOLID is stupid, 'everything in one method' - even when it gets to many-hundreds-of-lines is better than multiple logically separated classes.
Unit tests are dumb, just don't write bugs.

I know it's *probably* just the old imposter syndrome kicking in that I'd even ask this question but like...some of this is coming from people with reasonable skill - and has started to sway some of the architects a little bit as well, and so I begin to wonder if I'm the crazy one for finding this ridiculously undisciplined - the sort of thing I might be comfortable with in personal hobby projects that will never be public - but not professional code driving mission-critical functionality...Right?

Volmarias
Dec 31, 2002

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

Cuntpunch posted:

I feel like there's been a little bit of koolaid going around at work lately. So I just need a reality-check:
Writing modular, testable code hasn't somehow gone out of fashion with a fury lately, right?
And by that I mean there's a bit of a movement starting amongst some of the other senior engineers in other teams that:
DRY is useless, just inline everything.
SOLID is stupid, 'everything in one method' - even when it gets to many-hundreds-of-lines is better than multiple logically separated classes.
Unit tests are dumb, just don't write bugs.

I know it's *probably* just the old imposter syndrome kicking in that I'd even ask this question but like...some of this is coming from people with reasonable skill - and has started to sway some of the architects a little bit as well, and so I begin to wonder if I'm the crazy one for finding this ridiculously undisciplined - the sort of thing I might be comfortable with in personal hobby projects that will never be public - but not professional code driving mission-critical functionality...Right?

This is news to me. You might want to ask them where these arguments are coming from. Just because people are good at their jobs doesn't mean they can't get bad opinions about it.

CPColin
Sep 9, 2003

Big ol' smile.
Those opinions sound like they're coming from people who have realized that doing things right tends to take more time, but have not realized that taking more time does not make it wrong to do things right.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...
It might also be a push back against OVERLY modular code, overly abstracting, etc. Don't do the work to create an injectable interface for a concrete implementation to back when there won't be another implementation written and it's fine for testing, etc.

Cuntpunch
Oct 3, 2003

A monkey in a long line of kings

Volmarias posted:

It might also be a push back against OVERLY modular code, overly abstracting, etc. Don't do the work to create an injectable interface for a concrete implementation to back when there won't be another implementation written and it's fine for testing, etc.

See that's just sane and reasonable - not everything needs an interface. This is more 'inheritance is bad, whether it's interfaces or base abstracts' level thinking.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...
Ask them how they implement observers.

raminasi
Jan 25, 2005

a last drink with no ice

PederP posted:

Yeah, absolutely. I have known a few BAs who turned out to be excellent PMs, so it's not an impossible transition to make. But I think it's crazy to combine the roles. I find it odd that your users don't want to interact with developers - I've always found that when developers are targeting users internal to the organization, the users will tend towards trying to circumvent project and organizational structures, directly asking developers for bug fixes, design changes, features, support, etc. Thus necessating that the BA, PM and/or product owner step in and filter/limit/prioritize the communication and wishlisting.

It's sad how many companies have absolutely terrible organizational integration and management of in-house software development. Once management and/or other organizational units lose trust in the developers, it's often a matter of time before internal development is shut down - instead being outsourced/contracted to an external partner. I digress, but I am appalled by how many executives think that such a move is good at "reducing complexity", "focusing on our core business" and similar mantras. Many modern companies and institutions have such intrinsic dependencies on their data, software and/or IT infrastructure, that it's completely insane to try and externalize it.

That ended up more of a rant than intended, but your mention of dysfunctional relations between IT and the rest of the business touched a nerve. So much time, money and effort is spent on process and technology - when there are often far bigger organizational and/or cultural problems poisoning the well and resulting in very dangerous strategic decisions.

We kind of have the opposite problem. The in-house development teams are in the same organization as the people who replace keyboards, and the business users don't really think of us as different groups of people. "My monitor is broken" and "I have no automated way to perform [business task X]" are considered variants of the same problem, and us asking them how they want software to work is received as well as someone in tech support asking what exactly is wrong with a busted monitor would be. A spec will consist entirely of something like "Write an application to parse these files" and any attempt to get color on why is like pulling teeth. When the resulting application doesn't do what they want (as is inevitable), they blame us for loving up. The guy hired as a project manager literally rolls his eyes whenever anyone says the words "use case." It's like they think we're a machine that you put quarters in and get software out, and if they're putting their quarters in and aren't happy with the result, then the machine must be defective somehow.

Anyway I'm expecting an offer for a new gig this week :yotj:

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

Cuntpunch posted:

I feel like there's been a little bit of koolaid going around at work lately. So I just need a reality-check:
Writing modular, testable code hasn't somehow gone out of fashion with a fury lately, right?
I guess I wouldn't say it has gone out of fashion, just that it was hardly ever fashionable. Are you sure you're not just experiencing some reversion to the mean?

Vulture Culture
Jul 14, 2003

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

Cuntpunch posted:

I feel like there's been a little bit of koolaid going around at work lately. So I just need a reality-check:
Writing modular, testable code hasn't somehow gone out of fashion with a fury lately, right?
And by that I mean there's a bit of a movement starting amongst some of the other senior engineers in other teams that:
DRY is useless, just inline everything.
SOLID is stupid, 'everything in one method' - even when it gets to many-hundreds-of-lines is better than multiple logically separated classes.
Unit tests are dumb, just don't write bugs.

I know it's *probably* just the old imposter syndrome kicking in that I'd even ask this question but like...some of this is coming from people with reasonable skill - and has started to sway some of the architects a little bit as well, and so I begin to wonder if I'm the crazy one for finding this ridiculously undisciplined - the sort of thing I might be comfortable with in personal hobby projects that will never be public - but not professional code driving mission-critical functionality...Right?
I'm the apologist for everything, so nuance is important. I'm uninterested in dogma and really interested in the cases where any specific dogma breaks down. So I'll make a case for everything you've brought up:

DRY is necessarily the addition of abstractions, and those abstractions can leak badly if you haven't explored all the potential ways you might need to add a different use case or flow for something. As a rule, I'll usually copy/paste something a couple of times before I start to refactor stuff into a cleaner and less repetitive abstraction. I'm also okay with copying and pasting that abstraction itself before I start trying to extend it in some universal way. There's a point where exploratory code really needs to stop being exploratory, though.

SOLID is good for components, and bad for workflows. It's better to be able to trace a linear process through 300 lines of code than to chase it across two dozen classes that each inject behaviors into confusing control points (in a way that requires you to diagram it into 300 lines of notes to understand later).

Unit tests are great, but TDD is a bad fit for most applications that don't have reproducibility of results as their #1 development priority.


Sometimes people are grossly mis-incentivized or just lazy, though.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
DRY starts to make a lot more sense when you’ve seen the other extreme - a huge list of code with absolutely no iteration constructs. More bugs deep in from scrolling past literally 5000+ lines of repeated code blocks varying in just slightly subtle characters every so often. While really bad loops are certainly a problem, so is a lack of loops and conditions as well in a stable codebase. One project I worked on before couldn’t use for loops because the proprietary compiler we were using couldn’t optimize away loops and we were highly register limited so we had to manually unroll over 25k lines of assembly (and also tried preprocessor macros that also broke said proprietary compiler). Because it was a relatively small part of the codebase we never got around to try to break that down either.

Mad Wack
Mar 27, 2008

"The faster you use your cooldowns, the faster you can use them again"

raminasi posted:

We kind of have the opposite problem. The in-house development teams are in the same organization as the people who replace keyboards, and the business users don't really think of us as different groups of people. "My monitor is broken" and "I have no automated way to perform [business task X]" are considered variants of the same problem, and us asking them how they want software to work is received as well as someone in tech support asking what exactly is wrong with a busted monitor would be. A spec will consist entirely of something like "Write an application to parse these files" and any attempt to get color on why is like pulling teeth. When the resulting application doesn't do what they want (as is inevitable), they blame us for loving up. The guy hired as a project manager literally rolls his eyes whenever anyone says the words "use case." It's like they think we're a machine that you put quarters in and get software out, and if they're putting their quarters in and aren't happy with the result, then the machine must be defective somehow.

Anyway I'm expecting an offer for a new gig this week :yotj:

hmmm very familiar with this type of environment - "thanks for the meeting to go over requirements, can you take a look at my laptop while you're here? it keeps prompting me for a password when i check my e-mail. oh, also, are you good with excel?"

raminasi
Jan 25, 2005

a last drink with no ice

Mad Wack posted:

hmmm very familiar with this type of environment - "thanks for the meeting to go over requirements, can you take a look at my laptop while you're here? it keeps prompting me for a password when i check my e-mail. oh, also, are you good with excel?"

I guess it’s less that they literally think we do the same things as it is that they think that we can productively interacted with the same way. I do think it’s a holdover from earlier days though (that predate me) when the broken keyboard guy and the “Hey build me a database” guy were the same guy.

Munkeymon
Aug 14, 2003

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



Vulture Culture posted:

I'm the apologist for everything, so nuance is important. I'm uninterested in dogma and really interested in the cases where any specific dogma breaks down. So I'll make a case for everything you've brought up:

DRY is necessarily the addition of abstractions, and those abstractions can leak badly if you haven't explored all the potential ways you might need to add a different use case or flow for something. As a rule, I'll usually copy/paste something a couple of times before I start to refactor stuff into a cleaner and less repetitive abstraction. I'm also okay with copying and pasting that abstraction itself before I start trying to extend it in some universal way. There's a point where exploratory code really needs to stop being exploratory, though.

SOLID is good for components, and bad for workflows. It's better to be able to trace a linear process through 300 lines of code than to chase it across two dozen classes that each inject behaviors into confusing control points (in a way that requires you to diagram it into 300 lines of notes to understand later).

Unit tests are great, but TDD is a bad fit for most applications that don't have reproducibility of results as their #1 development priority.


Sometimes people are grossly mis-incentivized or just lazy, though.

I saw this in action last week. Our pentesters found that we needed better validation on uploaded files, so a bunch of validate $GENERAL_FILE_TYPE tickets went up after one person filled out some scafolding to make sure they'd get used where they needed to be, then various people grabbed them and started filling in implementations of validation attributes and writing tests for same. NBD, right? System working as intended.

No, there wasn't enough abstraction for the project lead. Now there are separate validators discovered by reflection injected into attributes and the unit tests for these things all derive from a abstract base template classes. The generic test from on high doesn't understand negative results, though. As in, this example file should fail validation. It also doesn't understand that some files don't have headers to validate, so I had to add a check that reflects out a private member to see if it should disable that part of the test.

My Rhythmic Crotch
Jan 13, 2011

raminasi posted:

I guess it’s less that they literally think we do the same things as it is that they think that we can productively interacted with the same way. I do think it’s a holdover from earlier days though (that predate me) when the broken keyboard guy and the “Hey build me a database” guy were the same guy.

Just curious since it sounds like you're already moving on, but did you attempt to remedy the situation in some way, or was it too far gone? How did people respond if so?

raminasi
Jan 25, 2005

a last drink with no ice

My Rhythmic Crotch posted:

Just curious since it sounds like you're already moving on, but did you attempt to remedy the situation in some way, or was it too far gone? How did people respond if so?

The problems are way above my pay grade, and the business has been around long enough that as far as they’re concerned, they have no need to change.

Lord Of Texas
Dec 26, 2006

Vulture Culture posted:

Unit tests are great, but TDD is a bad fit for most applications that don't have reproducibility of results as their #1 development priority.

I agree with your point about nuance being more important than dogma, but I do disagree with your statement here.

To me, TDD is not just about building a test suite, it's more just a better way to do reliable development, even if you throw the tests away once you move on from the feature/change.

My tests keep me in-line while I'm developing a feature, and sometimes they will catch bugs in the future if I come back to it, but other times I have to throw the tests away anyways because the customer/system needs (or our understanding of the needs) evolved to the point where the interface I was testing against needed to change significantly.

Vulture Culture
Jul 14, 2003

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

Lord Of Texas posted:

I agree with your point about nuance being more important than dogma, but I do disagree with your statement here.

To me, TDD is not just about building a test suite, it's more just a better way to do reliable development, even if you throw the tests away once you move on from the feature/change.

My tests keep me in-line while I'm developing a feature, and sometimes they will catch bugs in the future if I come back to it, but other times I have to throw the tests away anyways because the customer/system needs (or our understanding of the needs) evolved to the point where the interface I was testing against needed to change significantly.
I recommend everyone do TDD on at least one real project to build up this exact mindset that you're talking about—testable code is more likely to be orthogonal, composable code—and then decide from there if actually writing tests for All The Things is something they want to continue doing.

Polio Vax Scene
Apr 5, 2009



Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

Vulture Culture
Jul 14, 2003

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

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all
Working in Development: Unironic Agilefall

Macichne Leainig
Jul 26, 2012

by VG

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

Impetus for drinking.

Mad Wack
Mar 27, 2008

"The faster you use your cooldowns, the faster you can use them again"

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

depends... how many times has the project been renamed at this point?

Bruegels Fuckbooks
Sep 14, 2004

Now, listen - I know the two of you are very different from each other in a lot of ways, but you have to understand that as far as Grandpa's concerned, you're both pieces of shit! Yeah. I can prove it mathematically.

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

is there any other kind of project in software?

duz
Jul 11, 2005

Come on Ilhan, lets go bag us a shitpost


I'm sure there are occasional non-enterprise projects.

Pedestrian Xing
Jul 19, 2007

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

Webscale

Volmarias
Dec 31, 2002

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

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

Non trivial

Cuntpunch
Oct 3, 2003

A monkey in a long line of kings

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

Legacy

Fellatio del Toro
Mar 21, 2009

for me it's called Week 2

redleader
Aug 18, 2005

Engage according to operational parameters

Polio Vax Scene posted:

Is there a term for when a project has been going on for so long and become such a tangled mess that you just want to burn it all

Tuesday

Pollyanna
Mar 5, 2005

Milk's on them.


Life.

Pollyanna
Mar 5, 2005

Milk's on them.


Speaking of I just learned that we’re trying to process up to 2 gigs of JSON in memory and lol no loving wonder that fails.

Vulture Culture
Jul 14, 2003

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

Pollyanna posted:

Speaking of I just learned that we’re trying to process up to 2 gigs of JSON in memory and lol no loving wonder that fails.
Yikes. Sounds like a good use case for a SAX-type parser

Pollyanna
Mar 5, 2005

Milk's on them.


I’ll post a question about it at some point.

What is relevant to this thread is how the team lead swore up and down that we were not loading 2 gigs into memory and refused to believe me when I said we are and then pretended like he knew it all along when the engineering manager took one look and said “yes you are”. I really wish I was taken seriously, but I guess I just suck!

qsvui
Aug 23, 2003
some crazy thing
:sever:

Gildiss
Aug 24, 2010

Grimey Drawer

This brings up an issue though. How many loving times do we have to sever. Jesus Christ i'm so tired of updating my resume and sending it out every 1.5-2 years.
Just kill me already this sucks balls.

Greatbacon
Apr 9, 2012

by Pragmatica

Gildiss posted:

This brings up an issue though. How many loving times do we have to sever. Jesus Christ i'm so tired of updating my resume and sending it out every 1.5-2 years.
Just kill me already this sucks balls.

Organize ur workplace. It's all the same poo poo with different dressing.

OR

Get out of tech and start a bakery. At least then people get bread.

Keetron
Sep 26, 2008

Check out my enormous testicles in my TFLC log!

Cuntpunch posted:

I feel like there's been a little bit of koolaid going around at work lately. So I just need a reality-check:
Writing modular, testable code hasn't somehow gone out of fashion with a fury lately, right?
And by that I mean there's a bit of a movement starting amongst some of the other senior engineers in other teams that:
DRY is useless, just inline everything.
SOLID is stupid, 'everything in one method' - even when it gets to many-hundreds-of-lines is better than multiple logically separated classes.
Unit tests are dumb, just don't write bugs.

I know it's *probably* just the old imposter syndrome kicking in that I'd even ask this question but like...some of this is coming from people with reasonable skill - and has started to sway some of the architects a little bit as well, and so I begin to wonder if I'm the crazy one for finding this ridiculously undisciplined - the sort of thing I might be comfortable with in personal hobby projects that will never be public - but not professional code driving mission-critical functionality...Right?

My take is that they have been working with the code for so long that they know all the ins and outs and indeed, at that point these approaches only cost time while not delivering very much.
Now imagine two long time engineers go hiking together and get eating by a bear. Aside from the unfortunate but hilarious incident, how hosed would one be having to take over that code?
You write code once and read it so many teams. You write code not for you but for the next dev looking at it, even if that is you in 6 months.

Pollyanna posted:

I’ll post a question about it at some point.

What is relevant to this thread is how the team lead swore up and down that we were not loading 2 gigs into memory and refused to believe me when I said we are and then pretended like he knew it all along when the engineering manager took one look and said “yes you are”. I really wish I was taken seriously, but I guess I just suck!
Just your casual sexism at work, it seems to me.

Gildiss posted:

This brings up an issue though. How many loving times do we have to sever. Jesus Christ i'm so tired of updating my resume and sending it out every 1.5-2 years.
Just kill me already this sucks balls.
Go contracting and consulting. Same amount of job security for double the pay, the rhythm stays the same.

BaronVonVaderham
Jul 31, 2011

All hail the queen!

Gildiss posted:

This brings up an issue though. How many loving times do we have to sever. Jesus Christ i'm so tired of updating my resume and sending it out every 1.5-2 years.
Just kill me already this sucks balls.

This is the primary reason I'm really trying my hardest to get back to my original field (astrophysics) after I'm out of Florida, beyond wanting to work on something I actually care about. I had this same existential crisis when I realized it's considered normal and expected to move around every few years in the development world, and realizing that's what the rest of my natural life looks like gave me flashbacks to the opening cutscene from Stardew Valley.

Current plan A is: 1) Girlfriend finishes PhD and gets a job in Baltimore and we gtfo of FL, 2) Get job with Space Telescope Science Institute at Hopkins who I interviewed with in 2011 and was told I didn't have enough programming experience yet, 3) Hope JWST doesn't explode on the launch pad, 4) Work on processing that thing's epic data stream for the next 25 years.

Plans B-F are the same thing but in various other cities and not quite as epic or as sure a thing (I figure with STScI if I almost got the job with no experience 8 years ago, I should have no issue with my current resume).

My Rhythmic Crotch
Jan 13, 2011

Gildiss posted:

This brings up an issue though. How many loving times do we have to sever. Jesus Christ i'm so tired of updating my resume and sending it out every 1.5-2 years.
Just kill me already this sucks balls.
You don't *have to*. I think we tend to forget how good we have things (generally speaking). I see countless recommendations to "sever" here over what I consider trivialities. Those annoyances are going to pop up at any job after the honeymoon phase is over. At the beginning of your career, sure, you can advance quickly by jumping around every 1-2 years, and I've seen that in other engineering disciplines as well, not just software.

At some point though, I started feeling like the bar for changing jobs started getting higher. I don't want to give up my 5 minute commute, I like being able to disappear for 2 hours at lunch sometimes, almost never work OT, etc. An extra $10k per year is no longer a life-changing amount of money.

Adbot
ADBOT LOVES YOU

Macichne Leainig
Jul 26, 2012

by VG
I like to vent about my job a lot. I still love it, even if my coworkers are dinguses. But that's a problem you'll encounter literally anywhere.

The benefit of my job is I get to stay at home, work remotely and only seriously work 2-3 hours out of the day, so that leaves the rest of the time for... whatever the hell else I want to do. And that's definitely not something to complain about.

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