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
ChickenWing
Jul 22, 2010

:v:

smackfu posted:

OMG, when agile meets an entrenched DBA group, so painful.

"Ok, you want some columns added to a table. That's pretty simple. Let's have a meeting to discuss the purpose of the columns. Then we will add them to the logical data model once you provide descriptive names for each. Then the other DBAs will translate that to a physical data model and then they will provide the SQL and you can submit a request to get it implemented. You do have funding, of course?"

That process has been going on for almost a month now.

And this is blocking a ton of stories of course, that are only waiting on final column names.

I viscerally know that pain :smith:

Adbot
ADBOT LOVES YOU

ChickenWing
Jul 22, 2010

:v:

Pollyanna posted:

Dramamine makes you extremely sleepy, I've learned.

I've also realized that the grand majority of the issues and problems I face in my software engineering career come not from software itself, but from the people involved. I can't write a program to tell the VP that we should fix technical debt before shoving more features down users' throats, I can't write a program to justify an expensive solution which already has a cheaper and more useful alternative available, and I can't write a program to give our team good project management and product direction. The code itself is the least worst part of my job, the people are easily the hardest and the worst. :(

I don't want to do project management or product development, not at all, and I'm balls at working with people - but even I can see that these are the weakest links in software development these days. The worst part of computers isn't the computers themselves, but the people using them.

Working in Development:The worst part of computers isn't the computers themselves, but the people using them

ChickenWing
Jul 22, 2010

:v:

PT6A posted:

How do you get to be a programmer that someone would actually hire without learning something about memory management and the difference between the stack and the heap? Are these the sorts of shits being turned out by "boot camps" and "code dojos"?

I feel like there are a lot more self-taught people out there than anyone wants to admit, and the self-taught people I know have some gaping holes in their theory knowledge.

ChickenWing
Jul 22, 2010

:v:

I worry a bit because I want to get into jobs that will likely require decent C++ skills and, while I'm better at pointers than most people I went to school with, I still only took two classes that dealt with C. Core classes were all java, fringe classes were all academic languages (let me tell you about Eiffel :shepface: ).

ChickenWing
Jul 22, 2010

:v:

Volmarias posted:

This Book was pretty valuable when I made that leap as well.

Awesome, I'll take a look

ChickenWing
Jul 22, 2010

:v:

I only discovered the joys of unit testing recently (early in this thread, I think) and I cannot concieve of the kind of mind that thinks "nope those are a waste of time". They've saved me so much time from manually testing, and it's so easy to know when you've broken something if you have halfway decent tests. There's a couple teams working on my current project, and one offsite team is incredibly lax in this regard, and it shows. They've become something of a running joke in the office, because you can be sure that if something's hosed on the main branch, it's because they put it in.

ChickenWing
Jul 22, 2010

:v:

Portland Sucks posted:

Question to you guys about sick days.

I'm working as an intern over the summer going into my senior year. I'm technically a salary employee with no benefits/sick days. I'm scheduled to have a root canal in a couple days from now and until then am just in a massive amount of pain that has me mentally wrecked. At what point should I just tell my supervisor that I'm probably just sitting here creating technical debt trying to push through the pain and write some code. I've never really dealt with sick days before and I feel guilty asking for time off, but I also feel guilty like I'm just getting paid to make things worse at the moment. What's the right thing to do here?

Depends on the supervisor. If you have an old-school-work-ethic sort of supervisor ("if I'm not actually dying, I'm coming in to work because that's the right thing to do!") then you probably just have to resign yourself to suffering. If you have a reasonable, normal supervisor, then just talk to them and explain the situation. In most non-retail, non-food-service jobs I've experienced, people tend to be understanding and okay with it if you're not doing too hot, especially if you're in visible distress and aren't just calling in because you have the sniffles.

Obviously though, as an intern you're going to be taking the pay hit for those days off. Which, admittedly, will probably help convey to your boss how serious you are about your ailment.

ChickenWing
Jul 22, 2010

:v:

Ithaqua posted:

Yeah, and that's something to look out for in future jobs as well. If they don't treat you like a professional, you don't want to work there. If I called out sick due to legitimate illness and my boss gave me poo poo about it, I would immediately start looking for a job where I was given respect and treated like an adult.

(I just took my first sick days in years this week!)

My dad has the super oldschool work ethic and every job I had up until about 3 years ago was hourly retail or food service so I still feel guilty every time I call in. My tech lead is hilariously, incredibly cool about everything, and it still weirds me out that I can just send him a message on slack to let him know I'm not coming in and leave it at that.

