A Forensic Psychology View of Software Development

May 1st, 2014 by The Director

A developer has a bit of a right-on rant about programming is stressful insanity:

Imagine joining an engineering team. You’re excited and full of ideas, probably just out of school and a world of clean, beautiful designs, awe-inspiring in their aesthetic unity of purpose, economy, and strength. You start by meeting Mary, project leader for a bridge in a major metropolitan area. Mary introduces you to Fred, after you get through the fifteen security checks installed by Dave because Dave had his sweater stolen off his desk once and Never Again. Fred only works with wood, so you ask why he’s involved because this bridge is supposed to allow rush-hour traffic full of cars full of mortal humans to cross a 200-foot drop over rapids. Don’t worry, says Mary, Fred’s going to handle the walkways. What walkways? Well Fred made a good case for walkways and they’re going to add to the bridge’s appeal. Of course, they’ll have to be built without railings, because there’s a strict no railings rule enforced by Phil, who’s not an engineer. Nobody’s sure what Phil does, but it’s definitely full of synergy and has to do with upper management, whom none of the engineers want to deal with so they just let Phil do what he wants. Sara, meanwhile, has found several hemorrhaging-edge paving techniques, and worked them all into the bridge design, so you’ll have to build around each one as the bridge progresses, since each one means different underlying support and safety concerns. Tom and Harry have been working together for years, but have an ongoing feud over whether to use metric or imperial measurements, and it’s become a case of “whoever got to that part of the design first.” This has been such a headache for the people actually screwing things together, they’ve given up and just forced, hammered, or welded their way through the day with whatever parts were handy. Also, the bridge was designed as a suspension bridge, but nobody actually knew how to build a suspension bridge, so they got halfway through it and then just added extra support columns to keep the thing standing, but they left the suspension cables because they’re still sort of holding up parts of the bridge. Nobody knows which parts, but everybody’s pretty sure they’re important parts. After the introductions are made, you are invited to come up with some new ideas, but you don’t have any because you’re a propulsion engineer and don’t know anything about bridges.

We’re not a above a bit of absurdist civil engineering metaphors to describe our predicament.

But it’s good to see a developer with a forest level view of the strange nature of software development.

(Link via tweet.)

Recruiters, Explained

April 30th, 2014 by The Director

On Quora, a recruiter explains recruiters.

Question:

Why do recruiters always contact me about jobs that are below me?
I’m a director at a major company, why do I constantly get recruiters contacting me about senior designer and design manager roles, when these are clearly below my skill set?

The beginning of the answer:

1) Recruiting is a pyramid with high turnover. By definition, most recruiters are not as skilled, which means they’re just calling anyone and everyone. Maybe you show up in a database with an old resume. Maybe they’re searching off keywords. Maybe they’ve been taught to call up the chain in hopes of getting new job orders. But you’re experiencing something a systemic fault. While it seems annoying, it works enough to keep many of those people employed.

He lists some other reasons which might be valid, but this one is the most prevalent in my experience. When they try to connect with you via LinkedIn, note how many of them look to be 23 years old. That’s another clue that they’re casting a wide, wide net, and your name is just a temporary variable in their patter.

Full disclosure: I’ve done some work for this guy before, so he definitely falls into one of his later categories. So I’ll take his word for it that not all other recruiters are nebbishes.

Lessons from An Engineer

April 29th, 2014 by The Director

A slideshow of What I Learned in Engineering School presents a number of lessons for software development if you look at them the right way.

For example:

A skyscraper is a vertically cantilevered beam. The primary structural design consdieration is not resistance to vertical (gravity) loads, but resistance to lateral loads from wind and earthquakes. For this reason, tall structures function and are designed conceptually as large beams cantilevered from the ground.

Just like how we have to test software. A building is supposed to stand up, so simplistically speaking, you’d think it would have to be strong and rigid against gravity. But there are other forces at work to account for.

