What a Developer Says Vs. What a Manager Hears



Developer Says: Based on our design, I could have a MVP done in a week. Afterwards, we can go over that, pivot the design, and then build a more substantial iteration by the end of the following week.
Manager Hears: The whole thing will be done in two weeks.

Developer Says: Yeah, with my limited knowledge and a few of my favorite tools, I can build some web services that can allow fellow company programmers to interact with our system.
Manager Hears: By myself, I can construct a load-balanced Web site that will accommodate millions of global users per minute.

Developer Says: We should have a meeting with release engineering and stress that we can’t meet deadlines without proper build and deployment machines.
Manager Hears: Waaaaaaah…[cry tear, emit snot bubble from nose, kick legs while in diaper] Waaaaaaahhhh…

Developer Says: We need to establish ownership of our various software projects, so that people can be held accountable.
Manager Hears: I am willing to take full ownership of all software projects, and I volunteer to be the official company scapegoat.

Developer Says: When you write a web method with HTTP GET, it should generally only return data. With a web method that writes data, it should really use either POST or PUT.
Manager Hears: Blah, blah, blah…I’m a flaming, anal-retentive nerd who has to have everything in a certain way, because getting things right is as important as my Tolkien underwear….blah, blah, blah…

Developer Says: Dinesh and Gilfoyle have reverse-engineered some of the legacy programs, and they’ve found inconsistencies with some of your old specs.
Manager Hears: We should fire Dinesh and Gilfoyle.

Developer Says: Since we’re in a crunch period, I guess that I can remote onto my dev machine from home this weekend, in order to get some work done and to get us a little ahead of the curve.
Manager Hears: I will gladly blow the bridge and die smiling in an attempt to save this impossible project…and even if my near-future reincarnation is about to be aborted in a clinic, my bloody fetus of a body will jump out and crawl back here, so that I can once more be a martyr for your noble cause. Please use me as you see fit.

Peter Bolton is the author of Blowing the Bridge: A Software Story and has also been known to be a grumpy bastard on occasion.

When API Documentation Is So Bad that It’s Good, Part 2

Response Codes and Errors

The following list presents our potential error codes:

Error Code Error Message Description
7734 Something Definitely Happened …but we’re not exactly sure what.
1334637 Not This Time It failed? Try again. Did it work? Okay, good. What happened? You’ll never know.
3704558 Success with Errors Meaning that we did what you wanted…but then something bad happened, also. Like the database was erased. Or something.
450087734 No Just…no, man. No way. No.
580083351 Invalid Parameter Some of your data was bad…What? You want us to tell you which parameter had the bad data? I’m not your damn slave. You figure it out, you pushy asshole.
580087734 Deprecated Method This method doesn’t work anymore because we’ve disabled it. We could have forwarded your request to its replacement, in order to be backward compatible…but we didn’t. Why? Because we hate you.
5800808537 Multidimensional Error So, basically, take this error code and pass it (along with your UserID) to the GetSpecialErrorCd method. Now, take the result of that method call and multiply it by your UserID to get the resulting product…which is how much you’re gonna need to pay us in order to help you figure this one out.

Peter Bolton is the author of Blowing the Bridge: A Software Story and has also been known to be a grumpy bastard on occasion.

All Your Character Encoding Belong to Us, Western Europe

Listen, Western Europe…North America has a great deal to thank you for. You are, of course, our big brother…and we’re really glad that you led the way. However, we’re a little ahead of you on certain things, and we need to get something straight: older doesn’t necessarily mean better. And when it comes to character sets for languages, you’re really starting to show your age. Much like the show Hoarders, I know that you have a hard time letting go of your “treasures”…but, really, it’s for the best. Now, I’m not suggesting that certain garbage characters be dropped entirely; I’m sure that your ministers of culture are already seething at the mere mention of it. Of course, you can use them without reservation in your daily lives for useless fun. (Like calligraphy!) For the sake of computing, however, it’d be better for all software developers (and everyone in general) if you just converted all electronic text to ASCII…and I’m willing to bet some of my Western Europe counterparts would agree with me.

Imagine a world where we wouldn’t have to ask “Is this character in encoding Windows-1252 but not in encoding ISO-8859-1?” That place could be real! Just think about that for a moment…it would be beautiful, wouldn’t it? Together, we can make that happen. So, let’s take that initial step of purging your electronic banks of filthy, superfluous text. Much like Hoarders, we need to step through each “treasure” and mull over its inherent worthlessness…I mean, “value”…to your respective languages:

