How To Hire A Software Developer (2012)

Drupal Code MonkeyOne of the fun and interesting things that has been cropping up with some job interviews for contracts and employment is the potential employer wanting to know whether someone is actually a good software developer or programmer. The trouble is that there are flaws in just about any way of doing it. Having been on both sides of the desk, I’ve helped hire good programmers and bad – even over the phone – and I’ve interviewed for positions that fit me like a glove or didn’t.

Here’s some things I’ve seen recently – but if you want, just skip to the ‘How To Hire A Good Software Developer‘ part at the bottom.

How Did You Learn?

This is a legitimate question for anyone without a year of experience – to be safe, lets say 2 years. I recall interviewing for a position around 2003 in Trinidad and Tobago – a position for some oil related company about a VB 5.0 position – and I was asked this. With close to two decades of experience on my resume at the time, I explained that it was learned on the job and that I had references on it. But that’s not what they wanted. That people learn stuff in the real world seemed to escape them.

Recently, I applied for an Open Source Consultation position. It’s a natural position for me, really – open source advocacy, familiarity with open source projects and not just how the code works but the communities around them as well as their directions. I’ve even spoken at 4 open source conferences I can recall off the top of my head (not counting smaller group meetings). But somehow, someone in that company thought… If they don’t have a degree in something, even underwater basket weaving, they can’t do the job.

Does a  degree actually help with programming? I’ve seen it go both ways. I’ve met great software developers – yes, some better than me, more than I might like to admit – but whether they had a degree or not wasn’t material. I’ve also met some really poor programmers who had great GPAs. Poor programmers without degrees don’t exist. Why? The College of Experience is not as easily gamed.

Degrees don’t matter unless it’s an entry level position – and entry level positions are high risks for both employers and employees anyway.

Code Samples

There are a few companies out there that ask for code samples and, really, that might be a good way to judge how someone wrote code when they wrote the code – with or without help on a project that may or may not pertain to what the potential employer needs to have done – as opposed to what they may actually advertise for the particular position.

Another problem – one that I run into – is the ever present NDA. Believe it or not, there are companies out there that don’t seem to understand that work done these days is almost always covered by an NDA. Unless you contribute code regularly to open source projects, this may be a pit of despair. My thought: If the hiring company doesn’t understand NDAs, maybe they haven’t worked on things that work with business intelligence.

Fizzbuzzed.

When Jeff Atwood wrote ‘Why Can’t Programmers… Program?”, the Fizzbuzz test became popular with employers unable to design their own tests. A mind familiar with solving academic problems does well with these things. Not all programmers are familiar with solving academic problems. Recently I was asked to write some code that showed the first 10 prime numbers – and in trying to recall the first 10 just as a quiz for myself, I missed a few. I did do the code on the whiteboard, but hey, the point is – the muscles exercised are the strong ones. In programming since the 80s, this was the first time someone thought the prime numbers were important enough to write code for.

Code testing is subjective. This is as it should be. But if you want to do some code testing with a candidate, why not make it subjective to the job itself? Factor in that problems as famous as Fizzbuzz can also be crammed for. Really. Just Google interview code question. Rather than throwing Fizzbuzz or an analog of it out there, why not have a test that relates to the business in the position being filled? That might be a good test. In fact, that should be the test. The candidate should be able to tackle a problem that relates to the position being filled.

What’s special about the position? Test that. It typically includes the skills that you need tested anyway.

The other part of this deals with attitude. Throw a real problem at a real software developer and you’ll get to see how they really think, code and how they approach that problem. People don’t always approach the same problem the same way and that has benefits. The interviewers have to be able to understand that. When trying to make a good first impression sometimes people don’t.

Personality

Personality tests are used here and there and the results are almost never released to the candidate. As someone who has tested consistently as an INTJ1 for decades, I’ve made it a hobby. To an INTJ, a hobby is a serious thing. I don’t claim to be an expert on personality tests but I’ve read a lot on the topic and have taken a lot of tests.

Some things to remember about personality tests:

  • They are snapshots. A personality test is affected by ‘where’ the person is when they are taking the test; stress and other factors change the results.
  • They are incomplete.
  • They create a great industry for people who make money testing personalities and telling you that you need to do them.