So with a piece of software: simplistically, it’s designed to perform a task, and simplistic testing makes sure it does that task adequately. However, when looking at it from the tester’s perspective, you have to account for other forces besides the drive to get to the software’s goal. You’ve got to account for the real world, people making mistakes, and interactions that are sometimes hard to predict in a requirements guide or on a napkin.

And:

Work with the natural order. The locks of the Panama Canal are operated without pumps. Gravity moves millions of gallons of water from lakes to the lock chambers, where ships are raised and lowered 85 feet in passing between the Atlantic and Pacific oceans. As long as precipitation refills the lakes,the locks continue to function.

Your software will work better for your users if it conforms to their knowledge, their expectations, and their habits. Also, your processes will work better if you take into account your corporate (or organizational) environment, people, habits, and whatnot. You can’t come in and make everybody change to the better way you know just because you know it’s better. You have to take stock of what’s already going on and craft the better processes without trying to push water uphill.

At any rate, it’s worth a read with an eye to the lessons you can apply to software development.

QA Music – An Integration

April 28th, 2014 by The Director

We’ve featured the band Within Temptation before, and we’ve featured the song “Radioactive“.

An expensive integration later, and we have Within Temptation doing “Radioactive”:

That will be $450,000 for something delivered three years late. I am a consultant, you know.

What He Said

April 22nd, 2014 by The Director

Wayne Ariola in SD Times:

Remember: The cost of quality isn’t the price of creating quality software; it’s the penalty or risk incurred by failing to deliver quality software.

Word to your mother, who doesn’t understand why the computer thing doesn’t work any more and is afraid to touch computers because some online provider used her as a guinea pig in some new-feature experiment with bugs built right in.

I Said Something Clever, Once

March 19th, 2014 by The Director

Talking about automated testing once, I said:

Automated testing, really, is a misnomer. The testing is not automated. It requires someone to build it and to make sure that the scripts remain synched to a GUI.

Quite so, still

How Low Can You Go?

March 18th, 2014 by The Director

I think I have found the source of the problem:

Google Error #000

I expected some sort of enlightenment when I got all the way back to error 000, but that’s not the case, actually.

Or is Google denying there’s an error here?

Fun fact: 000 is 000 in binary. It is one of 10 numbers that are the same.

QA Music: About Your User Stories

March 17th, 2014 by The Director

Do you really know what it’s like to walk a mile in their shoes?

Or are your organization’s concepts of what the user wants or needs based on the speculations of twenty-somethings with computer science degrees who’ve known nothing but working with computers their whole lives?

Your Site’s Next Registered User

March 12th, 2014 by The Director

Nobody would ever do that: Dunedin man changes name to 99-character monster:

A Dunedin man has changed his name to the longest legally allowed, after apparently losing a bet five years ago.

The 22-year-old man from Normanby is now legally known as ‘Full Metal Havok More Sexy N Intelligent Than Spock And All The Superheroes Combined With Frostnova’ – just one character shy of Department of Internal Affairs’ (DIA) 100 character limit.

Which proves the man is not in QA; otherwise, he would have renamed himself with a 101-character name.

Unsub

March 7th, 2014 by The Director

Unsub, as you fellow fans of the all-too-brief David Soul television series know, means Unknown Subject in television law enforcement, or it did briefly in the first Bush administration.

In the IT world, it could refer to Unknown Subcontractor. And while it’s not a crime, it’s unethical.

Have you ever sat in on a conference call with a developer who talks a good game at a high level, but when asked specific questions, he defers and dissembles? Someone who is not very responsive to issues: when you call him or email him about something in the morning, you can’t reach him, but the problem is solved (or is taken a stab at) overnight?

You know why he’s like that? Because he’s not the one doing the work. And sometimes, contractors hide that they’re subcontracting from their clients.

We use only the most highly trained subcontractors
This cat will test your application for t4/hr.
On the Internet and in remote/distributed work environments, nobody knows you’re a cat or if you’re using a cat as a subcontractor

