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
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.

Ithaqua posted:

Kanban isn't a project management methodology. It's an apples-to-tractors comparison.

Kanban is a power practiced by fake agile practitioners. If fake scrum doesn't work, put your user stories and tasks on a kanban board, and stop telling people that they need to get stuff done by the end of sprints.

Adbot
ADBOT LOVES YOU

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.

ratbert90 posted:

What is wrong with gant charts and a simple research -> implementation setup?

Why do companies think they need to reinvent everything?

Gantt charts are useless because nobody really knows how long stuff is going to take to implement past a couple of weeks - the chart is also evidence that you don't know what you're talking about because the dates it shows are incorrect. Now if you start calling two weeks periods "sprints" and story points "days", and get rid of the chart, you don't have to move the bars in microsoft project anymore - this saves the project manager time that can be spent doing something more useless like calling useless meetings or drinking.

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.

Pollyanna posted:

I'm a little worried about my current workplace's project methodology.

We had a...spring planning-like-thing today for deciding what to do about our new project that spun out of an existing one. Here's a few things I heard and learned in the ~2hrs of meeting time:

  • I heard the phrase "I'm thinking 4-5 versions out" more than once.

  • No one could agree on what the MVP was, or even understood that an MVP is meant to be minimal. The original attempt at it was easily an 8-12 month job.

  • We've planned out the entire UI before writing any code, speaking with our users, or even starting our first sprint.

  • The entire wireframe for the app was drawn up last Friday by a designer we borrowed from another team. For the fully-featured, detailed and bedazzled with extra features version of the app. By the end of the meeting, we decided to ditch all but two of the wireframes. The designer was not happy.

  • That doesn't mean we're not going to use the wireframes, no sirree. The wireframes are still gonna be forwarded to the UI/UX team 3 hours away, which isn't the same team as the UI/UX team where I work and their role in the project is ??????????????, and once a month the team will sit some users down and demo them the wireframes, and get some feedback, which they pass back to us eventually. Tight iteration loop, this ain't.

  • Endless bikeshedding and arguing over the fields on a data model we don't even know is valid yet.

  • Awful communication issues and Waterfall out the wazoo.

  • Terrible scoping for features that we came up with ourselves, with no input or requests from the users.

  • In the database we're factoring out into a separate API (maybe, none of us are clear on if we will or not), the default Postgres primary keys were disabled for the people table and replaced with strings. These strings represent ID numbers for real world people. Real world people change these numbers often. People can have more than one of these ID numbers. The call for finding a person by ID looks like this:

    code:
    person = Person.find('AA######')
    



:yikes:

I was told by another engineer a few days back that part of the reason I was brought on was to help drive the team closer to agile and to improve our process. I genuinely don't know if I can do this all myself. I'm still learning the basics of agile and even though I'm reading as fast as I can about creating user stories and making tight iteration loops, I still am not the Expert Team Fixer they clearly need.

I'm torn between scrambling to save this project, or just sitting back and letting it go off the rails, distancing myself from worry. I feel too bad doing the latter, but I don't know if I can take on the responsibility of the former.

One thing that can really gently caress up a project is having too many people on it when it starts. It sounds like you have too many people on the project.

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.

dividertabs posted:

I can't convince my team to loosen the PMD rules that enforce Javadoc. So 95% of our public methods look like:
code:
/**
 * get the user name.
 * @param accountId the account ID
 * @return the user name
 */
public String getUserName(final String accountId)

Yeah I loving hate that poo poo. The only thing that might be useful in the comment (the description of what the method is intended to do and why) is optional, everything else is mandatory.

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.

IAmKale posted:

Do you guys have any suggestions for finding recruiters who might help with an upcoming job search? I want to get into Python/Django development but I'm not all that eager to enter my resume a dozen different ways for just as many application systems. I'm hoping that getting a real human involved this time around will help streamline the search process.

Edit: Oh hey, apparently Cybercoders is a lovely company, go me :smith:

I don't think recruiters are that good for entry level people - if it's not your first programming job, a recruiter is a fast way of getting another job, but if you don't have something lined up and you already graduated, you should either intern or work as a contractor.

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.