ChickenWing
Jul 22, 2010

:v:

Bragpost: by the end of today, I will have completed 7 story points (which are estimated at about 1 story point per dev day) in the space of two afternoons.

I wonder if my tech lead will be okay with me taking a couple vacation days for an impromptu long weekend.

ChickenWing
Jul 22, 2010

:v:

Ithaqua posted:

The team's estimates being bad is not a cause for celebration. Make sure you bring it up during the retrospective.

Yeah we tend to estimate worst-case, plus we're still honing down from what we used to have, which was fairly ludicrous. It's been better since we've started on a lowest-bidder story point system rather than consensus-based

ChickenWing
Jul 22, 2010

:v:

Our current system works like so:

Read the story. Discuss assumptions, elicit further information from BAs as necessary. Ensure everyone has enough info to estimate.

Everyone provides a point count, somewhere between 0.5 and 3 (higher means it should almost certainly be more than one story).

The person who put up the lowest number of points gets assigned the story next sprint (this is the key), valued at the number of points as the next-highest estimate,so if I estimate 0.5 and my coworker estimates 1, I get it at 1.

For ties, one of us gets it at 1, determined by whoever has the least number of points, or if that's equal then whoever hasn't recieved a story in the longest amount of time.



Previously, it was typical planning poker. Same discussion part as above, but after everyone provided a point count we had to come to a consensus on point costs, including discussion with severe outliers, then stories are assigned after everything is estimated. We were having issues with really inflated point costs due to a bunch of reasons, and our new approach has curtailed that somewhat.


Ithaqua posted:

Lowest estimate is an awful idea. A better solution is to identify what causes your estimates to be so wildly out of line with reality and solve that problem. Getting 7 "days" worth of work done in a few hours means that your estimates are worse than inaccurate, they're totally useless as a metric for planning.

It could be that your stories are too big to begin with and need to be broken down further so they can more accurately be estimated. It could also be that everyone has it in their brains that "1 point = 1 day". That's bad. Points are relative to the other stories, not equatable to days or hours. "Is X bigger or smaller than Y?" That's why some teams use t-shirt sizes instead of points.

1) Our devs work at vastly different speeds, and for some these estimates are accurate. Plus, people tend to pad out their stories a little because we occasionally have problems interfacing with other teams/the DBA/etc.

2) We are explicitly encourage to estimate with the expectation that one point = one day of development, plus some QA time, plus some BA time.


I'm not saying it's the optimal approach, but it's the best we've managed for our team since I started on this project. Let me tell you about the sprint (7 business days) in which I completed 29.5 story points with the same assumed 1 point = 1 day comparison. I did work full tilt for the duration of that sprint, but drat if it wasn't a silly bunch of estimates.

ChickenWing
Jul 22, 2010

:v:

Ithaqua posted:

Stories also shouldn't be assigned, but should be grabbed by whoever is available in order of priority within the sprint, but that's another story entirely.

:haw:


I'll talk to my tech lead about it, because your points are all pretty pertinent and would probably ameliorate some of the friction that estimation creates among the team. I think a bigger problem is that the "1 point = 1 dev day" is coming down from on high as well a bit. I don't foresee anything changing (this is for fintech, after all, so we're only working with a close approximation of agile at the best of times), but at least I'll feel better about myself.

ChickenWing
Jul 22, 2010

:v:

Yeah given that my previous experience with "Agile" was at a bank, where "Agile" meant "you get a half hour long meeting every morning along with all the other meetings", this is practically nirvana. I look forward to the mythical future when I finally get my rear end out of fintech and maybe get to experience something even better :allears:

ChickenWing
Jul 22, 2010

:v:

Xarn posted:

Sup buddy, I worked in medtech.

:smith::hf::smith:

ChickenWing
Jul 22, 2010

:v:

necrobobsledder posted:

If you have a Gantt chart, you're probably doing Waterfall probably, not Agile nor agile / lean. Hence, topic title is appropriate.

My previous job was the inspiration for the thread title. Someone actually talked about how we were doing it, as if it was a desirable thing.

At the very least, I've not had any other Agile experience, so I don't know how good I could be having it. It's nice because I can be pleasantly surprised at every place I go that's better.

ChickenWing
Jul 22, 2010

:v:

I just solved the weirdest problem I've yet encountered in my java development experience.

I wrote a java method that uses reflection to generate notifications based on object fields that contain a value. I've been waiting on some stuff from another team, so it sat on a backburner for a bit and I never pushed my branch. Other team's code got merged into our branch last night, so I get back into the thick of it today. I get everything to a point where tests are green and push to origin.

Notification comes in from Bamboo: build failure. Test failure. One of the tests I just made is failing. Double check my last results - green across the board. I run a local gradle build to see what's up. Build failure, test failure in that same test. It's an assertion failure, of all things - verify(class, times(2)).method(isA(TheGenericClassIOnlyExpectTwice.class)) is being invoked 3 times. All the rest of the assertions are passing, so somewhere I've managed to populate another field.

I know my test data is set up correctly. I change my gradle plugin to the new one I hadn't picked up yet, refresh all my dependencies, clean the project, yada yada yada. Still borked. What the heck gradle. I add in a debug println, figure out how to display stdout and stderr in the gradle console output, then run the build again. And there it is - the four fields I was expecting, including two that only flag the generic field, then something called $jacocoData.

Turns out jacoco is a code coverage reporting plugin we have attached to our gradle build. In the process of doing it's coverage-reporting thing, it injects a static synthetic field into the class, which getClass().getDeclaredFields() dutifully picks up and reports as having a non-null value. Prior to today I didn't even know that you could inject fields into a class at runtime, much less that that was called a synthetic field. Happily, the Field class includes an isSynthetic() method, and thus my way-too-involved debugging trip ended with 20 characters and now my build is green and I am slowly becoming the team's go-to reflections guy.



tl;dr Java reflection is scary

ChickenWing
Jul 22, 2010

:v:

:catstare:

ChickenWing
Jul 22, 2010

:v:

Steve French posted:

Stop. Step away from the computer.

Funny, this is basically what my tech lead says to me every time I use reflection :v:

(okay it's not that bad but he is of the opinion that reflection is best used in extreme moderation and flinches every time I mention how easy it was to solve a particular problem with it)

ChickenWing
Jul 22, 2010

:v:

Yeah, we designed ourselves into a corner a little bit in this case, but the end result isn't half bad and it's much more flexible than a number of other solutions we looked into.

ChickenWing
Jul 22, 2010

:v:

For my capstone project in university, my prof had me go through the entire software development process (requirements, design, development, testing) in an incredibly basic elevator simulation using a process called Jackson System Development. One of the key ideas that the guy who made up the process expounded was that if you're being clever, you are almost always doing something wrong or compensating for bad design.

ChickenWing
Jul 22, 2010

:v:


Ever since the day automated testing "clicked" for me, I don't see how it's possible to write a reasonably sized application without proper testing. It's so much simpler than having to manually test everything, and you can be so much more confident in your code when you have a suite of tests that make sure that it runs at least approximately correct. Plus, just the act of testing helps me critically examine my work and find little bits that I missed while developing.

It also makes refactoring orders of magnitude easier

ChickenWing
Jul 22, 2010

:v:

The Leck posted:

Yeah, I've run across this. In a single class. :smithicide:

:catstare:

ChickenWing
Jul 22, 2010

:v:

Today I learned what it looks like when a git merge commits messy suicide.


Actually it was more like a branch was just sorta drawn and quartered over a series of 10-15 commits and merges.


I have no idea what the gently caress happened and my brain feels like a fully extracted tube of toothpaste after trying to decipher the whole goddamn mess. It's like our universe combined with an alternate universe where all my work on a particular API never happened.

ChickenWing
Jul 22, 2010

:v:

Hughlander posted:

Sometimes you just gotta know when to apply:
code:
git merge --abort
git rebase --interactive
git merge
git merge --ff-only
In the right orders...

Luckily, I have a tech lead for that.

For the rest of us, it was "git checkout <branch before it died>-temporary"


which admittedly still took half the day to get working properly :shepicide:

ChickenWing
Jul 22, 2010

:v:

Do any of you use linter information for code cleanup at work, and if so how helpful do you tend to find it? I spent the majority of today working on paying down tech debt as reported by Sonar and I got to wondering how much of this was stuff people actually worry about overmuch. I imagine it's at least partly domain-dependent - I'm working in java, so a lot of stuff I fixed was along the lines of "use isEmpty() rather than size > 0" or "use the diamond operator rather than redundantly respecifying generic parameters". However, stuff like reducing cyclomatic complexity seemed like it would be more widely applicable.

ChickenWing
Jul 22, 2010

:v:

Okay that's sorta what I expected. I've gone through this stuff a couple of times and I will admit it's definitely instilled some better habits and helped me become more familiar with some of the java features I didn't know much about. Plus, figuring out how to deal with the cyclomatic complexity and overnested ifs/fors/etc has helped me stretch my brain a bit, which is nice because it's not like anything else is going to do that in banking :v:

ChickenWing
Jul 22, 2010

:v:

Yeah, pretty much. My tech lead described it best: "honestly, all we're doing is taking this and putting it over here." Middletier server software is not very complicated - take input from frontend, translate it from view object to model object, put model objects in the database. Mostly, my satisfaction comes when I get to learn a new java feature that I haven't touched before (the first function I wrote after learning about Optionals, Streams and Lambdas was an unholy mess), or when I get to write something clever or elegant to replace big gross walls of spaghetti code.


I also get cathartic pleasure from ripping out core functionality and getting the bleeding remnants patched back into something functional again. I feel like one of those guys that mugs you and steals your kidney and leaves you in an ice-filled bathtub.

ChickenWing
Jul 22, 2010

:v:

More linter victories: I figured out how the :: operator works in java :sun:

Also one of the guys on my team checked out my code review and helpfully came over to teach me how the Stream.map() function works, helping me reduce 8 lines of janky code to 4 lines of halfway decent looking code.

Feeling good today :c00lbert:

ChickenWing
Jul 22, 2010

:v:

git is actual real magic

ChickenWing
Jul 22, 2010

:v:

oh god I shouldn't be allowed to touch code

I've been frazzled this week because I've been juggling about a billion tiny stories that have had wierd qa problems, integration support, and regular stories. It all came to a head today when I opened up a PR that contained the following snippet

code:
boolean <variable> = "Y".equals(customer.get<some indicator>()) ? true : false;
:shepface:

ChickenWing
Jul 22, 2010

:v:

I mean really all I did was revert a merge that happened last week, I was just amazed that it worked so well. I first learned git for a university course and we weren't "taught" so much as "told to use git and shown how to push/pull". This being a second year university course, our code was all jammed into one file. None of us knew how to merge. We ended up just using dropbox (because why bother even getting a notification when you're about to completely overwrite someone else's code :shepface: )

Now, every time I attempt something outside the realm of my understanding, I generally expect that I'm going to irrevocably destroy everything and have to start from scratch. This is not ameliorated by the fact that my first real dev job was at a bank that used SVN, and so sometimes just pulling would break everything to the point that I'd just wipe everything and start from scratch.

ChickenWing
Jul 22, 2010

:v:

today in Learning Git With ChickenWing: git rebase --onto



I'm worried that one day this all might make sense and I'll never be able to use another SCM again. Reading that "git is a graph" guide is rapidly accelerating me in that direction

ChickenWing
Jul 22, 2010

:v:

Che Delilas posted:

Just bitching a bit.

The solution is to go out for beers with your team afterwards and all laugh at how he expects you to feel guilty for not working 60 hour weeks like a permacrunch shop

ChickenWing
Jul 22, 2010

:v:

:yotj:

ChickenWing
Jul 22, 2010

:v:

I swear to god the longer SIT goes the more I come to understand why people hate null.

ChickenWing
Jul 22, 2010

:v:

ill say what i loving want :clint:

ChickenWing
Jul 22, 2010

:v:

Messyass posted:

So I'm reading through this RFP...
  • The client wants "an agile way of working"
  • The deadline is fixed (about a year from now)
  • The scope is fixed
  • The requirements are obviously vague as all hell
I'm expected to come up with a serious reply to this shitshow.

Oh neat are you us a year ago?

"Make us this thing. Here's a bunch of use cases. What's a requirement?"

Look forward to: hilarious scope creep, hilarious deadline expectations, not hilariously having to manage the aforementioned.

I mean, we're making it happen, and we're making truckloads of money from it, but god drat has the process been miserable.

ChickenWing
Jul 22, 2010

:v:

Oh, the joys of neo-socialism (:canada:) and the banking industry

(Unlimited vacation, unlimited sick days :clint:)

ChickenWing
Jul 22, 2010

:v:

Gildiss posted:

Working in Development: We must honor the ceremonies of Ag'Ile

Adbot
ADBOT LOVES YOU

ChickenWing
Jul 22, 2010

:v:

Technically I'm a consultant not a developer by title so I'm going to have to do full-time BA/QA at some point and let me tell you how much I goddamn dread the day.

I mean, it'll be good for me and make me into a more well rounded and empathetic dev but it's gonna hurt in the process.

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