How To Hire A Good Software Developer

So here it is. The magic of hiring a good software developer can be summed up in point form.

  • Why do they want the job? Save the ‘World Peace’ beauty contestant speech. If a software developer has everything you need for the position, they can’t grow. A good software developer grows. If a developer has nothing to aspire to then they aren’t a good developer.
  • Do they understand your business? A developer who understands the business, even in the broad strokes, is better than someone who can do the Fizzbuzz test in one line (yeah, it can be done in one line in at least one language I know of). Some of the hardest and best interviews I’ve had involved ‘walking the floor’ and being shown the business and the role the developer would be playing within it.
  • Can they problem solve? The best way to check is to go over problems related to the business. You could hand them a Rubik’s cube – if your business is about solving Rubik’s cubes. You could have them write code, too, but try to make it at least related to the job.
  • Interviews can be nerve-wracking for people on both sides of the desk. A good interviewer harnesses this and can choose to disarm or build pressure – typically both. This is why some companies play ‘good cop, bad cop’ in interviews – but the interviewer has to understand people to do any of this. If you’re pulling someone kicking and screaming away from their keyboard and their social skills are limited to Internet interactions, their body language will likely throw things off. If the interviewer doesn’t interact with people on a social level very well… things can go bad.  And if the software developer being interviewed is a social misfit, the question is whether this misfit will fit in with the other misfits.
  • Curiosity. Good developers are curious.
  • Thoughtful – not in the ‘brings flowers to funerals and weddings’ thoughtful, but a good developer will sometimes take the time to think through something rather than rushing off on tangents. Rushing off on tangents is typically what less experienced developers do.
  • Confident. This is not to be mistaken for false confidence.
  • Interested. If they’re yawning, they’re not interested.

Clearly, everyone will approach hiring a software developer differently and it’s no question that they get different results. The trick is not finding the perfect software developer.

The trick is finding the right software developer.

Feel free to comment!

1Myers-Briggs Type Indicator and Socionics, thank you very much.

On Quality In Production Code (2012)

So I’ve been playing StarCraft II: Heart of the Swarm

Once upon a time in a universe resembling this one at a younger stage, I dreamt of game programming. I don’t think that there’s any coder of my generation that didn’t have similar aspirations – perhaps getting published in Compute! magazine, perhaps getting one’s name on the box, or maybe even just writing a really cool game. I stand with the majority of developers who have never done that sort of thing. Times changed.

Consider what the person who wrote Galactic Adventures and Galactic Gladiators had written on the Well (apparently before they thought of putting a name to it):

To me, the most amazing thing about doing these games (and I’m about to date myself) is that I did virtually everything myself. I designed the games, programmed them, drew the graphics (quite primitive), wrote the rule book I did get help from friends and people at SSI in testing and making suggestions. Compare that with today where new games are developed with a million dollar budget and use teams of 30 or more people, programmers, artists, tests, story consultants, etc, etc. And you know what — the games of today are better (Gee, why is that a surprise?)

With that in mind and considering that I knew about Blizzard when the original Warcraft was a freeware game where you paid a bit more to get a full version – no, not the MMORPG you kids play now, but the Warcraft that started a new genre that Starcraft continues – Blizzard has come a long way. Since then, Battle.Net has come online. Since then, numerous titles have come through Blizzard and, while I haven’t played Diablo or messed with World of Warcraft, not one title hasn’t been popular. Blizzard has a kind of magic that works for them. I just like a particular genre and have found MMORPGs to be disappointments when it comes to content; I dislike leveling a character by what is properly termed grinding.

All of that said, I’m sure the budget for the Heart of the Swarm expansion was over a million dollars. I’d wager that it was at least 10 times that amount. The detail is great, the storyline is good (though how a prisoner in a high security prison has a pistol escapes me) and it’s playworthy – though I keep mixing up Q and A on the keyboard. But here’s the thing: I played through the game that took so long to develop in about 8 hours of game time. Hard difficulty, much the same. Brutal – well, that’s still in progress. There’s always the PvP maps and the challenge maps. I figure that, all things considered, the game will last me well over 1,000 hours of playtime.