KoRMaK posted:

Serious question - when does it matter? When is NoSQL better over SQL?

It's great for toy Web Apps. Just json.stringify whatever records you want to store and it's entirely possible they'll come back as json again. Might take 5 minutes to make a functioning backend.

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.

Cuntpunch posted:

It's funny you should mention branching!

We have *constant* issues with merge issues while working in a single branch. We're on TFS, and the team doesn't compulsively Get Latest and then *review* the diff before checking in. So especially when two different devs have added files, we just have stuff randomly get dropped from the project, etc.

Dude's solution? Clearly every single dev should create a brand new branch every single sprint for every single slice of every single story they're working on! More branches, less problems!

:smithicide:

This is sadly rhetorical, but why is this a technology problem? Why not roll back the changesets of people who do this and fire people who don't look at the things they check in? Nope, clearly the answer is branches and unit test guidelines with code coverage percent thresholds, instead of just not hiring morons.

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.

My Rhythmic Crotch posted:

Medical software by any chance?

Medical software companies like to pick some combination of "microsoft as gently caress", "let's build our own programming language", "web based client assuming you install a bunch of activex controls in IE."

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.

Pollyanna posted:

I've learned that it is actually possible to be completely paralyzed by regression testing and thoroughness. I have at least three PRs that have been up for over a month now that haven't budged because one or my co-workers insists on writing regression tests for every single possible result, i.e. "happy" and "sad" paths, such that it's taken about 10 times longer to deploy a feature than it should. I have no issue with regression tests, and in fact I'm trying to port the regression team's tests to Capybara so us developers can write our own tests, but it's gone way off the testing deep end without really accomplishing anything. She's seriously slowed down development due to overthinking everything and has been rather difficult to work with recently (which might be due to the fact that she's manually pulling the branch for each PR and running the manual clicky-clicky regression test on each one). The weirdest part is that she's very reluctant to let me look into establishing Capybara tests for our app so that we devs can write and run feature specs ourselves, instead preferring that we continue to write manual tests and click through everything on any PR we make, even for one-liners.

I genuinely don't know what to do with her, but I'm getting frustrated enough that I'm just taking on tech debt tickets to alleviate her need to manually regression test everything solely because I'm sick of her holding everything up. I recognize the need to ensure correctness of your app, but there's a loving limit to it and automation relieves a buttload of issues yet is still being resisted by her. :shepicide: Driving technical change is balls.

I ran into this problem with a project that had a bunch of manual QA people who were writing an endless amount of manual regression tests. I canceled the project and they all got canned.

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.

Docjowles posted:

I see you've met my coworker, who views the world in two buckets:

1) things he wrote himself, which are cool and good

2) all other code, which is worthless garbage written by idiots for idiots and you should be fired for using it because it's awful

I'm that guy, but in my defense I write javascript for a living.

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.

Pollyanna posted:

That is the broken down version. What I end up doing is looking at the parent story and writing down the requirements/my own breakdown in the ticket before I work on it, just so people aren't like "BUT I EXPECTED THIS" because I constantly run into that problem and am extremely sick of it. :shepicide:

I have a question. When is it appropriate to use a Scrum-like approach, and when is it more appropriate to use a Kanban-like approach? I've found that for projects that aren't super heavily structured and are kind of pick-things-up-and-work-on-them like ours, Kanban works way better than Scrum because nobody really knows how much is gonna be worked on and when things will be done. v:v:v (But we still do Scrum because management is absolutely terrified of not having numbers and estimates and things to judge worth, value, and performance with.)

Scrum is used when your company has recently decided that the whole "agile" thing is a good idea and hired a bunch of consultants to give everyone planning poker cards.

Kanban is used when scrum is not working for your company because it doesn't have enough of an attention span to group stuff into sprints/split user stories into sprint-sized chunks/complete work in time boxed sprints. As near as I can tell, Kanban involves stacking a bunch of tasks into a queue, prioritizing them, and continuing to execute until you run out of tasks, but still filling in the same reports and calling stuff sprints. It's like being a Mennonite instead of being Amish - you dress the same way, but don't quite do all the crazy stuff the consultants tell you to do.