Ligatures – Come on…we both know that they’re stupid. Æ and Œ were created by drunk Trappist monks, when they were sloppily copying books with cramped hands. Afterwards, when someone pointed out their mistakes, they said “Uh, no, I meant to do that. Those are real letters.” And thus ligatures were born. Even more and more of your populations have stopped using it, and they split them into “AE” and “OE”. You know that it’s dying. Drop them.

Umlauts – We’re not even going to address diacritics for now and how everyone should just use normal tittles. I said tittles! Stop laughing! In any case, we’ll address that diacritic bullshit some other day…First, I have most encodings on my side: they don’t distinguish between umlauts and diaeresi. (Even Unicode is like “I don’t give a shit.”) Second, each country has its own version of them! You formed the EU for a reason…start standardizing that shit! Three, I understand the purpose of umlauts: to help a nascent reader with the pronouncing of vowels that are next to each other…but in North America, we eventually get it after some direction and practice. We don’t need diagrams and pie charts in order to learn how to pronounce “cooperate” properly. Trust me…you can, too.

Cedilla – Even though I’m against diaeresi, I understand that they’re useful, especially to novice readers. But a cedilla? You can’t just replace “ç” with a “sc”, “ts”, or even a “z”? Because it’s so special, of course. Did an ancient Spanish or French monarch allow their child to doodle while writing…and then it was decreed that the doodle was official henceforth? (Personally, since I love the movie Aliens, I’ve always liked to doodle little snapping jaws shooting out of everything. If it hadn’t been invented in the Middle Ages, I probably would have invented the cedilla…but if would have looked different.) It doesn’t matter. We all know how useless monarchs are…that, and how they generally look better without heads. (That’s a tip of the hat to you, Frenchies.) In any case, like monarchs, the cedilla is a complete waste. Into the trashcan.

You see how easy that was, my brethren in Western Europe? We got rid of three different types of characters…in one shot! That’s at least dozens (if not hundreds) of characters that we can free from our collective banks of data! By using just ASCII, we can use half of the data needed, which means almost half of the processing power. Think about how many baby seals that could save…and you don’t to kill baby seals, do you? I’m sure that John Lennon would have written an extra verse about this very subject in “Imagine”, if he had just lived long enough. It might take some time, but eventually, we can live free of an Encoding Hell. Leave Unicode to the rest of the world and its craziness…and join hands with us, so we can finally blow that bridge together. ASCII and freedom for all! You just have to believe, Western Europe. Just believe.

10 Episode Ideas for Mike Judge’s Silicon Valley

1.) Erlich Challenges James Gosling and Richard Stallman to a Beard-Off

2.) Gilfoyle & Dinesh Go to In-N-Out Burger (and Party “Animal Style”)

3.) The NSA’s Ultimatum to Richard: A Backdoor to His Compression Algorithm…or His Backdoor

4.) Dinesh Becomes a Hooli Spy by Impersonating Deepak Chopra and Mentoring Gavin

5.) Big Head and Mochachino Collaborate on a New App Called “Chubber” (Which Finds a Strip Club that Matches Your Perfect Stripper Measurements)

6.) Jared Meets with an Outsourcing Firm in the Ukraine, Gets Mistakenly Kidnapped by Russians, and Ends Up Naked in a Banja with Snowden

7.) The Dark Lord Tells Gilfoyle that He Must Kill Brian Krebs, but It Turns Out that Brian Krebs Is the Dark Lord

8.) Peter Gregory Forms ’DropoutsCannot-Code.Org’ Just to Spite His Nemesis Mark Zuckerberg

9.) Erlich Meets His Good Friend John McAfee in Oregon, where They Get Chased by Criminals while Seeking Pirate Treasure

10.) Monica Introduces Richard to Jeff Bezos, Who Will Invest in Pied Piper if Richard Can Beat Him in a Shirts Vs. Skins Segway Streetball Game

Peter Bolton is the author of Blowing the Bridge: A Software Story and has also been known to be a grumpy bastard on occasion.

10 Tips for a Software Résumé



1.) If you list “Software Engineer” as a job title, there should be examples of actual engineering listed somewhere. “Got Visual Basic working with Excel spreadsheet” does not count as software engineering…nor does that really count as programming. It’s a thin argument to even place that in the category of “software”.

2.) If you’ve worked at 7 different jobs over the past week alone, you might want to manipulate your résumé so it isn’t immediately apparent that you’ll cut out at a moment’s notice.