It sold 1.1 million copies in 48 hours. At $40 per expansion, that’s $40.4 million in 48 hours.

Yeah, we’ve come a long way from typing in games from magazines. We’ve come a long way from a single developer writing a game. There was a magic to that era, though – we didn’t yet expect a great game. We expected a game and hoped it would be good. Now people get their sodden underwear twisted when they start talking about game balance and other things on the forums. As a fuddy-duddy, I see that as an odd form of entitlement – people expect a lot more for $40 and have the privilege of time to gripe about it in poor writing.

Game development has come a long way. Humanity? Not so much.

Thank you, Blizzard, for what I consider to be another great game. As a developer, I wish I had a hand in it. I’ll wait for the Protoss section. Take your time.

3D Printers Disrupting Copyrights and Patents (2013)

3D-Printed Slide-TogetherIt wasn’t too long ago that DIY 3D printers started making the news in geek circles. It captured the imagination of some and was largely ignored by others. I was somewhere in between until a few days ago. I’ve since slid somewhere closer to imagination, perhaps because someone printed a rotor from a Wankel engine and posted it on Facebook.

This got me thinking that in a few years, I could quite literally have a custom Wankel engine printed. Factor in last month’s Scientific American article, “Information Is Driving a New Revolution in Manufacturing“, things get even more interesting. Still, it enters a new dimension when in the future, having a 3D printer may be as normal as it is to have a printer now. And we all know those ink cartridges are ripoffs.

It’s going to get really interesting. Already a 3D gun has been printed and test fired, creating a bit of panic with some. The government is acting predictably. This is hopefully not the highlight of 3D printing’s contribution to society; I’d have preferred not to mention it but there’s no getting around it. We’ll get past that speed bump or we’ll all die in a crossfire of 3D printed guns.

Back to printing an engine. Or parts for your car. Or parts for your computer. Then we get into the costs of the raw materials and an economic upheaval as people who fabricate things become less and less needed. What the printing press was to scribes 3D printing is to the majority of fabricators.

But wait. There’s more.

You know all those copyright and patent issues we have with technology and, yes, even agriculture (Monsanto vs. Farmer). What happens when 3D designs escape into the wild, as the 3D printed gun already has? How are companies going to control that?

They won’t. They’ll try, but in the long run they won’t.

It’s a strange new world coming. Some people are going to become very upset.

Image at top left courtesy Flickr user fdecomite, made available under this Creative Commons License.

Software Cost and Complexity (2013)

Exposed gnarly roots in Fall River ParkTwo seemingly unrelated things popped up over the last few days. One of these things was an article along the lines of a discussion I had not too long ago with friend Yermo about. Simplicity in software design. From Reducing Complexity: The Next Software Imperative:

…And that should be the goal of all developers to make an app so elegant, so well designed; you forget you’re using it –or even the device on which it’s installed. The reason people gravitate toward apps at work is because mobile devices often offer the most elegant solutions to long-standing problems. Instead of fighting with clunky enterprise software, users find software that does what they need it to do and nothing more –and more importantly that just works…

For those of you who don’t remember what the Mozilla browser used to look like, as an example, one need only take a look at the community Seamonkey project, something I use every day because it does many things I want to do exceedingly well. It downloads my emails for me, something that it seems a generation has completely forgotten about unless they’re locked into Microsoft Outlock Outlook. It has a built in HTML editor. It has an IRC component. It has an address book.

I’m not the norm. The Firefox project does one thing very well. It’s just a web browser. Seamonkey and Firefox have the same engine underneath. Which one is more popular? I don’t think I need to look for statistics to show you that Firefox is more popular than Seamonkey.

More popular examples would be apps for mobile phones. They do one thing and they do it well (unless it’s something recent from Facebook, or so I hear). Simplicity.

Yet simplicity almost always masks complexity; it’s a matter of who deals with it.

In a world of small or non-existent budgets and lots of well intentioned people, software developers inclusive, this can be a sticking point even when trying to do something pro bono.

As Jon Lebkowsky (of Polycot Associates) posted in a status update yesterday:

Never fails – you offer to build a website pro bono and the recipient of your love is irritated that you can’t create a $20K miracle for nothin’. Hopefully I’ve learned my lesson, finally.

As someone who has found himself in similar shoes, I’ve noted this a lot. The ‘$20K miracle’ here is the problem anyone dealing with any software development has run into, be it for a small business, a large business, a non-profit or a family member – or someone who heard from someone else that you do websites. Recently I have seen it twice – the first with developing an API for an web host company to wrap other disparate APIs. The second was fixing an old Drupal install to do something that has a module for it in Drupal 7.

I could go on. I imagine many software developers could, particularly those of us in contract/freelance mode.

The point is that client expectations are high but they fail to realize that a simple logo and textbox on a website – simplicity in and of itself – masks a lot of working code in the background. Who am I talking about? Google. The simplicity of the Google page is probably the best example of masking a lot of complex algorithms that provide people with, more often than not (we hope) what they are looking for on the Internet.

The tree, as simple as it may look, has complexity hidden below the surface in its roots.

With mobile development applications, it’s the operating system and hardware. With Microsoft’s .Net platform, it’s an API that does a lot of the ground work and makes software developers into software librarians – a trend that the open source community has followed.

Move over Dewey Decimal System.

Simple for the user often translates into complex for the developer, depending on the requirements of whoever the software is being written for. TANSTAAFL. The more simple the outward appearance, the more likely the internals are complex – and increasingly, this seems less intuitive for people.

Complexity costs money. Making complexity look simple costs more. There is cost and there is value. A simple outward facing site like Google masks a complexity that costs a lot but clearly has a value greater than the cost.

The focus should be on value and simplicity or making complex processes appear simple – and keeping any complexity within budget. If that budget is 0, don’t expect a lot of complexity.

Remember – users want simplicity or, better, they don’t want complexity. Making your website or software project appear simple is the rub.

Image at top left by Martin LaBar (going on hiatus), made available under this Creative Commons License.
Note: As an experiment, I’ve turned off links to social networks and only allow registered users to comment here. This is an exercise in simplicity; discussions will happen on social networking sites. I’ve noted the trend; people don’t comment as much on sites unless they’re spambots. After reviewing statistics after a month, I’ll revisit this.

Nature and Data Structures (2013)

Cactus Flower Blooms (at night)

I haven’t written much of late as I moved to Florida last week and have been busy networking, job hunting, writing about the journey and taking pictures. I’ll be writing more often.

With the recent return to Florida, I’ve clearly been working on finding work amongst other things. I’ve also been enjoying the flora and fauna because of the good fortune I’ve had in finding a friend’s home a temporary lodging. This reminded me this morning of how often people at Honeywell, during my time there, thought I was goofing off when I walked outside and stared at the trees outside. I wasn’t really goofing off. I was considering the natural structures and finding some assistance in designing data structures for the work I was doing.

Natural data architectures are compelling, simple at some levels and very complex. Almost all of them are built on osmosis, where concentrations allow atoms and molecules to wander through permeable membranes based on pressure – not unlike electrical voltages across resistance or water through a plumbing system. The difference between natural structures and artificial structures is that, as Feynman once said,

For a successful technology, reality must take precedence over public relations, for nature cannot be fooled.

Failed data structures in nature are pretty easy to spot.

They’re dead.

Yet even in death they have value – they are recycled, the essence of the philosophical ‘rebirth’ found in some religions. In a well operating ecosystem, nothing is wasted – everything that is ‘alive’ or ‘dead’ has some worth to the ecosystem or it is quickly replaced.

The flower on the left is a picture of a cactus flower I took last night. It opens only at night.

This can be related to a structure such as a website. The flower has a purpose which, as most would understand it, is marketing. It has a definite demographic for who it is marketing to. I’m not sure what exactly it attracts, but I’d wager it is targeting nocturnal insects and perhaps even bats – but whatever its market, it isn’t the classic stuff that people are taught in school such as bees and birds.