Keep in mind I've never worked a place where doing scrum didn't seem like getting paid to play Dungeons and Dragons, so maybe there are like true believers?

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.

smackfu posted:

How do you deal with people being late to standup?

make it a meeting actually worth going to that only lasts ten minutes? don't do it at 9am? have a t-con number so people can call in if they can't physically be there for some reason?

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.

Steve French posted:

How the gently caress is that an entire job?

Because it's Scrum(TM), so you gotta have a scrum master and a product owner in every meeting. Assuming the ideal size of a scrum team is like 8 or so people, that means you can bill an extra $100 an hour for every 7 people working on the project. That adds up.

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.

Colonel J posted:

I've been working in development for a few months now (love it) but I noticed that programmers, at least the ones I interact with, tend to use phrasing like "oh yeah, I'm a dumbass" and various other self-insults a lot. I think it's pretty annoying as these people are clearly not stupid, and it's just self-defeating for nothing, pessimism and focusing on the negative. I hate it. Anybody else see this trend/feel this way? Should i just chill out and it's just a turn of phrase, or a window into a problematic part of working in dev?

I'm really hard to not be pessimistic when you spend so much time fixing your own mistakes. Most other fields are a lot more fault tolerant. Bugs also hurt if you take pride in your work.

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.

revmoo posted:

The Linux kernel needs like 8 minutes on decent hardware. 37 minutes is either a neural algorithm designed for HFT, modeling the human genome, or poo poo loving code.

Just imagine if it were ported to C++, it'd take two hours to build.

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.

redleader posted:

In scrum, everyone on the team is known as a 'developer'. Is this because:

  1. Scrum was created for software development, and therefore teams are composed almost entirely of software developers?
  2. Everyone on a scrum team is so cross-functional that everyone is equally useful as a software developer, no matter what their original skillset was?
  3. Team members are 'product developers', not software devs as such, and develop a product as opposed to software? Therefore it's still correct to call them developers, regardless of their actual job (design, test, dba, etc)?

I'd always assumed it was the cross-functional bit, but someone sent a scrum master on a course and now he's bringing up questions.

4) Developers get billed for more money. This trick lets you add a documentation writer, three qa, a product owner and a scrum master to a team of four software engineers and bill for ten developers.

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.

baquerd posted:

At a previous position, I just told my manager we'd get him whatever numbers he needed. I then created a class with 10k loc and 100% coverage that did nothing and wasn't connected to anything. His bosses loved the code coverage numbers our team consistently delivered.

There was one tool I tested for doing C++ code coverage where if you instrumented a templated function, the code coverage would count for every instantiation of the template - e.g. for

code:
template<typename T>
void f(T s)
{
...
}
Every single type passed in would be considered more lines of covered code.

So you could effectively make the code coverage whatever you wanted just through a bunch of macros.

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.

Carbon dioxide posted:

How do you deal with CHAOTIC programmers?

I had to work with this guy for a while. He's very knowledgable about a lot of the more complex programming principles, frameworks, all that. And overall he's not a bad programmer either, quite experienced.

But he's always running around dealing with 5 different tasks at once, like I ask him a question, he's halfway through explaining it, someone walks by and he just drops the explanation and runs after that other person because he has something to discuss with them.

Or he comes up with a good idea, I get assigned to actually code it, and just when I'm about done he decides the implementation should be entirely different and I can start over.

Or he's in a hurry, we need to make a bugfix release, he's got a solution, but puts the line on the wrong side of an if or for bracket, making the situation even worse.

I'm a very ordered person and others have told me I'll just need to learn to deal with people like that but it annoys me SO MUCH.

There are some "hero" programmers who respond to being over-utilized by trying to do everything, instead of pushing back. They'll work incredibly late hours, they'll fix (and create) half the bugs in the product, they'll be management's go-to whipping boy when some problem comes up. Unfortunately, this looks like productivity to upper management, so they'll usually end up in a senior/lead role far before they're ready.

This will start causing a bunch of problems both for the hero and the team:
1. Doing poo poo quickly causes more problems later. Customers are never really happy with "oh, sure, the feature only half works, but on the flip side, it only took a day to implement."