I can see how it would happen semi-innocently. You’ve been working with a bunch of clients, and they’ve all got tasks that suddenly overlap. So you reach out to a colleague and offer him a couple dollars less just this one time. That works out, so you think, “Hey, maybe I’ll use Joe for this client….” and suddenly someone’s running a clandestine contracting company without the client or clients knowing.

It’s unethical to present your resume to a client and then to use someone else to do the work. It’s okay if you plan to do this at the outset and make sure your client understands you’ve got staff that will handle the work. That’s about the only way a day laborer like an IT consultant can grow a business. But if you say or hint that you’re going to do the work but don’t, that’s lying.

Our mobile testers try everything
This hidden subcontractor is testing your mobile app for t4/hr. (Four Treats an hour).

If the ethical considerations don’t stop you, consider the practical risks. One day you’re a beloved national treasure of a composer, the next you’re an embarrassment with a ghost composer. Or you’re a highly respected scientist/politician who ends up on a Cracked.com list because your behind-the-scenes temporary hires are lazy.

Don’t do it. And if you’re hiring or contracting the work out, make sure to ask, “So you will be doing this work, won’t you?”

QA Music: The Proper Mood

March 3rd, 2014 by The Director

Software development has broken our hearts. It’s time to burn down the trailer park:

On a personal note, when I lived in a trailer park, we were in a trailer larger than an Airstream, but 12″ by 60″ is about the smallest you can get in an actual mobile home. And burning down an entire trailer park would take more effort than you think.

QA Music: You’ve Got Another Thing Comin’

February 24th, 2014 by The Director

Gather round, children, and listen to the music your parents would have listened to if your parents were awesome:

That’s Judas Priest. Go look it up in your history Kindles.

A Car Guy’s View of Software Development

February 18th, 2014 by The Director

In this case, the development of software automobiles:

Once upon a time, software was written by people who knew what they were doing, like Mel and his descendants. They were generally solitary, socially awkward fellows with strong awareness of TSR gaming. They were hugely effective at doing things like getting an Atari 2600 to run Pac-Man or writing operating system kernels that never crashed, but they weren’t terribly manageable and they could be real pricks when you got in their way. I once worked with a fellow who had been at the company in question for twenty-three years and had personally written a nontrivial percentage of the nine million lines of code that, when compiled, became our primary product. He was un-fire-able and everybody knew it. There were things that only he knew.

This kind of situation might work out well for designing bridges or building guitars (not that Paul Reed Smith appears to miss Joe Knaggs all that much, to use an inside-baseball example) but it’s hell on your average dipshit thirty-five-year-old middle manager, who has effectively zero leverage on the wizard in the basement. Therefore, a movement started in the software business about fifteen years ago to ensure that no more wizards were ever created. It works like this: Instead of hiring five guys who really know their job at seventy bucks an hour each, you hire a team of fifty drooling morons at seven bucks an hour each. You make them program in pairs, with one typing and the other once watching him type (yes! This is a real thing! It’s called “extreme programming”!) or you use a piece of software to give them each a tiny bit of the big project.

This is what you get from a management perspective: fifty reports who are all pathetically grateful for the work instead of five arrogant wizards, the ability to fire anybody you like at any time withouiret consequence, the ability to demand outrageous work hours and/or conditions, (I was just told that a major American corporation is introducing “bench seating” for its programmers, to save space) and a product that nominally fulfills the spec. This is what you get from a user perspective: the kind of crapware that requires updates twice a week to fix bugs introduced with the previous updates. Remember the days when you could buy software that simply worked, on a floppy disk or cartridge, with no updates required? Those were the wizards at work. Today, you get diverse teams of interchangeable, agile, open-office, skill-compatible resources that produce steaming piles of garbage.

He doesn’t speak about xth generation languages, which allow the software to be badly written far away from and with little knowledge of the hardware it’s running on by developers without knowledge of it and who are forgiven by advances in that underlying hardware (and now virtual hardware) that can cover-up some poor design and coding practices, third-party components of dubious provenance relied on for core processing, and Internet cut-and-paste.

