|
Gounads posted:This would be ideal. Unfortunately I don't know where to send invoices yet. It really isn't. I had that happen to me at the start of my career and it destroyed my work ethic for the next few years. I was paid 6 figures to play Everquest and go to the gym.
|
# ? Oct 14, 2016 17:15 |
|
|
# ? May 27, 2024 04:17 |
|
nelson posted:What does ITIL stand for?
|
# ? Oct 14, 2016 18:09 |
|
Hughlander posted:It really isn't. I had that happen to me at the start of my career and it destroyed my work ethic for the next few years. I was paid 6 figures to play Everquest and go to the gym. This is no joke. The game of coming up with increasingly creative ways to waste 8-9 hours each day is suffocatingly depressing.
|
# ? Oct 15, 2016 07:12 |
|
Hughlander posted:It really isn't. I had that happen to me at the start of my career and it destroyed my work ethic for the next few years. I was paid 6 figures to play Everquest and go to the gym. This happened to me too, except it was a DoD contract and I was waiting on my security clearance, so my employer knew and didn't care, since my salary was coming out of the money the agency had to pay them anyway. The salary was entry-level, iirc mid-60s , and it was nearly a year before I was allowed on-site. (at which point entirely new levels of agilefail were revealed, but ugh) e: During this time, my dad said I should get a part time job bagging groceries or something, for the stated reason of extra money and the unstated reason of avoiding clinical depression. I didn't follow his advice, but luckily I kept my head, probably thanks to friends. e2: please remember my tale anytime you hear about a government IT project going over budget Doc Hawkins fucked around with this message at 11:57 on Oct 15, 2016 |
# ? Oct 15, 2016 11:54 |
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.
|
|
# ? Oct 17, 2016 21:17 |
|
ChickenWing posted: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. Ehh let's say we have 100 files that mostly just have a little bit of dumb poo poo like those isEmpty() shenanigans. Then you have one file that has hundreds of things going off in it. That file probably contains a cesspool that needs some attention. The rest can probably be ignored.
|
# ? Oct 17, 2016 22:34 |
|
For stable code that hasn't broken much and is not likely to be modified into the future, I'd put in linter exceptions on those lines and whoever starts messing with those files later will have to justify disturbing the peace. What it buys in the near-term is clean linter output and acknowledgement that nothing's perfect. I applied this principle for having to make all my crap pass HP Fortify rules (including some truly stupid stuff like "cannot emit anything derived from input to logging, even if you sanitized the input") and kept conversations on-point to recent work primarily.Doc Hawkins posted:This happened to me too, except it was a DoD contract and I was waiting on my security clearance...
|
# ? Oct 17, 2016 22:45 |
|
The largest and most expensive network of halfway houses in the world.
|
# ? Oct 17, 2016 23:26 |
|
Rocko Bonaparte posted:Ehh let's say we have 100 files that mostly just have a little bit of dumb poo poo like those isEmpty() shenanigans. Then you have one file that has hundreds of things going off in it. That file probably contains a cesspool that needs some attention. The rest can probably be ignored. IME teams/codebases that ignore low hanging fruit like linter stuff tend to have pretty bad overall code quality (horrible spaghetti code, lack of good exception handling, riddled with stupid bugs). It's the canary in the coal mine that the team either doesn't care or isn't given the time to clean up after themselves. This assumes you have a sane linter, preferably configurable. I'm not above adding a linter exception or two to prevent some stupid refactorings.
|
# ? Oct 18, 2016 00:09 |
|
ChickenWing posted: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. Sonar is more of a reminder not to code like a dumbass. Cyclomatic complexity is a big one; you might think you'll remember what that horrifying mess of if statements, for loops, and switches does but come back to it a year from now. You won't. Worse yet somebody else might have to untangle that mess. Beyond a certain point it's best to refactor it somehow in combining if statements or just chunking it into functions that have a lower complexity. Keeping that stuff low makes code more maintainable and less bug prone. Sometimes it's just plain unavoidable so you can tell Sonar "yeah just ignore that." In some cases a cyclomatic complexity of 15 to 20 is perfectly fine but as a general rule you should avoid getting above 10. Other stuff is just little reminders of better ways to do things; isEmpty() is a perfect example. Nested ifs and fors are another; going more than 3 deep is just ugly and unreadable. It will probably function but break that stuff apart. Generally speaking the view should be "I'll not do these things in the future and will fix old code as I have time." But, like was said, a class that Sonar finds 50 problems with is probably a horrifying Codethulhu that will haunt your dreams and devour your soul. Probably the most important thing that Sonar reminds you to do is thrown meaningful exceptions. Just throwing "exception" isn't a good idea; it should be an indicator of just what went wrong so that way when it does go wrong (remember, it's not if your program crashes it's when) you have a good indicator of just what did go wrong and have an easier time tracking it down. You won't ever learn all of the rules and you do still have deadlines but Sonar is helpful.
|
# ? Oct 18, 2016 03:31 |
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
|
|
# ? Oct 18, 2016 13:32 |
|
When you're writing software, do you find most of the challenge to be in code organization rather than algorithm development? Seems like everything I do is pretty easy. Getting things done while preventing or fixing a mess feels like the only part worth being proud of.
|
# ? Oct 18, 2016 13:44 |
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.
|
|
# ? Oct 18, 2016 14:00 |
|
rt4 posted:When you're writing software, do you find most of the challenge to be in code organization rather than algorithm development? Seems like everything I do is pretty easy. Getting things done while preventing or fixing a mess feels like the only part worth being proud of. This has been my experience as well. Except for optimization or if it is something really specific to your problems, say business logic for report#6789 for startup#1234, I figure that the really interesting algorithms have already been abstracted away to libraries and such.
|
# ? Oct 18, 2016 14:03 |
|
Since 99% of my coding is in the Linux kernel, it's not the code; it's bullshit stuff like clocks being over-written, terrible vendor drivers, and power supply management that give me the hardest time. That and naming things.
|
# ? Oct 18, 2016 14:05 |
|
rt4 posted:Seems like everything I do is pretty easy. Getting things done while preventing or fixing a mess feels like the only part worth being proud of.
|
# ? Oct 18, 2016 14:09 |
|
rt4 posted:When you're writing software, do you find most of the challenge to be in code organization rather than algorithm development? Seems like everything I do is pretty easy. Getting things done while preventing or fixing a mess feels like the only part worth being proud of. Does that include naming things? If so, then yes.
|
# ? Oct 18, 2016 15:04 |
More linter victories: I figured out how the :: operator works in java 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
|
|
# ? Oct 18, 2016 15:51 |
|
ToxicSlurpee posted:Probably the most important thing that Sonar reminds you to do is thrown meaningful exceptions. Just throwing "exception" isn't a good idea; it should be an indicator of just what went wrong so that way when it does go wrong (remember, it's not if your program crashes it's when) you have a good indicator of just what did go wrong and have an easier time tracking it down. This makes me feel pretty vindicated about all those exceptions I wrote that some of my team members roll their eyes at. I usually get the last laugh when there's a problem and VerySpecificNameForProblemException gets thrown and shows up in a log and I'm like "there's your problem"
|
# ? Oct 18, 2016 17:16 |
|
I liked my passive aggressive exceptions that never happened:code:
|
# ? Oct 18, 2016 17:29 |
git is actual real magic
|
|
# ? Nov 1, 2016 16:12 |
|
ChickenWing posted:git is actual real magic Place I started at a few weeks back has code under active development in svn and I had forgotten how horrible it was compared to git.
|
# ? Nov 1, 2016 16:58 |
|
"What's the problem? You can branch with svn"
|
# ? Nov 1, 2016 17:13 |
|
Gounads posted:Place I started at a few weeks back has code under active development in svn and I had forgotten how horrible it was compared to git. I was on a project that used perforce and that poo poo was impossible as well. I still don't understand how to merge conflicts in svn. Like, is it like sourcesafe where two people just shouldn't work on the same file at the same time? ChickenWing posted:git is actual real magic http://think-like-a-git.net/
|
# ? Nov 1, 2016 17:32 |
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:
|
|
# ? Nov 1, 2016 17:49 |
|
We got our testing suite (nearly) merged into master and also got our CI running. People can start merging the testing branch into their features and are going to write automated tests starting this sprint. Feels good.
|
# ? Nov 1, 2016 17:55 |
|
KoRMaK posted:I still don't understand how to merge conflicts in svn. Like, is it like sourcesafe where two people just shouldn't work on the same file at the same time? Use a third party tool. IntelliJ dealt pretty well with simple SVN conflicts in the mid 2000's. In general though, you're just in for a world of hurt if things have gotten at all complicated with files moving/renamed/etc.
|
# ? Nov 1, 2016 20:24 |
|
ChickenWing posted:git is actual real magic Powerful with arcane, often nonsensical incantations and prone to going inscrutibly wrong if you don't know what you're doing? Yeah, that checks out Yes, I know it's better nowdays. I'm still bitter Mercurial didn't win because its interface was actually ment to be used by someone other than Linus
|
# ? Nov 1, 2016 21:09 |
|
KoRMaK posted:I still don't understand how to merge conflicts in svn. Like, is it like sourcesafe where two people just shouldn't work on the same file at the same time? I've literally done this manually and it was a better experience than branch merging in svn. I didn't use git-svn because our svn repository was too big.
|
# ? Nov 1, 2016 23:00 |
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 ) 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.
|
|
# ? Nov 2, 2016 12:20 |
|
At least a day and a half trying to get an ancient hacked up version of ejabberd running on my machine. Requires specific C compiler versions. Requires a version of erlang so old there's no osx packages for it. Requires a version of openssl so Requires a version of erlang so old there's no packages for it. Also, had to figure out each of those 4 points on my own since the documentation on how to build this assumes everything is right by default. After getting all that built, esoteric erlang stack traces when I run it that I have no idea how to read.
|
# ? Nov 2, 2016 13:19 |
|
ChickenWing posted: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. My college never taught (and still doesn't!) any sort of source control, and my first job used Visual Source Safe 6.0. Atomic file locking to "check out" files. Need to change a file someone else has checked out? Send them a snippet of changes and ask them to put it in there while they're working. Tests? Why bother, you can just step through your debug print statements. I was the first person there to try using a debugger instead of just reading At my next job, I asked the tech lead what happened when two people edited the same file at once with SVN, wouldn't someone's changes get overwritten? I think I just got a patronizing smile and "that doesn't really happen, don't worry about it." I have spent a lot of time unlearning things.
|
# ? Nov 2, 2016 14:44 |
|
Gounads posted:At least a day and a half trying to get an ancient hacked up version of ejabberd running on my machine. Wha? Why?
|
# ? Nov 2, 2016 14:48 |
|
Just got through to the end of the interview process at a company. Sat down today to sign the new hire paperwork and they shoved a contract in front of me that says if I quit within a year I have to reimburse the company's costs for the recruitment fee. That is a new low. I got up and walked out.
|
# ? Nov 2, 2016 21:39 |
|
revmoo posted:Just got through to the end of the interview process at a company. Sat down today to sign the new hire paperwork and they shoved a contract in front of me that says if I quit within a year I have to reimburse the company's costs for the recruitment fee. That is a new low. I guess they didn't come running after you? Did you attempt to strike that part of the contract before walking?
|
# ? Nov 2, 2016 21:41 |
|
taqueso posted:I guess they didn't come running after you? Did you attempt to strike that part of the contract before walking? A company that thinks putting something like that in a contract is a good idea is going to be terrible to work for regardless as to whether or not they'd strike it.
|
# ? Nov 2, 2016 21:54 |
|
Rocko Bonaparte posted:dumb poo poo like those isEmpty() shenanigans Could somebody explain this, please? I use String.isEmpty() and also ArrayList.isEmpty()... am I a bad developer?
|
# ? Nov 2, 2016 22:04 |
|
Mezzanine posted:Could somebody explain this, please? I use String.isEmpty() and also ArrayList.isEmpty()... am I a bad developer? I think the complaint was more about obsessively going through a codebase and changing all x == "" to x.isEmpty() because some coding tool told you to.
|
# ? Nov 2, 2016 22:10 |
|
kedo posted:A company that thinks putting something like that in a contract is a good idea is going to be terrible to work for regardless as to whether or not they'd strike it. Yes this. Plus anyone I would work with would have signed said contract. I like working with smart people not dumb ones.
|
# ? Nov 2, 2016 22:59 |
|
|
# ? May 27, 2024 04:17 |
|
Skandranon posted:I think the complaint was more about obsessively going through a codebase and changing all x == "" to x.isEmpty() because some coding tool told you to. Ohh, gotcha. Thanks for clarifying!
|
# ? Nov 2, 2016 23:39 |