2. Too much pressure can lead to shoddy development practices. It's very easy get stuck in a pattern of only testing happy paths under release pressure/ not writing unit tests at all / not refactoring appropriately. Bonus: shoddy development practices produce more crises, so more opportunity to be a hero!

3. Adding a bunch of poorly tested, quickly designed code rots the codebase. Regressions occur even though unit tests pass and nobody knows why.

4. Everyone who works like this burns out eventually, it''s only a matter of time. Addressing bugs caused by technical debt becomes a full-time job, and the people who get promoted and get raises are going to be the people who don't cause problems, produce well-tested code that can be maintained by anyone, and can easily switch onto sexy new projects without being missed too badly by the old project - the hero will get stuck maintaining the legacy product and resent that the people who were chill and don't cause problems get bigger raises/promotions, and burn out through perceived lack of recognition of their "sacrifice."

Don't be a hero, and if at all possible, try to work in a place that has practices that mitigate these problems (e.g. competent leadership, good code review practices, good unit test practices.)

However - the case could be that the dude isn't overworked, and is just a dipshit. In which case, gently caress that guy.

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.

Volguus posted:

There are ways:

Nested if/else to hell and back
Return checks that will free whatever has been initialized until then (and pray you don't forget something)

Or you can choose to keep your sanity, don't adopt blanket rules (such as never use goto) , and just use the thing and not behave like a child.

I think the rule really should be "don't use goto to jump to a label in a function that is before the goto statement." I've only found goto really terrible when someone uses goto instead of for loops or do-while loops.

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.

Keetron posted:

On linkedin I changed my title to "Software Engineer in Test", I think it will save everyone a lot of time and frustration during the interview process.

I hate to break your bubble, but as a SDET in a previous life...
- SDET? Isn't that the same as a automation engineer? Go write tests for a legacy application in WinRunner or QTP.
- SDET? Wow, great! Our engineers don't have enough time to write to write their own unit tests, you can totally write unit tests written by people who don't understand how to write against interfaces instead of implementation or what dependency injection is.
- SDET? Well we're Agile (if you read between the lines this means scrum whenever it's mentioned in an interview). Can you write automated tests for features that don't exist at the beginning of the sprint within 2 weeks?

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.

CPColin posted:

Well that's what I get for turning off that feature because I didn't like the spacing, I guess! Still would rather see the "unused code" warnings show up without having to fart around with the Code Analysis settings.

Edit: poo poo, that's ugly. And it fades in? Turning it back off.

AFAIK C#/C++ will warn for unused code out of the box using debug builds, but won't check release builds for unused code.

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.

Messyass posted:

If she's talking about the LINQ query syntax I kinda agree. That stuff is nasty. The method syntax is much nicer.

Also, there's no reason that deploying a new version of the code should be harder than changing the database, but you probably know that already.

The advantage of soft-coding your database queries is that if you write code and whatever does the queries is in the code, then you can't throw a dedicated DBA at the problem if a field issue comes up, you would need to involve a developer. Usually even in places that have fully automated deployment, getting a local dev environment set up and being able to test changes to it is relatively difficult because the same people who would put queries in source code are going to be the same people who don't unit test or who don't have meaningful unit tests of the code that talks to the database.

(Note that this depends on what kind of software you develop. I'm going to write this from an application software perspective, assuming that the product is an enterprise software solution where you have some sort of central database and a client that is used internally, and your solution sells a database and this client to your customers. From a pure webdev standpoint the stored proc thing makes no sense and shouldn't be done)

It doesn't even really have to be multiple stored procs, you can soft code your DB logic by having, say, one stored proc that's a command name and arguments, and then having a table in the database with the command name, and the corresponding SQL that should be executed (don't sperg about this, you probably shouldn't do exactly this in your architecture but i'm using this example as a pedogogical tool.) The application can then just communicate with the DAL by passing command name and args, and the database can decide what actual SQL to execute should be.

The advantages of doing that are:

a) Fulltime dba can make modifications without changing source/building/deploying to customer sites
b) Easier to make your client backwards compatible because the older versions of the queries will be in db, not in client, so if a newer client connects to old database, since it communicates in commands, it knows to just do the old queries
c) Makes testing your DAL easier because you can just stub out these commands during integration tests by changing a single table rather than having to make a more complicated test fixture.