Once pollenated, the structure goes about doing what most other flowers do – something pretty well documented anywhere. But this particular data structure is interesting in that it has evolved over millenia to bloom at night, when it’s cool, when life is more mobile in climates where the days are decidedly hot. It’s a wonderfully beautiful thing that most people don’t get to see because they’re not out at night. The scent is wonderful as well.

Studying data structures like this, looking for hints from nature on how to do something, provides us methods of making a better data ecosystem.

Maybe the internet and social media would be a better place if more software developers stepped outside a bit more often. The days of software architects and developers fearing sunlight have past.

UX and SaaS (2013)

Dried Peppers

It’s old news that Flickr has updated its site. It’s old news that thousands of users don’t like it. After a solid week of using it I have to say that I don’t understand why people are griping so much.

This last update really works for me. I realize in the end that I may pay more for the Flickr service in the long term but I’ve got 17,210 pictures on Flickr at the time of this writing and I suppose I will eventually go over 20,000 images. That’s a lot of images (I plan to go through and delete some over time, particularly some of the less interesting ones). Is it the best service in the world for hosting images? I don’t know.

What I do know is that it does what I need it to do – and now it has made new photos from my contacts more engaging on the Flickr main page. This means that my images also get seen by my contacts more easily and, really, on a photo sharing site, visibility is king.

Am I in the majority? I don’t know. I do know when you update a service with live users, people get cranky. I’ve seen it with many services over the years and have seen updates that really suck. Flickr’s update, to date, has no down side that I’ve found.

Updating Services: The Ups and Downs.

Users are strange creatures when it comes to services. Users invest heavily in an emotional way in what they use; that’s the hook. In the context of Flickr, we users develop contacts and like it when people favorite or leave nice comments on our photos. It’s a pat on the back, an affirmation, a feel good moment. Sad is the photographer whose photos no one likes. I’ve never been extremely popular on the service because of a variety of reasons and I’m OK with that. The only person I’m really interested in being better at is me, but there are some competitive folks out there who take getting listed as an interesting photo quite seriously. They accumulate likes and favorites as if they were actual currency – and they’re not.

It’s typically that gaming element that has people complaining most about a service. In Second Life, it was about impacting how people made real currency. On Twitter, it’s about how many people retweet you. On Facebook, it’s about how many people like your page or like your posts or share your posts. The gamification, often heralded as a game-changer, is a double edged sword.

Aside from the popularity contest, there’s the user experience. UX is what they call that now because we humans like to abbreviate things and, in this case, ‘UX’ allows people who don’t do well with 4 syllable words a chance to discuss user experience – perhaps a dangerous thing if one thinks that through. Most people feel an emotional ownership of a service despite the fact that they don’t actually own the service. This ‘ownership’ creates brand/service loyalty but it also doesn’t react well to changes perceived as drastic even when the changes positively influence what users can do.

Change is difficult to swallow, not unlike a hot pepper. Mixed in with other things, change becomes more easy to swallow. It’s an issue of flavor and gauging the taste of the audience. Smart owners of services take the temperature on issues before they do so, allowing people to believe that they have an effect on the service they get (and reinforcing the false ownership) and that they matter – but the reality is that what people want also has to meet the criteria of the owner of the service. TANSTAAFL.

Every change that Facebook makes upsets people. Yet Facebook users still use it, even if only to complain about Facebook. The same can be said of any service. It boggles the mind at times what users will put up with despite their complaints. From the outside looking in, one has to wonder why people do put up with so much.

That’s where User Experience comes in.

Language And Tech (2014)

tweet

It’s official, for better or worse: ‘Tweet’ is now recognized in the Oxford dictionary despite breaking at least one OED rule: It’s not 10 years old yet.

Big Data‘ also made it in, as did ‘crowdsourcing‘, ‘e-reader‘, ‘mouseover‘ and ‘redirect‘ (new context). There’s a better writeup in the June 2013 update of the Oxford English Dictionary (OED) that also dates the use of the phrase, “don’t have a cow, man” back to 1959 – to the chagrin of Bart‘s fans everywhere, I’m sure.

As a sidenote, those that use twitter are discouraged from being twits and ‘sega’ is actually a dance from the Mascarene Islands.