3.) In your list of technologies with which you are familiar, please refrain from mentioning tools which have lived long past their use or relevance. Nobody is going to be impressed that you used Windows 3.11. You might as well mention that you played a Sega Dreamcast at one point and that you’re fairly sure one of your ancient ancestors used a wheel before it became popular.

4.) If you’ve worked in the technical field for more than ten years and if you graduated much longer ago than even that, there really isn’t a need to mention the school. Plus, if you graduated in Asia and are working in the U.S., it’s completely ignored. (In the case of IT, most IT managers won’t even know the school that you’re referring to, let alone tie their shoelaces by themselves.) You could put down that you have a Master CPU degree from Kali Ma Shakti De University in Pankot, with a minor in archaeology…and nobody will be the wiser.

5.) If you want to highlight your strengths (such as your ability to work with teams and your keen meticulousness), you should present yourself in such a way as to demonstrate them. Writing “Excellent communikation skills and very talented at talking” actually works against you.

6.) By default, all of those who don the hat of a technical screener (like myself) assume that every candidate is going to naturally present himself/herself in the most positive of light. Having said that, if I see another résumé with the phrase “great team player”, I’m going to actually play baseball with a candidate’s head by introducing it to a Louisville Slugger.

7.) Since you’re supposedly a qualified worker in the technology field, your résumé should naturally be prepared with a certain amount of technical finesse. When your document is presented with an heterogeneous mix of Arial, Times New Roman, and Verdana, it doesn’t inspire confidence in potential employers when you can’t even slay the dreaded monster of Font.

8.) Please refrain from boring the living shit of the person reading your C.V. by filling it with nonsense. Since I assume that you have used a keyboard at one point as a peripheral device and that you went to a meeting where you talked to people (in order to “brainstorm”), you do not have to write those activities down. I also assume that you didn’t defecate in your pants one afternoon, using your new cargo to write your name on the lunchroom wall…but you don’t need to write that down. (To be fair, though, I would enjoy reading that if I stumbled upon it.)

9.) For software developers and engineers, one way of showing your proficiency with abstractions is to demonstrate the summarization of data. So, when you list 20 specific projects that have an overwhelming overlap in functionality, you’ve shown me that on top of not being proficient, you are likely mentally disabled. I don’t care if you have “created a back-end that supports the front-end” twenty times in different scenarios. If you list it more than once, you’re an idiot.

10.) If you claim to be a writer of technical documentation but you’ve only used three verbs throughout your entire résumé (and I’m betting that those words are ‘developed’, ‘designed’, and ‘analyzed’), then you probably have a better chance of impressing me with illustrations drawn in pen and crayon. Remove that part about writing good technical documentation, and we’ll accept your possible employment with the footnote that you’re an illiterate simpleton.

Peter Bolton is the author of Blowing the Bridge: A Software Story and has also been known to be a grumpy bastard on occasion.

When API Documentation Is So Bad that It’s Good



Web Method
data.postData

Description
Post some data to another piece of data (i.e., “data data”), which will be related to some other data. You know…the other data. You’re not confused with all this ambiguity, are you?
Notes: In order to be less confusing, we will now refer to the other data as “Smegma Lite”. If you are posting data related to Smegma Lite, please notice that there are other related parameters which are not mentioned here. Learn more in the “Smegma Lite: Why Do I Need to Read a Fucking Manual About This Mundane Concept” guide.

Request URL
http[s]://ima.weiner.com/carlosdanger/data.postData

Parameters

Required Level Name Type Description
Required DataType string The type of the data. (Honestly, if you actually needed that, you’re better off sticking a handgun up your ass and pulling the trigger.)
Required Data string You need this, too? And you survived after my last instruction? Okay, now put the gun to your head.
Mostly Required DataId string It identifies the data. On a side note, if it’s empty, the default value is assumed to blank. What does that mean? Who the hell knows. Maybe it wipes out the entire database. Do I look like I care? I’m writing these docs while I’m huffing paint.
Sometimes Required SubmitterID Int It may or may not be required…I’ll get back to you later on that. If it’s not specified, the default value is 590091134. (Upside down, that does not spell “Hell Boobs”, it spells “He’ll Boo BS”. You’re so immature. I just don’t get you anymore.)
Optional guestName string If the submitter is a guest user, then this field is Required…which means it isn’t Optional…hmmm…
Quasi-Optional guestAlias string But if the submitter is a guest user and the guest name is only one word, then this field is Required and the guestName field should be omitted…which means it isn’t Optional and it isn’t Required.
Superposition-Optional guestNameAlias string If the submitter is a guest user and the guest name is both one word and more than one word at the same time, use this field. This isn’t confusing yet, is it? Because it’s pretty simple stuff, moron.
Required for Some Data and Not for Data that Isn’t Some Data dataSynopsis string If your user account allows a synopsis for data and if your data is related to Smegma Lite and if your guestName comes to a Scrabble score of 50 and if you blew the bridge on Wednesday, then you are allowed to post graphic pornography to your account. As for the ‘dataSynopsis’ parameter, you can always use it. That’s a given. Duh.