Bruegels Fuckbooks fucked around with this message at 10:58 on Oct 13, 2017

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.

Sagacity posted:

:whoptc:

Are you serious? How do you deploy and version control this clown car of a development strategy? How do you even pass arguments and receive results in your code if you have to assume the database code can change at any time?

I mean, I'm all for DBAs being able to write decent queries but this seems...unideal.

Welcome to enterprise software. It makes perfect sense when you have customers that run 15 year old versions of the database and refuse to upgrade but still want to use the new client and have it be compatible with the old system.

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.

Carbon dioxide posted:

I'm currently in my second job as a developer, and at both companies, Scrum was implemented as intended instead of half-assed and we didn't take it too strictly, as in we diverted from the guide when we discussed that doing so would help us out. The management left us alone to run it as we saw fit and/or actively took part in discussions about how to make Scrum work even better.

In both places, Scrum as a method works. We got poo poo done in a much more efficient way than would otherwise have been the case.

So, reading this thread, I can come to a couple conclusions:
- Scrum works perfectly fine for development teams when implemented as intended and when the specific implementation is decided and then supported by the whole team.
- Scrum is an active impediment when implemented incorrectly.
- Most people posting here work for the wrong companies.

I probably wouldn't hire anyone who'd dismiss Scrum out of hand. It either means they're shaded beyond repair by companies who got it wrong, or they are just unable to work in a team. On the other hand, having strong reservations about it is fine, especially if it leads team members to take the initiative to improve the way of working.

I have about seven years worth of scrum experience. I think the problem is, ironically, "individuals and interactions over processes and tools" - if you are on a team consisting of relatively solid contributors and hands off management, your project is going to succeed regardless of the methodology you choose.

I believe that scrum proponents are actually inverting cause and effect - my suspicion is that rather than improving or hindering team success, scrum itself has nothing to do with the actual productivity and performance of the the team - scrum just fails so badly in situations with poor people/poor management that it acquits itself because everyone involved in the failure goes away thinking it wasn't implemented correctly, so people don't chalk up the failure as a "scrum" failure because people "weren't doing it correctly", so you end up with survivorship bias - the people who were on projects with good people who were using scrum attribute the success to scrum rather than being on projects with good people, and then go around evangelizing the virtues of scrum when they're really just saying "previously, I worked on projects with good management and good coworkers. You should try doing that everywhere."

My intuition is that process either doesn't matter, or if does matter, than there is probably a process more optimal for non-sunny day situations than scrum.

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.

Doom Mathematic posted:

This drills down into the core question: does there exist a methodology by which mediocre developers can produce good software? (Defining "good software" is left as an exercise for the reader.)

1. Having concrete, clear requirements up-front. The requirements can change, but there should be a concrete starting point.
2. Having actual architecture, documentation about said architecture, and leadership.
3. Mandatory code reviews before commit.
4. Automated testing.
5. Having a big, monolithic QA team.
6. Continuous integration that enforces code review and automated test requirements.
7. No hard deadlines, just ship when it's done.

Scrum is more:
- Show up to a meeting every single day for fifteen minutes at good companies, or one hour long at bad companies
- Planning poker cards ("So a story point is really like a day, right?")
- Increasingly strange meeting names like Scrum of Scrums
- (for bad companies) Potemkin village software created for the purpose of the sprint demo every two weeks
- We need to get our velocity up so we can meet this fixed deadline that absolutely can't change.
- Hours of retrospective meetings and planning meetings.

Even good scrum is relatively meeting-intensive - bad scrum involves spending literally hours a day in useless meetings.

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.

ChickenWing posted:

I feel like your av is extremely relevant

He was in a movie that's way more appropriate for this situation

quote:

1st Bob: So you physically take the specs from the customer?
Tom: Well... No. My secretary does that... or they're faxed.
2nd Bob: So then you must physically bring them to the software people?
Tom: Well... No. ah sometimes.
1st Bob: What would you say you do here?
Tom: Look I already told you, I deal with the @#$% customers so the engineers don't have to. I have people skills! I am good at dealing with people, can't you understand that? WHAT THE HELL IS WRONG WITH YOU PEOPLE?!

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.

Doom Mathematic posted:

It shouldn't be necessary to understand the entire codebase in order to fix any single bug.

Right, but sometimes bugs are indicative of a larger design problem. Like for instance, we had a class that would propagate the effects of an operation to other views on the same screen that contained similar data. A class "propagation handler" sprung up that was full of awful procedural code that would iterate through everything on the screen and try to find the entities that were similar. Offshore just kept hacking that class until it worked - however, the underlying cause of the problem was that the cardinality of the relationship between the data and the view was inappropriate, and that they were doing procedural-style copying the data to the view rather than having all the views point at the same underlying data, which is loving stupid.

The point is that when doing maintenance work, you need to do a second-level "why" - too often you throw an inexperienced (or even an experienced) developer at a large project, and they just fix the bug. I made a mistake as a lead because I saw there were a bunch of bugs related to propagating operations, but I was busy and didn't own that area of the code, and now I have a loving mess on my hands.

If you work with large codebase long enough, being able to detect issues like these and mentally fill in the relationships between the classes yourself (don't work off the diagrams, they're all bullshit) will greatly accelerate your ability to contribute. But don't just fix the bug, figure out the cause of the bug and the cause of the cause.

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.

Ither posted:

When a fixing a bug, when do you band aid and when do you burn everything down and start from scratch?


Asking for a friend.

The big problem with burning everything down is that
a) The code you burn down becomes your problem until you switch jobs
b) It's going to take a while, and it's almost certainly not what your boss/po asked you to do
c) If your new thing doesn't turn out better, you'll piss everyone off.

Good reasons to throw stuff out:
1. The old code is based off a technology your company is getting rid of
2. The performance really bad and it's not obvious why the task should take as long as it does
3. The code has never hit production and just sucks
4. The requirements of the product have radically changed and it's not worth inheriting the technical debt of the old project. Sometimes engineers will mysteriously hold on to stuff that's not worth saving.
5. There are lots of intermittent issues that are difficult to troubleshoot.
6. You spend days reading code in classes seemingly completely unrelated to the problem you're trying to solve, but actually is totally related for reasons.
7. There are no tests of any kind. Sometimes you'll get a project with no unit tests but an army of QA - don't junk a project like that, it'll be like going to the dentist. But a project with no tests whatsoever that also doesn't work and QA doesn't know about it is totally worth junking.
8. The majority of the code of the project is unrelated to the project domain. Like if your spreadsheet app has 300,000 lines of code reinventing the dropdown menu, something is hosed up.

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.

Votlook posted:

I work at a small company with a few other devs, the CEO just informed us that the CTO (my direct manager) will be devoting all his time on completely rewriting our core product completely on his own, and no longer manage the dev team.

I should start sending out resumes, right?

either that or he should start sending out his resume. it's unlikely that a commercial product can be completely rewritten by one dude in a short period of time, and you also have to contend with second system effect - he may have shot his mouth off in a meeting about the quality of his developers and said he could do it better, and ceo called his bluff.

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.

Rubellavator posted:

Reminds me of trying to convince some developers on the other-side of the house to use E2E tests. Talking about, set up database with empty schema, insert some data, run a test. They kept trying to make the point that the application HAD to be tested with production data, because real world data blah blah blah. I kept trying to tell them that they as they found more bugs from their real world data, they could add test cases to cover them. Nope, I just didn't understand how wacky and crazy their data could be, there was no point in even trying cause you're bound to miss something! To be fair, I don't even know what their application did besides handle large amounts of questionable data as part of some kind of pipeline process.

for some strange reason developers and software test people have some sort of tortured affection for logical positivism. one of my big interests undergrad was epistemology, and working in software, Iroutinely come across ideas about how we know what we know that were shown to be bupkis 400 years ago.

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.

Pedestrian Xing posted:

After keeping my projects independent and "off the board" for a year I finally had to start using scrum/TFS and it is the biggest waste of time. Takes more time to write stupid loving first person task descriptions than it does to do half of them. Also love 4+ hour weekly meetings and 40 minute standups every day.

yeah that happens with everyone once upper management decides that you have to be Agile, but wants like a ton of meetings.

generally though:

a) user stories should be higher level - shouldn't have to justify every task, just a goal you're working toward.
b) everyone should just talk to people when they're having problems instead of waiting until the scrum to do it. that meeting is punishment for not taking initiative to work with your team. if people are actually using the meeting to communicate real information or be like "i'm blocked because i'm waiting for so and so to do his thing", your team is defective. similarly, poo poo like the scrum of scrums or other arbitrary meetings are punishment for not communicating offline.
c) once you've reached step b), you'll still have to contend with all the sprint estimation stuff. the way to fix this is to say you're switching to kanban. with kanban you can fill out the same forms as scrum and use the same template, but the numbers reported don't actually mean anything, because velocity is meaningless when you just keep doing stuff until you run out of stuff to do.

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.

KoRMaK posted:

Fundamentally, I don't know how you can't see that the current things that companies chase lead to exploitation of their workforce and that unions help the workforce push back against that exploitation.

Say you're 16 years old in the US and want to get a part-time job at stop and shop. A month after you start working, you get hit with a 'union entrance fee' (it was 100 bucks in 2002, I hear it's 500 dollars now) and have to, after paying it, pay 9 bucks a month from then on to stay in the union, otherwise you get fired automatically as a result of a contract the union has with the grocery store. That loving sucks. It's difficult to view a union constructed this way as anything but a mere extension of the corporation itself - the notion of a 'union shop' places the union in a position where it is a mere sock puppet of the corporation. Moreover, you now face the situation where if you try to get a raise, both institutions (the union and the corporation) will blame each other for not being able to improve your situation.

I like the idea of unions but the actual implementation in the US is loving terrible, and a lot of us get exposure to unions through bullshit like the above. There are good unions - my grandfather was a teamster, and that's a union that really knows its poo poo - but in reality, they behave more like the teacher's union and the stop and shop union in the US.

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.

Pedestrian Xing posted:

I learned today that apparently management wants to start using TFS to compare our performances against one another. How big of a red flag is this? :confused:

i would think of it as an opportunity. tfs metrics are incredibly easy to game - according to tfs metrics, I'm by far the best developer in the company and have a velocity 35x that of average. i'm getting promoted to architect soon - food for thought.

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.

Ape Fist posted:

Senior management is fully aware of the absolute dogshit that offshoring has brought about. We're months behind on a major project for a Government client and it's largely in part due to our Indian office literally sitting on their hands and doing loving nothing. I have 3 outstanding issues in my user-stories right now that require back-end fixes for bugs I was assigned like 2 weeks ago. I had to go to my project Manager on Friday and sit down with him and explain why poo poo has been sitting in my VSTS list for loving ages and it looks like I'm not loving doing anything. This is only going to get loving worse.

I mean, it might be different where you work, but generally, if I'm dependent on another team for something, I'll un-stick the user story by learning their component, making the change I need, and throwing a review.

The benefits of doing this are:

a) It's a great way to learn new technologies (or ancient, bizarre ones) and make yourself more marketable while getting paid for it.
b) People are not going to say no if you do their work for them.
c) You learn more about the system and will be able to troubleshoot and triage bugs more easily.

Like if you're dealing with say, binaries provided by a third party, there may be limits in what you can do - but so long as your back end developers are checking in source code that you can read, it'll look a lot better to say something like "yeah, it looks like a problem in the back end. I made a task for the back end developers but they've been slow, so I'm trying to learn the back end well enough to fix the problem myself and send a review."

Now if you're in a place where you're like, flat out not allowed to just go into someone's project and open a PR, then that is some weird poo poo (it may be justified in isolated instances, I don't know). There are also places where the instructions for doing a build aren't written down or are fifty pages long, and it takes a week to set up your dev environment and half the time it doesn't work - in those cases, you should relax and stop worrying about your individual contribution because the project is hosed anyway.

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.

