SkillsC#, SQL, AngularJS
Joined devRant on 5/16/2016
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Proudest bug squash experience?
Fixed a N+1 pattern bug on our web site. Wasn't a deeply technical problem, but I was proud to shove the fix up the arse of the developer who blamed me (and even got a VP involved) for the web site crashes (the N+1 involved his code calling a service I wrote) and none of the half-dozen other devs found it.
I really wanted to make a t-shirt with his initial 'blame' email outlining all the 'technical problems' with my service, and the fix was literally moving the service call outside 5 (yes 5) level deep for..each loops.2
My most awkward recruiter interaction?
Just graduated college and got 'suckered' by an programming position ad that turned out to be a recruiting company. It was fine since they charge the company for their services and not me.
After a couple of weeks of waiting (they initially promised I would/could have at least 3 interviews a week, which hadn't happened.) I decided to start looking again on my own, found a position, and I was hired.
About two months later I get a phone call:
<skipping the pleasantries>
R: "I see you are working for D, congratulations. I've started the paperwork for our reimbursement."
Me: "Reimburse for what? I found that job on my own."
R: "D is one of the companies we work with and when we submitted your resume, they told us you were already hired."
R: "And you signed a contract and now its time to pay. The fees only start at $500"
Me: "Not me. I have the contract, it states, in the second paragraph, I am not responsible for any hiring fees."
<couple of seconds of silence>
R: "Yes, but that is only if we negotiated the contact. Since you went behind our back, we couldn't start the process"
R: "And its a breach of contract."
Me: "I'm not a lawyer, I don't understand what you're saying. It says right here on the contract I signed, I don't pay any fees. No where does it say I'm not allowed to look for a job on my own. Right?"
R: "Um..yea..right..right...but you were hired by one of our contracted companies."
Me: "No way I would have known that. Maybe you should have set up an interview long before now."
<R is getting pretty angry at this point>
R: "I'm sure we gave you list of companies we work with. Contacting those companies is a breach of contract. Unless you want our lawyers to get involved, the fee is only $500. Failing to honor your side of the agreement and we'll be forced to contact your employer and begin garnishing your wage until the fee is paid. You don't want that, do you?"
Me: "There was no list and I am allowed to find a job on my own. Again, I'm not responsible for you not setting up an interview so do whatever you think you can do. Have a good night"
<I hang up>
About a week later..
Boss: "Got a phone call from XYZ Recruiting requesting a wage garnishment. Do you know anything about that?"
<I explain the situation>
Boss: "Oh good grief. We've worked with them a couple of times and we contact them on an individual basis for new hires. You're fine"
Me: "You're not going to garnish my paycheck?"
Boss: "No no no, that's not how this works. He was probably trying to scare you into paying their crazy fees."
Me: "What if they get their lawyers involved? I don't want to cause any trouble"
Boss: "Ha ha...XYZ Recruiting is a couple of guys in an office and we have lawyers on the 3rd floor who eat and breath this shit. They know that and you won't hearing from them again."5
Impossible deadline experience?
A few, but this one is more recent (and not mine, yet)
Company has plans to build a x hundred thousand square feet facility (x = 300, 500, 800 depending on the day and the VP telling the story)
1. Land is purchased, but no infrastructure exists (its in a somewhat rural area, no water or sewage capable of supporting such a large facility)
2. No direct architectural plans (just a few random ideas about layout, floor plans, parking etc)
3. Already having software dev meetings in attempt to 'fix' all the current logistical software issues we have in the current warehouse and not knowing any of the details of the new facility.
One morning in our stand-up, the mgr says
Mgr: "Plans for the new warehouse are moving along. We hope to be in the new building by September."
Me: "September of 2022?"
<very puzzled look>
Mgr: "Um, no. Next year, 2021"
Me: "That's not going to happen."
Mgr: "I was just in a meeting with VP-Jack yesterday. He said everything is on schedule."
Me: "On schedule for what?"
<I lay out some of the known roadblocks from above, and new ones like the political mess we will very likely get into when the local zoning big shots get involved>
Mgr: "Oh, yea, those could be problems."
Mgr: "What's that?"
Me: "That's the sound of a September 2021 date flying by."
Mgr: "Funny. Guess what? We've been tasked with designing the security system. Overhead RFID readers, tracking, badge scans, etc. Normally Dan's team takes care of facility security, but they are going to be busy for a few weeks for an audit. Better start reaching out to RFID vendors for quotes. Have a proposal ready in a couple of weeks."
Me: "Sure, why not."1
I think I might change my middle name to "I told you so"
Couple of weeks ago I proposed integrating a daily process job into an existing WPF application (details of what+why would be too long to explain) and the manager suggested I make the changes
Me: "I can do it, but Jay has the most experience with that application. I don't have his WPF skills"
Mgr: "How hard can WPF be? If it uses the MVVM pattern, it should be a snap."
Me: "Its nearly an 8 year old WPF project with several chefs in that kitchen. I pretty sure I could figure it out, but that is a difference between 2 weeks and 2 days. Integration is pretty straight forward, Jay could probably do it in a day."
DevA: "WPF is easy. MVVM makes it even easier. I worked on the shipping app."
Me: "That's was a brand new, single page app, but yea, it should be easy."
DevB: "WPF has been around a long time and the tools have really matured. I don't understand what is so difficult."
Me: "I didn't say anything would be difficult, I know with that application, there is going to be complexity we need to figure out."
DevB: "It uses the MVVM, so all we need is the user control, a view model, controller, and its done."
DevA: "Sounds easy to me."
Mgr: "If you need more time to work on the vendor project, I'll have DevB work on the integration."
Me: "How is the integration going?"
DevB: "This app is a mess. I have no idea how they got the control collections to work. If I hard-code everything, I can get it to work. This dynamic stuff is so confusing. Then there is the styling. Its uses dark mode, but no matter what I do, my controls show up in light mode."
Me: "The app uses Prism, so the control configuration is in, or around, the startup code."
DevB: "That makes sense. Will it fix the styling too?"
Me: "I have no idea. When I looked at it, some controls loaded the styles from the main resource, other's have it hard-coded. Different chefs in the kitchen, I guess. How far have you got?"
DevB: "I've created invoice button. That is as far as I got"
Me: "I'm finished with the vendor project and I'll be wrapping up the documentation today. I can try to help next week."
DevB: "Thanks. I think we might have to get Jay to help if we can't figure this out."
Me: "Good idea"
Two weeks and only a button. A button? I miss Delphi.3
Refactored an authentication library a while back and teams are now getting around to updating their nuget packages.
It is a breaking change, but a simple one. The constructor takes a connection string, application name, and user name.
A dev messages me yesterday saying ...
Tom: "I made the required changes, but I'm getting a null reference exception when I try to use the authorization manager"
Odd because the changes have been in production for months in other apps, so I asked him to send me a screen shot of how he was using the class (see attached image below).
Me: "Send me a screenshot of how you are using the class"
<I look at what he sent>
Me: "Do you really not see the problem why it is not working?"
<about 10 minutes later>
Tom: "Do I need to pass a real connection string? The parameter hint didn't say exactly what I should pass."
<not true, but I wasn't going to embarrass him any more>
<5 minutes later>
Tom: "The authorization still isn't working"
Me: "Do you still have 'UserName' instead of the actual user name?"
<few minutes later>
Tom: "Authorization is working perfect, thanks!"
A little while later my manager messages me..
B:"I'm getting reports from managers that developers are having a lot of problems with the changes to the authorization nuget package. Were these changes tested? Can you work with the teams to get these issues resolved as soon as possible? I want this to be your top priority today."
Me: "It was Tom"
B: "Never mind."11
Most awkward video conference call?
Our department is in a 'virtual' book club, reading The Unicorn Project, and I asked..
Me: "So what similarities have you seen with the Phoenix project and projects we work on here?"
Dale: "Ha ha..sooo many. The biggest is the disconnect of managers with no clue of what goes on."
<Vice president of our department also in the book club>
VP: "Really? Dale, I'd like to know more about this."
<awkward silence with blank stares all around>
DBA: "Come on Dale...spill the beans. Got the VP right there."
Dale: "Um...nope...not going there...nope"
<Dale's screen goes black>
VP: "OK, so when Maxine asks ..."
Fav part of working from home?
- Being within eye-shot of my wife.
Wife: "Since your home just sitting there, could you clean the windows?"
Me: "I can't, busy."
Wife: "You're just sitting there clicking, that's not working. You think *I* sit around all day!? Let me tell you what I do all day for you and your children <blah blah blah>.. I ask you to do *one* thing around here, only *one*, and you can't do that! "
I'll inevitably will be doing anything except coding.
- Being within eye-shot of my daughter
H: "Daddy, can you play this game with me?"
<Hmmm...SharePoint or Candyland?>
Me: "Alright baby, let's play Candyland!"
Actually, being home with my girls would be pretty awesome. :)3
Unaware that this had been occurring for while, DBA manager walks into our cube area:
DBAMgr-Scott: "DBA-Kelly told me you still having problems connecting to the new staging servers?"
Dev-Carl: "Yea, still getting access denied. Same problem we've been having for a couple of weeks"
DBAMgr-Scott: "Damn it, I hate you. I got to have Kelly working with data warehouse project. I guess I've got to start working on fixing this problem."
Dev-Carl: "Ha ha..sorry. I've checked everything. Its definitely something on the sql server side."
DBAMgr-Scott: "I guess my day is shot. I've got to talk to the network admin, when I get back, lets put our heads together and figure this out."
Me: "A permissions issue on staging? All my stuff is working fine and been working fine for a long while."
Dev-Carl: "Yea, there is nothing different about any of the other environments."
Me: "That doesn't sound right. What's the error?"
Me: "No, the actual exception, never mind, I'll look it up in Splunk."
<in about 30 seconds, I find the actual exception, Win32Exception: Access is denied in OpenSqlFileStream, a little google-fu and .. >
Me: "Is the service using Windows authentication or SQL authentication?"
Dev-Carl: "SQL authentication."
Me: "Switch it to windows authentication"
<Dev-Carl changes authentication...service works like a charm>
Dev-Carl: "OMG, it worked! We've been working on this problem for almost two weeks and it only took you 30 seconds."
Me: "Now that it works, and the service had been working, what changed?"
Dev-Carl: "Oh..look at that, Dev-Jake changed the connection string two weeks ago. Weird. Thanks for your help."
<My brain is screaming "YOU NEVER THOUGHT TO LOOK FOR WHAT CHANGED!!!"
Me: "I'm happy I could help."4
Dev checked in code (I suspect purposely not inviting me on the code review invite) saying he "fixed" the authentication bug in the web service.
Um no, like I told you last week, the authentication error is because the load balancer wasn't passing the user's authentication to IIS.
If I didn't overhear him telling a user "Still getting the error? I don't know, we might have to re-write that service", he might have gotten away with it.
Me: "Wait, that doesn't sound right. If I hit the server directly, authentication works. Its an issue with the load balancer, not the service"
Dev: "Admin said the load balancer is fine and it has to be the service."
Me: "I don't buy it. IIS is returning the authentication error, not the service."
Dev: "I added exception handling and nothing is being logged. Must be something in the service configuration."
Me: "No, IIS performs the authentication, not the service. I explained that last week, remember?"
Dev: "Oh yea. What changes do we need to make to the service?"
<my blood pressure starts to spike>
Me: "None. Give me a sec.."
<we have other apps on the same server farm that work just fine, so I re-configure the service pool settings to match theirs>
Me: "See, now going through the load balancer, the service works fine. For some reason, the admin had our service set up differently."
Dev: "OK, I'll let the users know the service is fixed."
Me: "Service was never broke and I'm not leaving it in its current state. In the morning I'll talk to the admin and see what he can do to fix."6
My favorite year as a dev + why?
It would have to be this year because ..
- The 'pointy hair' bosses I've ranted about on this forum have been fired or they quit. I almost kinda forgot what it felt like to talk to managers not feel like "Good Lord, how does this guy put on his shoes"
- I took over the position of my nemesis (his choice, not mine) who quit (he quit before he was fired) and deleted+replaced all remnants of his code/life's work. More out of spite than necessity.
- Reaping the benefits of properly logging/reporting errors and developers able to fix those errors, nearly eliminating those 3:00AM 'System is down' phone calls.
- Able to take time to learn new technologies (learning React right now) and not constantly running around putting out fires.
- Son just graduated college at age 21.
Awkward holiday party story?
Not sure how awkward this is, but our company gives away some fairly nice 'prizes' at the party. Several big screen TVs, KC Royals/St. Louis Cardinals game tickets, etc, etc.
A few years ago, tax laws forces us to charge the employee tax on the items given away at the party (taxed as part of their salary). Awkward part was HR didn't tell anyone until nearly all the prizes were given out.
HRMgr: "Oh, by the way, this year we are forced to include the price of the item as part of your salary so the appropriate taxes are taken out. If you have any questions, come see me on Monday."
I swear I could hear several "WTF"'s from various tables and (to me) awkward silence.
The HR manager sent an apology email to the company saying he should have let everyone know before the party so individuals could make an informed decision about whether or not they wanted to accept the prize.4
This one is for @Fast-Nop
Both a rant and a joke/meme.
Its also funny because its true. Couple of teams (team responsible for orders and team responsible for accounting) are in seclusion in a meeting room right now cleaning up the web team's screw up.5
Most unprofessional experience at work?
<about an hour ago> Went into the bathroom to do the morning deuce and there was crap all over the back of the seat. WTF!? Did you miss!? In our part of the building its only devs and network admins, so again, dudes, WTF!?
Oh, and never spit your gum out in the urinal. Its not a new, fun target for you to shoot at. *Somebody* is going to have to pick that nasty thing out. Our maintenance guys have hard enough job than cleaning up after 'so called' professionals.8
Most unprofessional experience at work?
Check out my previous rants. With so many, it would be difficult to pick just one.
Not sure if I've told this one before. 'Caleb' was part of a team responsible for migrating financial data from a legacy (DOS-based) system to our new system.
Because of our elevated security (and the data being plain text) Caleb had access to the entire company's payroll (including VP salary, bonuses, etc).
Solidifying my belief that that salaries should be private between the employee and the employer, Caleb discovered he was making considerably less than his peers (even a few devs that he had seniority over), and the green monster 'Jealosly' took over his professionalism. Caleb decided to tell everyone making the same and less than him, the salaries of the other (higher paid) devs, managers and VPs.
Nobody understood at the time, but these folks started to behave erratically , like showing up late, making comments like "Why should I document that? Make 'money bags' over there do it", etc and so on.
Soon at review time, Caleb decided to use his newly discovered ammunition to 'barter' for a higher salary by telling the manager if he didn't make $$$, he would send an email to the entire company containing everyone's salary.
The manager fired Caleb on the spot and escorted him out the building (Caleb never had chance to follow thru with that threat)
When word got out about Caleb's firing (and everybody knew why), those other employees started showing up on time and stopped complaining about doing their job.6
Worst disturbance while working?
Some of my faves:
- Mgr flying his new $400 drone around the office (hitting walls, ceiling, etc). I mentioned the price because he crashed it a week later (un-repairable kind of crash), so I didn't feel too sorry for his loss.
- Mgr trying out his new blowgun and blowing darts at a cardboard box down/bewtween the cube hallway (where anyone could walk out of at any time). We would hear the "pfffft" and a loud 'Yea!'.
- Mgr would walk by a cube entry-way, fart, and walk away laughing.
- Mgr called me into area and his desk+the floor area around his desk was covered in peanut shells.
Me: "Wow, you got a mess here."
Mgr: "Yea, got tired of trying to hit the trash can. Maintenance will vacuum the office this weekend."
The mess was one thing, but what disturbed me the most was this asshole thinks Maintenance-Jim has nothing better to do than clean up after this so-called adult.
Karma kicked in and an hour later the owner's wife (we're still a family owned company, so he+his wife are on friendly basis with everyone) stopped by to say hi and walked in on the mess.
June: "What do we have here!?"
Mgr: "Oh...um...uh..I was eating a few peanuts and putting the shells in the trash can and accidentally knocked it over. I was on my way to get the vacuum cleaner."
June: "Hmmm...this looks like more than a few. *You* clean it up right now and *never* let me see this again!"
Mgr: "Yes..yes ma'am...right now.."
Whole office heard the exchange and it was frickin' awesome.12
Worst dev I've interviewed?
"Archie" ran his own consulting business for almost 20 years. Prior to his interview, Archie sent HR (to send to us) his company's website, where he had samples of code for us to review (which was not bad, this guy did know his stuff).
What I found odd was Archie was the lone wolf at his company, but everything I found about him (the about page, his bio, etc), Archie was referred to as 'Mr. Archie Brown'.
Ex. 'Mr. Archie Brown began his humble career and 'Mr. Archie Brown is active in his church and volunteers his time in many charities ...'
Odd to refer to yourself in the third person on your own site, but OK, I like putting hot sauce on my mac & cheese (no judgement here).
Then the interview..standard stuff, then..
Me: "Given your experience, this is an entry level developer position. Do you feel the work would be challenging enough for you?"
Archie: "Yes, Mr. Archie Brown would have no problem starting at bottom. You see ..."
Almost any time he would reference himself, instead of 'me' or 'I', he would say 'Mr. Archie Brown'. As the interview continued, the ego and self-importance grew and grew.
My interview partner wanted to be done by using the escape clause, "PaperTrail, I'm good, do you have any questions?"
Yes, yes I do. I was having too much fun listening to this guy ramble on about himself. I made the interview go the full hour with the majority of time 'Archie' telling us how great he is.
The icing on the cake was my partner caught his gold cuff-links and tie-pin where his initials and how he kept raising his hands and playing with his tie to show us (which I totally missed, then was like "oh yea, that was weird")
After the interview, talking with HR:
HR-Jake: "How did it go?"
John: "Terrible. One of the worst. We would have been done in 10 minutes if PaperTrail didn't keep asking questions."
Me: "Are you kidding!? I had the best time ever. I wish I could have stayed longer."
HR-Jake: "Really? This guy was so full of himself I wasn't sure to even schedule with you guys. With his experience, I thought it deserved at least a round with you two. You think we should give him a chance?"
Me: "Hell no. Never in a million years, no. I never in my whole life met anyone with such a big ego. I mean, he kept referring to himself in the third person. Who does that?"
HR-Jake: "Whew!...yea, he did that in the phone interview too. It was a red flag for us as well."
Couple of weeks later I ran into HR-Jake in the break room.
HR-Jake: "Remember Mr. Archie Brown?"
Me: "To my dying day, I will never forget Mr. Archie Brown."
HR-Jake: "I called him later that day to tell him the good news and he accused me of being a racist. If we didn't give him the job, he was getting a lawyer and sue us for discrimination."
Me: "What the frack!"
HR-Jake: "Yep, and guess what? Got a letter from his lawyer today. I don't think a case will come in front of a judge, but if you have any notes from the interview, I'll need them."
Me: "What are we going to do?"
HR-Jake: "Play the waiting game between lawyers. We're pretty sure he'll run out of money before we do."
After about 6 months, and a theft conviction (that story made the local paper), Mr. Archie Brooks dropped his case (or his lawyers did).38
After 'Dev' deployed a service using Azure ServiceBus, a particular queue/client was receiving errors.
Dev: "Looking at the logs, client is getting faulted."
Me: 'What is the error being logged?'
Dev: 'Client is faulted'
Me: 'No, that is our error when the client is either unable to connect or there is an exception in the middle of sending a message. What is the exception from Azure?'
Dev: 'Client is faulted. That's it. I'm going to have to re-engineer the code to implement a retry policy.'
<OK, I smell someone cooking up some solution finding, so I dig into the logs a little further>
Me: "Looks like an invalid connection string. The actual exception being thrown and logged is from the Azure client connection string builder. The value cannot be null."
Dev: "No, I'm looking right at the connection string in the config. Looks fine."
Me: "Looks correct on your machine, but what is actually being deployed to the server?"
<I could tell he was getting agitated>
<Dev clicks around, about 10 min. later>
Dev: "Aha!..I found it. The connection string in the config on the main branch is wrong, in fact, the entry is missing."
<dev fixes, re-deploys, life is good, I document the error and the root cause>
Boss: "Great job Dev."
*sigh* ..go teamwork?3
My best code review experience?
Company hired a new department manager and one of his duties was to get familiar with the code base, so he started rounds of code reviews.
We had our own coding standards (naming, indentation, etc..etc) and for the most part, all of our code would pass those standards 100%.
One review of my code was particularly brutal. I though it was perfect. In-line documentation, indentation, followed naming standards..everything. 'Tom' kept wanting to know the 'Why?'
Tom: 'This method where it validates the amount must be under 30. Why 30? Why is it hard-coded and not a parameter?'
<skip what it seemed like 50 more 'Why...?' questions>
Me: "I don't remember. I wrote that 2 years ago."
Tom: "I don't care if you wrote it yesterday. I have pages of code I want you to verify the values and answer 'Why?' to all of them. Look at this one..."
'Tom' was a bit of a hard-ass, but wow, did I learn A LOT. Coding standards are nice, but he explained understanding the 'What' is what we are paid for. Coders can do the "What" in their sleep. Good developers can read and understand code regardless of a coding standard and the mediocre developers use standards as a crutch (or worse, used as a weapon against others). Great developers understand the 'Why?'.
Now I ask 'Why?' a lot. Gotten my fair share of "I'm gonna punch you in the face" looks during a code review, but being able to answer the 'Why?' solidifies the team with the goals of the project.4
10 year anniversary 'celebration' for a couple of employees (one dev, one a DBA) and the VP of the department was saying kind words about them, talking about the 'good old days'.
VP to the DBA: "I apologize, when you started, you walked into my database architecture. I didn't know that much back then and never thought about the architecture much beyond a few years. Its amazing my design has lasted over 20 years and triple digit business growth..blah blah blah"
Inner voice: "Mother F-er!...My database was designed IN SPITE of your meddling and demanding to create 1,500 field tables. Shut the F up you egotistical bastard!"
I can't even count how many times I had to stop him from, for example, adding a 'ProductID' field to a Customer table.
Me: "Why did you add a product id field?"
VP: "How else will we know what product the customer wants to buy?"
Me: "You mean like a wish list? What if the customer wants more than one product?"
VP: "Oh, that’s easy, we'll create more fields when that happens. ProductID2. Microsoft made it really easy to add fields."
Me: "We already have a wish list table schema. Customer can have as many wish lists and as many products as they want."
VP: "I don't understand. All I want is a field for me to store the product I'm buying. I don't know why you make this so hard, its just one more field."
Now the VP is bragging all the success was due to his expertise?! Gaaaaahhhh!
I quelled my rage with ample quantities of donuts, juice, and chocolate milk.
Attempting to get back on the docker container hype train and I get this error.
Find the issue, and Microsoft's response 'oh...ha ha...our bad. We may or may not fix it. Sorry, sucks to be you.'1
Attended one of the best meetups ever. To give you an idea how awesome it was..
Speaker took the first ~20 minutes introducing himself.
His intro card deck kept referring to himself in the third person (he is the only employee in consulting 'company'). Ex. "Mr. Smith began his humble career .."
The powerpoint presentation began with him clicking each page, not executing the slideshow (ex. pressing F5).
Finally someone asked "Can you make slide bigger?"
S:"You can't read that?..um..sure...I guess .."
Starts fumbling around the zoom ...
Dev: "No, can you start the slideshow?"
S: "I don't know what you mean...there...I zoomed it, is that better? Now I can't see my notes..just sec.."
<fumbles again with the zoom>
Dev: "No, not zoom, start the slide show, press F5"
S: "Oh...you want me to F5 it...OK..."
<he *clicks* the slide show button>
Finally getting into code, trying to get out of powerpoint ...
S: "How do I get out of this fullscreen?.."
Dev: "Hit escape"
<keeps trying to click on 'something'>
S:"I see visual studio, but its not on the big screen... "
<keeps click on 'something', no one is sure whats going on>
Dev: "Hit Escape to stop the slideshow"
<finally hits escape, then able to put Visual Studio on the big screen>
S: "Ahh...there, I figured it out."
Speaker had no end of making wild/random statements like:
".Net Core is the future of Microsoft, if you're using .Net 4.5...forget it, its not even supported anymore."
"When I was at Microsoft Build, I asked them why not put all the required .Net assemblies in one directory. Looks like with .Net Core, they listened to me" (he was serious)
"I don't use SQL Server Mgmt Studio. Its free and it sucks. I use <insert a very expensive SSMS clone>, its great, you guys should check it out", then proceeds to struggle to open a query window to write some SQL.
"When you use .Net Core and EntityFramework, you have to write your own stored procedures. If a developer can't write stored procedures, he shouldn't be in this business."
I was on the edge of my seat, hungry for the next crazy bat-shit thing to come out of his mouth. He did not disappoint. BEST MEETUP EVER!9
My process for estimating dev work?
3 hours a day of uninterrupted dev time, 4 days a week (~12 hours a week).
So when I say the project will take 24 hours, it is about two weeks worth of work.2
Working with QA department (QA for company processes, not IT) on creating a change history list in SharePoint. Name, fields, etc, simple stuff and all working fine for the past two days.
Today I get a request to change the name of the list because its the same name as another list on a separate SharePoint site (used exactly the same way).
Me: "I can, but no one really cares about the list name. Besides, it serves the same functionality as the XYZ site, so the same name would be consistent."
QAMgr1: "Go ahead and rename the list if its easy."
QAMgr2: "Agree! We already have that list in the XYZ system, we do not need to confuse people."
NOBODY IS GOING TO BE CONFUSED!
I would never, ever want to hear this from someone if there is a blunt object within my reach.
User: “I drove the forklift off the dock because I was confused by the SharePoint list name. Sorry.”
My geekiest non-dev activity?
Recently its been playing Star Wars Battlefront (on PC). Its been a good SharePoint stress reliever, but hardly anyone playing anymore.
Will be getting back into 'video production' this summer converting decades worth of VHS tapes to digital for various family member's (lots & lots of editing and cleaning up).
In-laws are vacationing in London right now (wife's parents and aunt/uncle), so to keep in touch with the kids, I installed+configured Skype on their phones (these are folks in their 70s, no where close to tech savvy), I think they are good to go.
Last night we try to connect (I 'see' them online)...nothing, so we call.
Me: "Did you see or hear the skype notification?"
Grandma: "Was that you? My phone made a weird sound I never heard before and I saw your picture. I wasn't sure what to do so pressed the red button."
Me: "Its the same sound and picture I showed you before you guys left, remember? That's OK, the kids want to see you and say hi. Hang up and when you hear the sound and see my picture, click the green accept button"
I try again...ring..ring...nothing. About a second later we receive a text "Grandpa hit something and your picture went away. What do I do now?"
So, I try again...ring..ring...they finally pick up (we can only hear them)
Grandma: "Hello...hello? I don't hear or see anything, damn it Fred, what did you hit?"
Grandpa: "Nothing Betty, you aren't holding it right, turn it sideways .."
Wife: "Guys..we can hear you, can you see us?"
Grandpa: "Press this button with the line crossed through it .."
Grandpa: "Hey!..See Betty, you had the phone turned wrong. Can you see us?"
Me: "No, you may have hit the video button..it looks like a little video camera, press it."
Grandma: "We did...nothing happened."
Me: "Are you sure? Try it again. The image may be grey or a little darkened, I don't remember."
Then we lose the sound.
Wife: "Oh good Lord they muted us. We're going to have to forget Skype and call them..."
All of a sudden we get video and sound. Cheers all around.
Then I hear in the background..
Uncle: "I thought 'PaperTrail' knew what he was doing? Apparently not."
I heard that and FU you, you old bastard. If you weren't a millionaire and paid for their London trip, I'd take 'knew what he was doing' and shove it up your ass when I see you.1
Worst architecture I've seen?
The worst (working here) follow the academic pattern of trying to be perfect when the only measure of 'perfect' should be the user saying "Thank you" or one that no one knows about (the 'it just works' architectural pattern).
A senior developer with a masters degree in software engineering developed a class/object architecture for representing an Invoice in our system. Took almost 3 months to come up with ..
- Contained over 50 interfaces (IInvoice, IOrder, IProduct, etc. mostly just data bags)
- Abstract classes that implemented the interfaces
- Concrete classes that injected behavior via the abstract classes (constructors, Copy methods, converter functions, etc)
- Various data access (SQL server/WCF services) factories
During code reviews I kept saying this design was too complex and too brittle for the changes everyone knew were coming. The web team that would ultimately be using the framework had, at best, vague requirements. Because he had a masters degree, he knew best.
He was proud of nearly perfect academic design (almost 100% test code coverage, very nice class diagrams, lines and boxes, auto-generated documentation, etc), until the DBAs changed table relationships (1:1 turned into 1:M and M:M), field names, etc, and users changed business requirements (ex. concept of an invoice fee changed the total amount due calculation, which broke nearly everything).
That change caused a ripple affect that resulted in a major delay in the web site feature release.
By the time the developer fixed all the issues, the web team wrote their framework and hit the database directly (Dapper+simple DTOs) and his library was never used.1
My biggest dev ambition? "Outliving" the pointy-hair bosses, monday morning quarterbacks, and the know-it-alls-and-do-nothings.
So far, I am seeing my ambitions fulfilled. The last know-it-all-do-nothing dev was fired a couple of months ago and its been really nice around here.
Going back and forth with Microsoft technical support right now over a SharePoint issue. Good Lord I want to reach across the wire and smack them in the face with a sea bass. Not enough to hurt, but get their attention and smell like fish for a while.
No genius, the warning on the PowerPivot Data Refresh page 'Warning: this page is not encrypted for secure communication ..' IS NOT the problem. The error messages I sent *three times* from the ULS logs are the symptoms you need to be researching. Stop guessing and trying to blame any random message you see on our configuration.1
Finished a validation library and knowing the common excuse for not using code already written (devs come down with 'not invented here' syndrome) is "I would have used it, if there was documentation". Spent this week documenting each class/method, diagrams, scenario based code examples, sent to my boss for review ...
Boss: "Wow...this is fantastic. All our libraries should have this level of documentation. You even updated the project's Nuget package to include a link to the documentation. Devs won't have an excuse now. I'll clear your plate for the rest of the year so you can get started."
What the hell did I just do to myself? FML.1
Dev sent out a code review request.
I take about an hour, ask questions, make suggestions, general feedback, etc.
Today I noticed none of my questions were answered, developer closed the review, and the code merged into the production branch.
So I email him, asking him why the review was closed and why none of my concerns were addressed before merging to production.
Dev: "No one responded or left feedback, so I thought it was OK to merge up."
Me: "I reviewed and left feedback within the hour you sent the request."
Dev: "Oh yea...you did. Sorry. The code is already in production, but if you still want to leave feedback, create a work item, and I'll take a look."
No you won't.
An example of the code...The dev added an async method to a test harness *console app*. Why? .. check in comment was "Improves performance and enhances the developer experience.."
NO IT DOESN'T!
OK..that's off my chest. No one is getting punched in the face today.6