It’s always interesting to watch how language evolves and sometimes it’s a little disturbing. I honestly don’t know how I should feel about ‘tweet’ making it in as the brand ‘twitter’ is based on the word ‘twit’… see above link… but hey. Oxford says it’s ok and twits and tweeters everywhere can now rejoice.

Image courtesy Nancy L. Stockdale and made available through this Creative Commons License.

Internet Governance (2014)

Funny Internet Spam for eMail and Websites is Spicy

The continued battle over who should police, or better, govern the Internet continues (BBC). It’s nothing new, really – I’ve been active in Internet Governance discussions since about 2003 when the first World Summit on Information Society was held – I was even a nominee to go. Since then I’ve participated in active discussions regarding Network Neutrality, spam, spam, spam and spam (amongst other things, as spam often comes). It is interesting, particularly in the context of the BBC article, that the lines have become so clear that even the media can see it. It was apparent in 2003 at the WSIS because the United States – the de facto originator and leading service provider on the Internet (everyone say ‘hi’ to the NSA) – did not send any government officials of note but the corporations did show up.

‘Governing’ or ‘policing’ the Internet is not a simple thing but most of the issues are quite simple. If, for example, as much attention was paid to spammers as there is on copyright law agreements, you likely wouldn’t need to subscribe to an anti-spam service. A standardized approach to dealing with spam across the globe should probably be a priority but instead it has become an industry, an industry that I imagine is quite lucrative and unwilling to actually solve the problem rather than treat the symptoms for a price.

Other problems, such as dealing with pornographic websites, are also easily solved by simply forcing/encouraging (stick/carrot) such websites to use ‘.xxx‘ instead of ‘.com‘ – but the discussion quickly devolved into what pornography is and is not, enough so that there really was no discussion and probably a lot of pornographic sites being visited by bureaucrats with an excuse to investigate. “Is this porn? Lets discuss it…”

Now in an age where cyberwarfare does exist, where large groups like Anonymous hide in the cracks – some say for better, others for worse – there are more and more issues coming to the fore. Consider what nationality the cloud is as an example – privacy laws in countries are largely incompatible even while copyright laws have become, thanks to corporations really interested in copyright, ubiquitous.

People do need to get involved if they want to have some say in the matter – I’ve been at it for 10 years.

If you’re using the Internet, you might want to take a global view at the issues. Some are complicated, some are not.

A good place to start would be the Electronic Frontier Foundation (EFF).

Why should you bother?

Because even as the continuously stymied ‘discussion’ of internet governance and policing continues, Google has already begun launching internet beaming balloons. There’s nothing wrong with that but it demonstrates the difference in velocity between governance issues and internet corporations.

The world can’t figure out how to cooperate, but now the Internet has balloons.

Code Responsibly (2015)

Control YourselfWe are stuck with technology when what we really want is just stuff that works.

Douglas Adams, The Salmon of Doubt

More often than not I’ve had to deal with projects where I sincerely wondered whether salespeople and upper management – those that charge admission for the voyeuristic tendencies of the public in relation to technology – understood the implications of decisions. Examples abound. Planned obsolescence of a business infrastructure based on a technology tree. Coding one’s business into a corner. Complaining about the spaghetti code but forcing the conditions where all programmers can do to keep their jobs is make meatballs (features) and slathering the thing in sauce so as to keep those that sign paychecks appeased with something… resembling… something palatable. The list goes on.

Somewhere in the 1990s, Free Software and Open Source came along and put programmers in charge of much of the business process. Because of experiences I’ve had over the years, it was easy to say, “hey, this might fix everything!” Years of experience, though, made me bite my tongue because… well, because programmers are mostly interested in writing code. It’s rare to find a programmer that is interested in actually creating a product. Just as there are no unfinished poems for poets, there are no unfinished programs for programmers.

This has haunted Linux. Granted, Linux at its core has a benevolent dictator that keeps feature creep and feature tsunamis under control – but the desktop Linux never took root as much as it could have because software developers aren’t as good at keeping things simple. Frankly, in general, we suck at it. It’s not a bad thing. It’s not a good thing. It’s the way it is. There are outliers, of course, but those are rare. I’m one of them and it’s because of something quite simple I learned as a Navy Corpsman:

