Antipattern: Forms Over DB

Any experienced business software developer knows that CRUD makes the world go round. For those who don’t know, that stands for Create, Read, Update, Delete. It’s the bread and butter of many business apps, the transactional ones that exist to, essentially, manage business data. Oodles and oodles of apps exist to do just this, and that’s it.

It’s fine, in and of itself, because it works, as a bare minimum. It’s also fairly boring to code,as a developer. It gets tiring writing the same code over and over and over again. So, these smart folks who get bored with basic CRUD start inventing ways to make their jobs more interesting.

What this looks like are things like auto-generating CRUD forms “scaffolding” from a database. It looks like ORM–object-relational mapping, where the objects are similarly generated from a DB. And all sorts of variations on these themes.

The problem is that in an effort to not get bored, to not “waste time” with boilerplate code, these solutions miss the mark. The intelligence and creativity of these highly skilled individuals is being squandered. The essential problem lies in the requirements themselves.

When you conceive of software as, essentially, a portal to edit database records, the potential of that software is immediately and fundamentally warped and diminished. It presumes an antiquated interaction model, one in which the database is some angry pagan deity. The people must bring their offerings of information, feed it to the all powerful database, hoping that at some later point, they can return and request some meager insight from the oracle (pun intended).

It is an immensely impoverished and impoverishing view of how software can help people do business. We need to move beyond these primitive interaction models. We need to understand the flow of business activities–from a human perspective. Instead of looking for points in a business process into which we can inject these artificial, software/database-oriented data offerings and petitions, how can we make software feel like it is part of what people are trying to accomplish? Their goals are most assuredly not to create, read, update, and delete records in a database. Their goals are to achieve some human end, and they put up with CRUD type interactions as a means to an end.

The closest thing I’ve seen in the dev side of things to a more human-oriented design was SOA. At least it attempted to frame the design in terms of what people were trying to accomplish. Domain driven design also heads in the right direction, and to some extent, so does “object thinking” that tries to focus more on behaviors and less on data and properties.

But a more robust approach to understanding and formulating a high quality software design is one that follows one of the many UX/Design approaches. There are many, many resources out there for devs and BAs to learn how to improve their design process and “learn UX”; I myself have written much along these lines and given many presentations. I tried to distill this into practicable principles recently in my UX for Devs Manifesto. My company has released a currently free interaction design tool that any dev or BA should be able toque kilt pick up and leverage in an improved design process.

There’s no good reason for us to be continuing with the Forms Over DB antipattern today. In addition to warping software design from the get go, it also leads to other “efficiencies” like auto-generated validation with its inscrutable error messages and subpar input interactions. The good news is that there is a better way, both to get to a better result and to offer a more interesting, more intellectually challenging software design problems that keep us from getting bored and wasting those energies on ways to more efficiently create poor user experiences. Further, we are more empowered today than ever to craft awesome, well-designed software thanks to the technologies and tools available to us today.

Just say no to this antipattern. Work with your managers and BAs to fix the status quo of requirements that engender this antipattern. It can be done, and everyone will be better off for it.

–written from my iPad mini in a session on scaffolding 😉

Let’s Be Real Men, Guys in IT

I just ran across this post on the sexism/harassment that women face in IT (and elsewhere, of course): We deserve better than this | ashe dryden. Not long back, I ran across a similar one from Iris Classon: Shhh… Harassment. Not a Problem? And on that post, a commenter linked over to this Geek Feminism Wiki – Timeline of incidents page. Apparently, the shocking experiences of these women are not uncommon, though being a man, I have been relatively shielded from that fact. So kudos to the brave women who are speaking out about it and raising awareness.

They are right–women do deserve to be treated better.

Allow me to not put too fine a point on it:

This bullshit has to stop.

Boys, it’s time to grow up and stop acting like puerile pubescent pervs. Look, I’m as red-blooded as it gets. I appreciate the female form as much as the next guy and am susceptible to the same brain-numbing physiological reactions our biology so generously bestows upon us in the presence of the finer sex. But that’s just it–we’re not talking about female forms; we are talking about actual females. Real women. Real people.

Those boobs in front of you? Yeah, they are actually attached to a person. Yep–those legs and that hot ass, too. I don’t care how much she is or is not putting on obvious display; the irreducible fact remains: women are not objects for us to sexually gratify ourselves with. (Yes, even the ones who for whatever reason offer their bodies as such objects.) They are persons. They have hopes, plans, dreams–just like you do. They eat, sleep, burp, sweat, smell, work, play, fart, and crap–just like you do. And they want and deserve to be treated with respect and dignity–just like you do. They are equal members of the human race with equal innate human dignity. Period.