But, other than that, he explains very well why my next car is going to be a Mercedes. A Mercedes 35 hp.

(Link via.)

This Is Too Simple To Be A Tip, Isn’t It?

February 11th, 2014 by The Director

In my automated test scripts, I always put one-line comments at the end of loops and methods that show what is closing. For example, in Ruby, it looks like this:

    puts("Waiting for delete confirmation")
    sleep(1)
  end #until
end   #click_delete_yes

It makes it just a little easier to figure out where I am in the code, and it also makes sure I close the loops and functions appropriately.

That’s so simple and obvious it can’t possibly be a helpful tip, coud it?

Seahawks-Tested (Almost)

February 4th, 2014 by The Director

A game player tries to score 1000 points in Madden NFL 25, but instead finds a defect at a common point:

About 10 minutes into the game, I had scored 262 points. The above score is actually wrong. We’ve run into this problem before: once you get to 255 points, Madden stops counting correctly. Not that it doesn’t try.

At the bottom, it says the Seahawks have scored 255 points. At the top, 266. Neither was correct, and I was pretty amused that a computer could attempt the most basic of tasks — addition — and come up with two kinds of wrong.

From what I saw of the actual Superbowl yesterday, this is uncannily accurate.

Remember, friends, in QA numerology, 256 is a magic number. You should try it out even when there’s no explicit boundary stated for an action or a variable. Along with magic numbers like 1025, 65537, and other talismanic digital sequences.

(Link via tweet.)

QA Music: An Ode to the Itinerant Tester

February 3rd, 2014 by The Director

Five Finger Death Punch, “Battle Born”:

My Kind of Manager, Too

January 31st, 2014 by The Director

Bill Gates sez:

An essential quality of a good manager is the desire to seek bad news rather than deny it. An effective manager wants to hear about what’s going wrong before he or she hears about what’s going right. You can’t react appropriately to disappointing news if it doesn’t reach you soon enough.

You concentrate on bad news in order to get started on the solution quickly.

That’s my philosophy, too. And I share bad news willingly.

Get Ready for Some New Top-Level Domains

January 24th, 2014 by The Director

Beginning next week, your software users might bring with them some new email addresses and URLs as new top-level domains become available:

Starting Jan. 29, the first of hundreds of new top-level Web domains—the suffixes that appear at the end of website addresses like .com and .net—will become available for the first time in more than a decade.

Seven Web domains will be released next week, including .bike, .clothing and .singles. The new domains are expected to draw interest mainly from entrepreneurs and small-business owners seeking Web addresses that more closely relate to the products and services they sell than the Web addresses that are currently available to them.

This means that any part of your application that validates email addresses or URLs might need to get a little exercise.

QA Music – Wild Boys

December 9th, 2013 by The Director

Duran Duran, “Wild Boys” from 1984, which is before the internal clocks of many of our compatriots in this industry began, the damn kids.

In 1985, I wanted to look like Simon Le Bon. In 2013, now that he’s 55, I’m closer than ever.

Two Out Of Four Ain’t Bad in Development

December 5th, 2013 by The Director

I clicked through a retweet to an article entitled “Which Programming Language Should I Learn First? on Lifehacker.

And then I almost fainted when I saw the sample code they included for Hello, World programs.

As you know, gentle reader, I’ve often thumped tubs about how any program used to teach students and that outputs Hello World is teaching the youngsters to program defects at the outset because, as “World” in this instance is a noun of direct address, it should be offset by a comma (Hello, World).

So when I saw the sample code included, where the programs for Java and C have that very comma in them, I was amazed. I had to immediately tweet about how it changed my life.

But then I looked closer: In addition to Java and C, the article includes samples of Python and Perl. And the commas are missing.

It was the best of Hello, Worlds, it was the worst of Hello Worlds

So I guess it’s more of a crash course in development than the writer intended.

It’s a collection kludged together, and nobody’s going to think to check consistency or know if there’s a problem in different areas of the software except for QA. Because the milestone and the deadline were met.