First, do no harm.

Harm is a subjective term. There are even people who appreciate the common understanding of the word as pleasure though this is a family friendly blog and we won’t discuss that much. Let us say that, generally speaking, there are almost no people on the planet who would wish to have harm propagated against themselves. Yet software developers have a tendency to do it every day. I’ve done it and, on much rarer occasions, I can catch myself doing such things because I’ve learned to identify them.

That’s why I really enjoyed Paula Rosenblum’s article, ‘Is Software Quality Going To Hell In A Handbasket?:

…Can anyone yet understand why the MS Office interface has changed completely twice in the last three releases? How many hours of productivity have you lost hunting for menu items that you knew by heart last time around? And do we even want to start talking about Windows?  Not today. These posts are only supposed to be so long.  Let’s just say when your Executive VP banker brother-in-law calls to ask you how to print a document in Windows 8 you know things have just gone silly…

Paula completely nails it, and that’s just a piece of the article.

Simplicity is really the key. Yet simplicity isn’t that easy when expectations are constantly evolving. The only way to actually assure a good balance of features and meeting user expectations is something that most software developers suck at: Communicating with users.

It’s almost akin to having Marines who were naughty getting stuck with KP duty – where they cook for other Marines. The Marines don’t see a flaw in this logic.

To make matters worse, businesses are also not that great with the balance – and in being bad about the balance, they often spend more money than they would have to in chasing their tails – or as they see it, catching that thing that’s oh-so-close-all-the-time.

Programmers do it to themselves. Businesses do it to themselves. Worse, both can propagate it on others – and often do.

First: Do no harm. Code responsibly. And use the right technology – just because you’ve invested heavily in it doesn’t make it right. The world has been littered with the bodies of those that meant well while reinvesting in bad debts.

After all, the income you save may be your own.

Image at top left courtesy Flickr User JOSE VICENTE JIMENEZ RIBAS through this Creative Commons License. Enhanced by Zemanta

Imagination, Creativity, Innovation (2015)

ObserverImagination. Creativity. Innovation. Powerful words that have become cheapened as buzzwords, falsely attributed to some and sometimes never attributed to the deserving. I’ve been accused of all 3 at different points in my life and it’s not a brag I make – most of the time it has seemed a curse. In fact, the thing that gained the most visibility remains one of my most painful memories.

It should be no surprise that I picked up Imagine: How Creativity Works and have been reading it in spurts. It’s not that my ADD has kicked in or that it’s a difficult read – it’s something I consider a thoughtful read. It’s criticized for not being scientific in that it’s largely – if not all – anecdotal and doesn’t cite references but my own experience is anecdotal. One point does not a graph make but what the book has done has caused some introspection. That’s healthy and, if you do it yourself, it’s cheaper than laying on someone else’s couch. Really.

The reason I picked up the book is because for decades I’ve been dealing with the software developer/ engineering side and tossing in the creative side. Getting the two to work in conjunction has become easier over time but it has become more difficult to function within companies that don’t understand that the two are not necessarily mutually exclusive.

A story I often tell involves an old manager at Honeywell who told me that something needed to be done. I said I would ‘play’ with it after lunch. He told me, “we don’t play at Honeywell. We work!” I arched an eyebrow and went back to what I was doing. My mentor at the time shook his head at the manager. My mentor got me. But it wasn’t new to me – my father was much the same way. In fact, most of my family is the same way. “If you’re not miserable, uncomfortable and otherwise aggravated, it is not WORK.”

Fine. Maybe it isn’t. But that isn’t productive for me.

Misery Loves Company

I’ve worked with people who took great pleasure in grinding away at a problem – and they were often good at it though in a very brute force manner. I’ve always known a playful mind is where ideas come from. I lean on it under stress; when most people are miserable (see the above definition of work), I’ll seem upbeat and amused at the world. Why? That’s how I handle stress. It’s also how I solve problems most efficiently. I don’t beat myself like a member of Opus Dei.