—–

…and if you think that any documentation resembling this format passes as adequate, you should be deemed a pariah and removed from society by being banished to the new edition of the show Naked and Afraid, which will take place in a nearby asteroid belt.

Peter Bolton is the author of Blowing the Bridge: A Software Story and has also been known to be a grumpy bastard on occasion.

Ideas for Anti-Tech Startups

1.) Candy Crusher – A NFC-enabled mobile app which, when used near a person playing Candy Crush, takes remote control of the target’s phone and annoyingly broadcasts to all in the target’s contacts list:
“I would read right now if I weren’t an illiterate, stupid fuck that hasn’t figured out how to use headphones. Please knuckle my loins when you next see me.”

2.) AutoStalker – An Internet bot that can be set to different modes, surreptitiously dissuading your friends from posting to social networks. Frustrated with friends who inundate Facebook with pictures of their children? Simply set AutoStalker to “PedoBear” mode, and after compromising your target’s account and those of its friends, it will generate random creepy comments about kids’ buttocks and post them to your target’s wall. Sayonara, kid pics!

3.) DroneZapper – A thirty foot Tesla Coil that will extinguish the life of any snooping drone or quadrocopter. With every purchase comes:
a.) Metallic mail suits for all family and pets (since death is guaranteed by not wearing one)
b.) A lifetime supply of hair gel in order to combat the neverending battle between static charges and style

4.) RingDumbs – A mobile phone app which will listen for certain ringtones and immediately respond to them. For example, in the case of the whistling ringtone of Samsung, the phone will supply a small charge to an embedded portion of the phone, which in turn will ignite a small packet of C4 and kill everyone within a few meters, including the offender. (You might die in the process, but you’ll have the honor of blowing the bridge.)

Snowden’s Last Performance Review

Employee Name: Edward Snowden
Department: NSA Operations Center
Immediate Supervisor: Yuri Nater
Date of Review: April 1st, 2013

O – Outstanding
L – Like a gangsta mofo
S – Surpasses expectations
E – Exceeds expectations
M – Meets expectations
N – Needs improvement
T – Tends toward crapola
U – Unsatisfactory
Y – Yeasty

Technical Support for Monitoring Operations = S
———-
Attendance and Punctuality = T
———-
Expertise in IT Security Practices = O
———-
Eager to Help Fellow Employees with Password Issues = L
———-
Communicates with Peers Regularly = E
———-
Refrains from Having Journalist Friends = N
———-

General Comments: Ed performs his role with enthusiasm. As a standup employee, he volunteers his time with staff by offering to backup their personal drives on a regular basis, without incurring overtime or other costs to the agency. He is well known and loved by others for his quirky sense of humor and his generosity. For example, his candy jar of free keychain flash drives keeps everyone productive and in good spirits. He even provided some homebrew “palware” (how creative!) on each flash drive, in order to help us with our daily tasks! Ed is an asset, and we should consider getting some people under him as quickly as possible.

Room for Improvement: Ed does need to spend less time talking on the phone, especially with his domestic partner Glenn about planning vacations. (Hong Kong might be a fun town, but if you’re planning a party for weeks, there better be some real dragons dancing around.)

Employee Comments: I will divulge your Orwellian monitoring to the world at large, and any confidence held by people regarding your principled position will be shaken to its core. You will pay for your treachery through the loss of wealth and international trust, and even though you will likely not learn your lesson (and I am likely just blowing the bridge), I will have the satisfaction of knowing that it was due to me and that you were unable to stop me.

Supervisor Comments: That Ed! Such a kidder! Man, his stuff is totally priceless.

The Pros and Cons of Agile Methods

cropped-grimace.png

1.) Pair Programming

Pros – It encourages better practices of development, decreases bug occurrence, and ensures redundancy in working knowledge of software.
Cons – It either gets in the way of your personal downtime activities, like searching for nude pics of Alexandra Daddario…or it leads to an oddly intimate relationship between you and your PP partner.

2.) Use Cases