Yeah, I'm going to start bringing this up at work.

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.

Shirec posted:

Blood, sweat, and tears, we got 1.0 ready to go, rickety and buggy, by mid December. Boss presents it to CEO, CEO says he wants the ability to pause this and that, do some other things that make multi tenant completely infeasible. So we have to re-do all of it. We get a week and a half of blissful vacation and come back to this news.

omfg are you working on a vna (vendor neutral archive)?

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.

Shirec posted:

No, we’re a messaging platform. We take uploaded information from whatever health care facility and perform some sort of messaging action with it. Payment reminders, surveys, reminding people to get their H1C1 levels checked, etc etc.

that's almost a relief, if those kind of HIPAA problems were going on with someone working on a VNA, that would be the most ridiculous lawsuit ever.

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.

Keetron posted:

When I invent a time machine, I will first go and kill the grandparents of the guy who invented SAFe and only after I will go after the guy who killed Hitler.

the problem is that it's an idea so bad, it couldn't have been invented by one person. poo poo like safe catching on is why you should hire philosophy majors to run your business instead of mbas or business majors.

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.

Munkeymon posted:

It sounds like the 'magic error translator' is actually i18n which is a valid use case for magic number translations on the front-end. Or course, you can send a magic number and an error message in the team's common language just as easily most of the time.

Back in the C++ days when we were doing i18n and needed to stop doing a build for every single language, we made a dll where you'd pass in the 'developer english' string, and it would spit out the string in the locale's language. Worked great. Now it's 2018 and I'm doing web dev and we're doing magic numbers for i18n strings in the client. Even though it's a little more space, using developer english plus a lookup table is much easier than dealing with mickey mouse magic number bullshit imo.

Adbot
ADBOT LOVES YOU

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.

Che Delilas posted:

Welp, big ol' priority shift with a laughably short deadline for the requirements that we heard about late last week (with no input from the devs before the deadline got set, naturally) got shortened again by 25% today (yeah that's indeed about 2 business days between those two events). Meanwhile, interrupted with "hey can you look at this bug" all day.

Deadlines are lawn dart thrown with a blindfold on at best, and that's when devs have input on the amount of work before they're decided. These guys are dreaming, and no we aren't going to be putting in unpaid overtime for any of this poo poo. This is years and years of picking the cheapest dirtiest hacks every single goddamn time and never letting us pay off any of that debt. Well it's come due now motherfuckers and the interest is going to make you cry and I'm going to sit here laughing at you while you do.

I had hope earlier this year. They made some hires that made me think they were willing to change direction, and those new hires have been trying, but like clockwork, as soon as the pressure is on they go back to the only method they really understand: pressure us for the cheap and dirty hacks and start lecturing about the "realities of business" when we try and push back. My favorite reason, the reason they go to most by far, is "But it's <whatever customer is shrieking loudest at this moment>. We HAVE to!"

I need to find a place to work where they don't do this 100% of the time. 80% of the time would be fine, seriously. I don't expect management to fully grasp what technical debt does or why it matters that we spend time coming up with a good (note: not necessarily perfect) solution. I just want them to trust me when I tell them that we REALLY NEED some maintenance programming or that we REALLY NEED to not go with the first bullshit hack the junior devs come up with, and then back me up when I make that decision. I'm not going to do it all the time and I'm not going to randomly refactor something on a whim just because I learned a cool new programming thing.

:sigh:

Sorry for the rant. I like a lot of the things about my job and I don't want to leave for those reasons. But this poo poo is starting to eclipse it all.

Years ago, I was a lot more willing to do things like rush implementation or write stuff without unit tests just to make management happy.

Here's what I found happens:
1. You look like a hero... then you have to maintain that poo poo.
2. It does not look impressive to anyone if you say there's technical debt - that sounds to management like you hosed up, even if it's nobody's fault.
3. The people who made you work sixty hours a week to make a customer happy get promoted. You get to keep fixing the poo poo hacks you wrote forever and get 2% raises while doing it.

I mean, yeah, that place is hosed up. But when you go to the next place, show some backbone, and go at your own pace.

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