Still, our biology and our culture works against us, trying to prevent us from keeping this simple, obvious truth in mind. So we have to actively work to do so. One thing that may help most guys to put this into perspective is: just imagine your mom. She is about as far as you can get from being a sexual object to you, but I guarantee, she has been for some man. How would you feel if someone was sexually objectifying or harassing your mom? Got that feeling in your head? Good. Hold on to it. Now, see that woman right there? Treat her like you’d want your mom to be treated.

And please, don’t get all smart ass about this. There are exceptions and weirdos, but in most cases, this should work. You can substitue your grandma if that works better for ya. I know most guys are well-practiced at imagining women–this way you get to exercise your imagination about them in a different and far more beneficial way.

The Guys in IT
I’ve worked in IT (loosely defined) for quite some time. I am quite aware of the dearth of females we have in these fields. I still remember a 2004 conference, a big conference, where the organizers literally took over some women’s bathrooms by placing a temporary guy sign over the girl sign–that stuck with me. Funny, if also likely annoying for the women looking for a bathroom at the conference.

I also know that engineering fields tend to attract stereotypically less socially apt guys. It’s really not just a stereotype; there’s a lot of truth in it. I suspect this only contributes to the problem, but on the same coin, there are plenty of guys who are also generally more thoughtful, or at least more willing (and able?) to reflect on serious matters like what we’re talking about here. I mean, if you’re a guy and reading this, you’re already in some small percentage of the male population that would read a blog, much less one like this.

So I know we can be better. Theoretically, assuming we all have the high IQs we think we have, we should be better than the average male population. And that’s why I’m dumbfounded when I hear stories like the ones linked above. On the other hand, I’m an armchair philosopher, and I am no stranger to the study of human nature and contemporary culture. That, coupled with the types of guys attracted to IT, lessens the shock for me.

Consider: If you don’t spend a lot of time around women. If most of your “interactions” with women are watching them in the media, and if you, as some very high percentage of our demographic does, use porn (the very definition of the objectification of women), then it’s not so surprising that some percentage of us are going to be complete boors with women.

But that’s no excuse. It may be reality. It may be how we are predisposed. But we should be better than our predispositions. And becoming so comes by doing so–through practice. Practice treating women as persons. Practice not objectifying them in your thoughts and in your talk. Don’t assume the idiotic, penis-driven stereotypes we see in the popular media are the way men have to be, much less should be. Real men are not slaves to their sex drives; they are more than it–much more. You are more than your sex drive. Act like it. Especially around women, but not only. What you think, say, and do when no women are around will inevitably bleed into how you act when they are. And they will see it–more than we males are aware of it, I have no doubt.

Things Being What They Are…
And yet, I know despite our efforts to make ourselves collectively better, the reality is that we will always have such boors with us. So here’s what I suggest. Ladies in IT, the next time you find yourself at a conference/some other event, and you run into one of these neanderthals, just come get me. I’ll put him in his place. I’ve got 330lbs of no bullshit to leverage on your behalf. (And no, I’m not trying to impress anyone. I’m very happily married for almost 14 years and have five children. So no worries, I have no ulterior motives in making the offer.)

Better yet, how about we guys with a basic civility and sense of decency band together? We could form some sort of association with a public identifier we’d keep on us (pin, laptop sticker, armband, T-shirt, whatever) that says we won’t stand by and let women be objectified and harassed, and that we’ll come to the aid of women who are. This way, if a woman is out and about at, say, a conference or some other event, she can feel safer in the company of those who are members, and even ask for our help. It might also just help us to keep us honest ourselves. I’d be proud to be a part of such an organization. You?

In any case, at least if enough of us individually start practicing treating women as persons and standing up for them, maybe we can help turn the tide. If you are willing to do this, comment here. Share this post, or write your own. And just start practicing it! The women need to know they do not stand alone against the neanderthals.

P.S. I apologize in advance to the women who find my suggestion at offering physical protection somehow sexist (or anything else in this post for that matter). It’s certainly not my intent, but given that some women have expressed a lack of feeling safe or secure, it seems like one way to concretely help with that. Besides, I’m serious.

P.P.S. Guys, if a woman tells you that something you said or did was sexist, don’t argue with her if you didn’t mean it to be. You can tell her you didn’t mean it that way, and apologize. But in the end, you’re not a woman. There’s a good chance you’ll never really be able to sympathize with why it came across that way, and no amount of arguing will change her mind. It is enough to know it did come across that way. Learn from that experience.

Update 4 Feb: Wow. Another one. Good grief.

Just Say No to SexismUpdate 5 Feb: I thought I’d throw together a quick community over on G+ for guys to join in solidarity with women on this issue: Guys Against Sexism.  I hope we can come up with something concrete to carry it forward/not make it just a passing agreement. If you have other/better ideas, please do join and share.  Also, if you write your own post, that’s a good place to share it.