Pros – It propels developers and stakeholders to predict and plan for various scenarios of your software’s usage.
Cons – It empowers morons to participate in the process. “So, what if a feminist Eskimo were insulted by the phallic nature of the igloo in your button’s image? And if a luddite or Amish person wanted to use the software, could we make the computer run on the churning of butter?”

3.) Scrum Meetings

Pros – Developers and their boss avoid any surprising obstacles or misses of expectations by having regular daily discussions about their current progress.
Cons – Since some people don’t relate the word “scrum” with “brief”, an expected fifteen-minute conversation becomes an hour-long dissertation from Bob about how the Illuminati are running the company and about how he blew the bridge last year. Every. Single. Day.

4.) Cross-Functional Teams

Pros – Developers with different areas of expertise work alongside in order to better understand the issues faced by different departments and in order to create more innovative solutions.
Cons – Sometimes, the “powers-that-be” don’t seem to understand how to properly form a cross-functional team. “Why am I in the same room as the maintenance guy and the building’s bomb-sniffing dog?”

5.) Planning Poker

Pros– During a Scrum session, the usage of cards (instead of vocal answers) will create a more accurate estimation of time required for tasks, since the vocal answers of one could influence others’ estimates.
Cons – Its implementation increases the chance of a violent gambling ring among your software developers, which then naturally leads to the formation of mob families in your department. Productivity will naturally decrease when your developers start missing fingers.

6.) Timeboxing

Pros – By creating a physical visual chart that tracks your project’s progress instead of a hard timeline, you can get a more accurate picture of the current status and impending direction of your work.
Cons – Sometimes timeboxes can become a bit ‘crowded’. “Can we knock out this wall here? I’m going to need a bit more room…I also need somewhere to put this pallet of sticky notes…”

7.) Story-Driven Modeling

Pros – Developers and users get together in order to create detailed usage scenarios for the software, which then reveals new requirements and possible issues when further developing and/or enhancing the software.
Cons – Sometimes pairing certain developers and users can be counter-productive, especially if they develop and chronicle a relationship outside of work. “So, Peter orders a box of condoms by clicking on the ‘Purchase’ button, and then Mary hits the ‘Agree’ button in order to book the hotel room, and then [Insert Explicit Actions Here], followed by [Insert Explicit Image Here].”

8.) Test-Driven Development

Pros – By requiring developers to create tests for their functions before they implement them fully, it helps to ensure that the results are kept in the forefront of the developers’ minds.
Cons – For your more ‘special’ developers, this development style could then be mistakenly combined with their recursive practices, resulting in an infinite spiral where a testing harness is created for unit tests that gauge results from another testing harness…until they piss off the system, are absorbed into the circuitry, and must fight alongside an even older Jeff Bridges against the Uber APU in order to save humanity.

Peter Bolton is the author of Blowing the Bridge: A Software Story and has also been known to be a grumpy bastard on occasion.

8 Indications that You Need to Guillotine Your CTO



1.) Your deployment environment is nothing but Windows servers, your entire framework depends on .NET, and your entire programming team only knows C#…but he doesn’t understand why you fight him when it comes to replacing all of your desktops with Mac Pros.

2.) You inform him that your team has donated personal hours of work in order to complete an ancillary project that will save the company millions of dollars…and in response, he nods approvingly and then asks “Who are you again?” Then he digs out his cellphone, laughs, and shows you a picture of his dog wearing sunglasses and a tutu.

3.) When you’re in a meeting with him and stakeholders in your project, he reacts to any of the stakeholders’ complaints/issues by shaking his head, rolling his eyes, and covertly pointing at you…especially if you’ve blown the bridge.

4.) When he speaks to your projects’ stakeholders, he overestimates his ability to connect with them. For example, if they happen to be black, he will punctuate his comments with “…girlfriend!” and horizontally oscillate his head like an upset guest on the Jerry Springer show.

5.) When he asks you to help tune his slow PC, you find that his desktop’s Recycle folder contains nothing but files with suspicious names like “shesquirts.stuxnetworm.mpeg.exe”.

6.) When talking with him about how a certain piece of software resembles Lotus, he responds with a look of confusion…though he is eager to admit how Lotus was his favorite nightclub back in the day.

7.) When you report that your network latency has increased tenfold, he optimistically asks if that is good news.

8.) He has eight screens on his desktop which supposedly show realtime information from eight different subsystems…but when you scrutinize the setup from a distance, you realize that it’s just an enlarged game of Tetris.

Peter Bolton is the author of Blowing the Bridge: A Software Story and has also been known to be a grumpy bastard on occasion.