Don’t get me wrong – there are times to be serious. The reality, though, is that being miserable and expecting other people to be miserable lends itself to spreading misery more than creativity and problem solving. Some people mistake this for a positive attitude. It’s not. I’ve found that once I separate myself from the problem I can walk around it, dance with it and get to know it in a circumspect way.

I know I’m not alone in this but I’m fairly certain I’m in a minority.

Everyone’s Creativity and Imagination are… Different

Ask 5 kids to make up a story, individually, and you’ll likely get 5 different stories. If they play at it together, though, you get stuff like ‘tape a cheetah to her back‘. The different ways that individuals approach problems is something that can work synergistically or… not. It means reining in egos and being able to discuss a problem outside of one’s self. It takes a level of trust and a willingness to have bad ideas.

Imagine: How Creativity Works talks about different paths to creativity. Being relaxed allows one to solve problems more readily – something that seems very intuitive but is counterintuitive in most work cultures I have experienced (see definition of ‘work’ above). As a software developer, I typically solve all the problems away from the keyboard and go to the keyboard when I’m ready to implement or test an idea… but most work cultures expect a software developer to sit in place. I often go for walks throughout the day not just to get the blood moving rather than congealing in my posterior but to change what I am experiencing. It’s almost something that Buddhists have patented – being in the present. Being a little distracted, like watching something from the corner of your eye. Throwing yourself at the ground and missing – or as I explained it to someone recently, woolgathering.

It wasn’t too long ago that I fixed a browser plugin as I walked to lunch and pondered Costa Rican addresses. When Microsoft’s documentation fails – more often than Microsoft likes to think – all you can do is look at what you know and try to find a solution. Lateral thinking allowed me to look at the problem with my own experiences and understand a problem that was, literally, not in the documentation. The data being returned by a call to Microsoft’s API for the printer was returning more information than was planned for, causing the plugin to break 3% of the time.

There are other paths to getting creative problem solving and the book (ibid) points them out – anecdotally – but I’ve experienced much of what I have read myself. Did you know that people with ADD/ADHD seem to do better where creativity is required?

Look! Squirrel!

Technology and Innovation

When it comes to technology, more people associate innovation with adding features and functionality (Open Source and Microsoft do have something in common, after all) – but innovation isn’t about adding features and functionality. Innovation is about adding the right features and functionality for a problem or group of problems. You want innovation? Don’t look at the iPad, the iPod or what have you – look at the damned wheel. Look at fire. Look at Visicalc. Yeah, we know you want to talk about the Internet but the Internet hasn’t changed things as much as accelerated them, in my opinion – we could get into the decreased distance per unit time discussion but that’s not what I’m writing about right now. Simmer down.

When you read about how scotch tape was made, you get a real idea of innovation. Incidentally, the company that brought that to you also brought the touch screen. 3M. Not Apple.

Real innovation is rare and it’s even more rarely commercialized. Tesla invented and he basically had to give away his patent to Westinghouse to get alternating current off the ground while Thomas Edison was busy electrocuting any creature he could find during the War of the Currents. If you think Apple vs. Microsoft is a better love story than Twilight, the War of the Currents will knock your socks off – static electricity and all.

People all over the world want to know where innovation comes from – as if it’s a secret sauce that you add or a base upon which to build a foundation. What Imagine: How Creativity Works explores isn’t exactly that but the many paths of getting there – and there are quite a few. And the roots of such innovation, as one might expect, are in imagination and creativity – but the real roots are in being able to harness them in different ways and be willing to fail. Innovation is rarely someone in a white lab coat staring at a computer 12 hours a day. Innovation is what happens when you’re in the shower thinking about what happened during that 12 hour day.

It seems that in a world that shouts for innovation we work ourselves into a corner where we can’t get to it. Everyone has imagination and creativity and, yes, they can be as overdone as the young stereotypical black clad poet screaming into a microphone – but enough imagination and creativity can go a long way.

Image at top left courtesy Flickr user Hartwig HKD, whose inspirational shots were tough to choose from. The work is made available through this Creative Commons License.
http://rcm-na.amazon-adsystem.com/e/cm?t=knowprosecom-20&o=1&p=8&l=as4&ref=ss_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr