In love with our own lingo
I worked on a software project recently where the interface was developed more by developers than end-users (you see this a lot, actually). In this instance, the application needed a phone number (but not a mobile number). Rather than asking for a land-line number (or just “Phone number”), the entry form asked for a PSTN. I was doing a usability review of the app and pointed this out-- “What the hell is a PSTN?”
The IT head pointed out to me that a PSTN is the industry term for a land-line (it stands for Public Switched Telephone Network) and that, now that I knew this, it should make sense to me. I suggested he change it to “Phone Number”—since this app was going to be used by the general public. He insisted that most people know this—just not me. I told him he should still change it. This advice fell on deaf ears, but we made some other good changes to improve the usability of the app.
My logic is (and continues to be)—if I don’t understand a term, it’s too confusing. If I do understand it, would my grandmother? In my situation, there are still occasions when I don't understand something because of cultural differences-- like expressions used in the UK but I never grew up with. I still question them anyway.
This happens all the time—techies want to educate the non-techies on how to talk about technology. Sometimes, these aren’t even terms in the technology industry—but acronyms and abbreviations used in a specific company that everyone adopts. I’ve been in small twenty-person offices where you would think everyone went to school to learn how to talk like they do—even the secretaries: “Are you going to de-duplicate the NOC node or shall I?” Eventually, no one knows how to talk like a regular person anymore.
We techies love our lingo. In even smaller arenas (like a company or an industry) this lingo becomes even more precious. When we talk like this, we really sound like we know what we are talking about. It impresses people (or so we think). I can remember the feeling of working on a stock trading application for a major bank and talking about trade flips and different types of transactions and FSA systems and then stopping to reflect on how cool it must all sound—I was an insider. I wasn’t a newbie—I sounded like an authority.
But all good software and hardware have the ability to take techie jargon and make it palatable to the masses. A good site or web application should not imply when you log in that you have no business being there because you don’t know how to use it. If you don’t understand the menu options, then you are in the wrong place.
In the future, people may look back at our gadgets today and conclude that Apple created the digital music player. The truth was that portable MP3 players existed a few years before the iPod, but while techie ruled this area (with Rippers, LAME codecs, etc), Apple made the whole process simple for those who didn’t feel like pouring through thousands of forums and blogs to figure out who to rip a cd. Try explaining to your grandmother how to set up a podcast aggregator while not using iTunes and you can see how much they simplified this area. The term MP3 made it into the mainstream lexicon, but most of the terms of the early days did not. Today, you still hear people argue about the benefit of Ogg or Flac over MP3, and can’t figure out why the mainstream hasn’t switched from MP3 to the superior Flac. But the general public doesn’t care about this.
Google is revolutionary and I love the company, but to read many of the books out there (like “The Google Story” or “What would Google do?”) you would think that before Google, we were all randomly typing URLs into our browsers hoping to find something. Yahoo, Ask Jeeves, Alta Vista, Lycos, etc were all there. But Google made it easy in addition to being far more efficient. One textbox, one button. It was easy to tell your grandmother how to use it.
In technology, especially when it comes to interface design or anything that requires us to interact with the public, the best skill is to be a layperson. Some people call this the “mother” test. If your mother came to this site, or used your application, could she figure out how to use it without calling you?
I think about every time I have to fill in my tax forms how lost I am. Even the “How to fill in this form” instructions confuse me. It makes sense to someone, but they are in love with their lingo too.
New Years Resolutions
I’m a big believer in New Year’s Resolutions. Having said that, I hadn’t really thought of any. Sure, there’s the resolutions that could be carried over from last years—all that diet and exercise stuff—but nothing new.
At this time of year, I feel self-conscious about running. Tomorrow morning will the the worst. The sidewalks and pavements are always packed with runners on the first of Jan. Since my long career in running has not done much to reduce my weight (imagine if I didn’t run!), I always look like a novice when I’m out there. I look like a New Year’s runner. But still, there’s nothing wrong with being someone out on a run because they made a resolution. Good for them! They probably feel self-conscious too, but they do it anyway.
This time of year, if you talk about resolutions, 3 or 4 people say the same thing-- “My resolution this year is to not make any resolutions!” Hah! Get’s me every time! How clever.
The problem I always had with resolutions is that I fear being mocked if I don’t carry them out. I felt the same way when I started running or earlier this year when I started going to the gym. I felt that if I start, I could never stop because that would be failure somehow.
If I go for a run on 1 January, for example, I feel as if I have to run every day after that. If I start going to the gym, I need to go for years. But the truth is, this kind of fear stopped me from doing lots of things. If I go to the gym once, it’s one time more than never going. If I see it as something I need to do today rather than a commitment to something for the rest of my life, it makes it much easier to handle.
My most famous resolution with my family is the time I decided I would become a vegetarian. It lasted 7 days. But that burger on January 7th was fantastic!
My parents quick smoking on New Years when I was a kid. They never took it up again. Resolutions are not always broken.
There’s nothing magical about a New Year’s resolution—it just gives you an excuse to make a goal. An it’s easier to tell people how long you’ve been keeping it up.
I’ll spend today thinking of a good resolution. It seems a waste of a calendar change if I can’t come up with one.
Happy New Year and I wish you a wonderful 2010.
Complexity of software projects
A good article was posted yesterday by the ComputerWorld Website saying that the leading cause of software project failures is the complexity of the applications. The article quotes software architect Roger Sessions:
"Our goal should be to design the least complex architecture possible that solves the business problem”
I’ve been part of many projects that were mired in complexity. They usually over-run or we end up with a sub-par system that awaits a never-to-happen refactoring and revision.
It’s easy to brainstorm a project and add feature-after-feature until you produced a project plan which stretches over months or years. It’s easy to design an interface that looks like a cockpit dashboard with lots of functionality that you will probably never use, but looks impressive in the way it fills the screen. “Wouldn’t it be great if this interfaces with every other system we have? Wouldn’t it be great if we could use that new transactional system that’s really hot right now? Wouldn’t it be great if . . .”
I’ve been guilty of this in the past—but I’ve been burned so many times that I tend to err on the side of simplicity (but I don’t always get final say in architectural decisions).
Over the past few years there has been a move to simpler architectures, simpler interfaces, and quicker release cycles.
Scrum is an agile methodology that stresses frequent releases over many iterations. So, at the end of each 2-3 week iteration, you have working software—regardless of whether you release it to the public or hold until the next iteration. It’s a methodology that resonates with a lot of people who have worked on failed projects in the past. I became Scrum Master certified a few years ago, and it changed my whole view of how projects should run—but it is not easy to convince business owners to go this way.
37 Signals released a fantastic e-book called “Getting Real” which they stress that building software is more important that talking about building software. They have released one of my favourite on-line apps ever with Basecamp. It is quick, easy, and has a simple interface. They refuse to clutter it every bit of functionality anyone asks for.
Interfaces in general are getting more simple to use—and not just for products like Basecamp. 10 years ago, you had apps that tried to fill your entire browser with things to do, but now you see more and more that are intuitive and easy to use. Compare Yahoo! (with a browser window you couldn’t find any blank space on) with Google (a textbox and a button—no manual needed).
The software that has a better chance of reaching “finished” is the software that keeps the architecture simple, keeps the interface simple, and releases frequently.
Here’s the link to the ComputerWorld article: http://www.computerworld.com/s/article/345994/The_No._1_Cause_of_IT_Failure_Complexity
The Future of Work
There is a very big company in the outsourcing industry called oDesk. I learned about them a few years ago when I was looking at outsource projects back then. I’ve used them a bit and they have a fantastic product.
They put a video out on Youtube recently called the Future of Work. It’s very good. Here it is if you haven’t seen it:
The link is here: http://www.youtube.com/watch?v=G8Yt4wxSblc
For the past few years, you could definitely see the tide turning. Maybe there will soon be a world where the majority of people don’t have work which makes them put on a suit and commute for hours every day. I’m glad that other companies believe that and are working towards it.
Like Zorro
One of my favourite movie quotes is from the movie Jerry Maguire. It’s not my favourite movie (that’s Goodfellas, if you’re interested), but it’s up there.
There’s a scene in the movie where Jerry (Tom Cruise) and Rod Tidwell (Cuba Gooding Jr.) are sitting on an airplane while Jerry is getting drunk. Jerry is wallowing in his misery and feeling sorry for himself and telling Rod that he can no longer help him because he (Jerry) is “cloaked in failure”. Rod is frustrated with Jerry’s sudden lack of confidence:
Anybody else would have left you by now, but I'm sticking with you. I said I would. And if I got to ride your ass like Zorro, you're gonna show me the money.
I’ve seen the movie a few times, and that line always sticks with me. There are times when everyone loses their nerve or their confidence drops. Hopefully when that happens, someone close, usually out of frustration and being tired of hearing your self-loathing B.S., pushes you on.
My Windows 7 problems and the solutions
I upgraded to Windows 7 a few months ago and have had a handful of issues on my desktop PC because of it. I love the new OS, and would not want to go back to XP (I left Vista ages ago), so I had to try to figure out why these problems were occurring. It was a lot of frustration going through forums and trying to find out what was going on.
So, I’m going to post a few links here about the problems I had and where I found the resolutions. I’ve installed Windows 7 64bit on a Dell Dimension 9150 with 4gb ram.
Wired Ethernet connection kept dropping and showing up as “Unidentified Network”
This was strange. I would be sitting and working and then the connection would go down and it would take about an hour of faffing about to get it to come back up. I found a lot of different possible fixes for this, but none of them worked. I was having simultaneous trouble with my Orange Livebox at the same time (I was never sure which was the culprit).
This problem was eventually solved by disabling the Bonjour service used by Apple. I’m a bit annoyed by this, as I have some applications that use it—but it’s not nearly as annoying as having to chase down a problem with my network adaptor ever couple of days.
PC would not hibernate without rebooting.
I would try to hibernate and the machine would reboot and switch back on. I depend on hibernate because I need my machine to turn on at different times of the night to perform backup tasks on my web servers.
The problem had to do with my mouse having the ability to wake up my pc. The problem is outlined here.
Skype Freetalk Everyman Headset would not always work.
I bought the Skype Freetalk Everyman USB headset to use with Skype. It works great—when it does work. I had a problem where the PC would only identify the headset about 40% of the time. The Freetalk website is absolutely rubbish and there are a lot of people out there (as I’ve seen in forum after forum) who can’t get this to work either.
I fixed this by installed an application called “Universal Link” which I downloaded from the InstoreShop Support pages. This was incredibly difficult to find. I don’t know why there is no way to find this from their home page. I noticed that my product was called TALK-5115 on my invoice and searched on that. I found a driver on this page. It seems to work fine now.
I hope this helps someone. I spent hours looking for solutions to these problems. My laptops haven’t suffered any of them. Now, my only concern is the fan kicks into high speed far too often for my liking . . .
The importance of reading books for software developers
I read a lot of technical books. The last one I read was called “Design Patterns in C#”—it was good, but didn’t carry much new away from it. I’ve read books on WCF, Silverlight, Ruby on Rails, and Java too – although I’ve never worked with these technologies in a professional capacity. My hard drive is filled with demo projects.
I know professional software developers who have never read a tech book all the way through. They survive on Google searches. When they run into a problem or need to do something new, they Google, get the answer and move on. This works, but you often don’t get all the of the information that would be helpful to you.
When you just search for the information you need, you only find the subjects that are interesting to you. It would be like picking up a computer book and only reading the chapters that sound good. You would look at the construction of the GUI, database code, etc. This is how things like Code comments, html standards, testing habits, etc. get ignored so frequently in this industry.
When I conduct interviews for developers, I like to ask “What is the last technology book you’ve read?” Sometimes, the interviewee will try to impress me by telling me how long he has been in the industry, but that’s not the answer I was looking for. I also ask which websites or blogs they go to for new information—since books are slow to publish, but technology changes everyday.
You have to Google for solutions, don’t get me wrong. But if you’ve read a book (or e-book or whatever) you have a more holistic view of a technology. Google is fantastic because we don’t need to be so concerned with exact programming syntax as we do with what a technology is capable of. Back in my early days as a software developer (VB5), I used to pride myself on my ability to write code on paper—I knew the exact syntax without intellisence. Now, that’s just stupid—I can look up anything I need in a few seconds (because I know what I am looking for).
There is a fear that if you are carrying a book around about your specialist subject, you are somehow showing people that you don’t know enough about it. I have a friend who gave me a hard time about reading a book on Advanced CSS a few years ago. He told me he had never read a programming book because they are too dry. I’ll agree with that, but that’s like a professional athlete saying he doesn’t like to train because it is too boring. By stepping away from the practice and into the theory of what we do, we become more self-critical and improve at what we do.
I listened to a Brian Tracy audio book years ago. He is always talks about the importance of reading. He says (and I’m paraphrasing):
If you went to see a doctor about a problem you were having, you wouldn’t want to see one that doesn’t read anything. You wouldn’t want someone who had learned everything on the job. Someone who is only really good at stuff he has done before and looked it up at the time. You want someone who knows what is going on in the medical industry. You want someone who reads the latest books and periodicals in his field. The same is true for lawyers or any other knowledge profession.
And the same is true for software developers.
Thanks to my new friends in Dalian and Shanghai
I’ve been back for two days and am finally getting over the jet lag from the business trip to China.
In Shanghai and Dalian, I met with 9 software companies in an effort to find more offshore partners for Overpass. I learned a lot from the companies I visited. They ranged in size from a few companies with thousands of developers to companies with only two developers.
Some of the software companies were located in large software parks with state of the art facilities. A couple were located in residential-area office buildings far from the centre of Shanghai.
There is definitely a lot that China can offer the software offshoring world—in fact, they already are. On this trip, I was also advised to look at Sichuan, Chengdu, and Nanjing as some other destinations.
I also met with some expats in the area who gave me a great deal of insight into the software development situation in these cities.
I came home with piles of notes to record and thoughts to put down before they evaporate. It’s been busy the past few days—so this post is pretty brief.
It was a great trip and I am totally in awe of the hospitality I was shown there. I thank everyone who showed me around, showed me their companies, and generally made me feel very welcome.
I’d also like to recommend the China-Britain Business Council (CBBC) who set up the meetings for me. If your looking to get into China, give them a call.
Now, the real work begins.
5 Days in Shanghai
I’m sitting on a plane from Shanghai to Dalian for my next set of meetings with software developers in China. I haven’t blogged in a while. This is a small plane and there is no entertainment. This is the perfect time.
I’ve spent the last 5 days in Shanghai. It was my first time to the city and I, like most people generally, am very impressed with the size of it. Shanghai is huge! There are so many people and it makes London look tiny.
The Expo is less than six months away and there is a lot of pride that it is being held there. The Expo logo is everywhere. I hope to return in the summer when it is held.
I stayed in a tiny room at the Rayfont Shanghai Xuhui Hotel. I wouldn’t recommend it, but it wasn’t too bad. My room was so small, I could see every part of from any angle. The shower and toilet were separated from the rest of the bedroom by a clear sliding glass door. Luckily I was by myself or I would have look away when someone used the toilet. The internet was slow. When I paid the expensive price for the breakfast buffet in the hotel, I could get bacon, eggs, crinkle cut chips, and spaghetti. However, I was on the 31st floor of my building (the hotel has several tall buildings) and had a nice view of the city. I even watched a thunderstorm roll in over Shanghai, which mixed with the lights of the evening, was strangely beautiful.
I got around mostly by taxi but took the metro when time permitted. I felt much more comfortable on this trip to China than I did on my first trip in August. I tried to get by on Mandarin as much as possible and many very hospitable people helped me around. Generally, everyone pretty much found my Mandarin to be amusing. I’m really glad I can speak it—there are many people (especially older people) that I would not have been able to talk to at all unless I could do it in Chinese. This was important, since travelling by myself got pretty lonely.
Most of my days were spent in meetings. I met with 6 software companies in Shanghai—ranging from huge companies to very tiny ones. It’s been a very educational experience. Most of the time, I spoke with General Managers and chairmen, but I really enjoyed getting a chance to talk with people on a technical level. All the companies were very hospitable and I made some new friends. Some people even read this blog before my visit which was nice.
I didn’t bring a good camera and mostly took videos of everything I saw. The trip was for business rather than sight-seeing.
The flight attendant on this plane just announced that the temperature in Dalian is below zero right now. It was hot and muggy when I arrived in Shanghai on Saturday. I’m looking forward to Dalian.
In Dalian, I’m going to meet with a few more companies and a few friends. I’m looking forward to the trip. Dalian, I hear, is big in outsourcing but mainly focuses on Japan and Russia. They don’t do much business with the West. Still, I’m eager to see what they are like and discuss some things with them.
Hmmm. Adventures in software development. Who would have thought it would be this exciting.
Sorry if this post is all over the place. It’s been a long day.
It only takes one error . . .
A good developer hates to see an unhandled error in his or her code. If a user sees an error that tells them what line your code failed at, this is not only a potential security risk but also a major point of embarrassment. Bad developers think it’s totally acceptable.
I have this kind of argument all the time-- “Why don’t you put an error handler here in case the calling code (or user) enters some bad data.” I get the same response ever time, “But, how often will that actually happen.” I have this conversations over and over. The only thing that changes is the person I’m having the conversation with.
When you’ve coded for lots of different companies, you start to learn how common this is. You have a few very dedicated developers who cater for errors I can’t ever see happening, but you get a lot who are just winging it and stop coding when their work reaches bare functionality. When you see a news story about how a big site was hacked and all their data compromised, it’s not all that surprising. A site can look very professional on the outside and be very shaky underneath.
I was trying to order some traveller’s cheques from American Express today. You may have heard of the company. I’m sure they spend top dollar for software developers. I’m still not sure what I did to get this (I wasn’t looking for bugs in their software), but I got a big ugly ColdFusion error message:
The error is a standard IIS-delivered unhandled exception error. I know the lines of code that failed. I can even click on a link to see a stack trace. So, you know, I guess it’s embarrassing for the developer (or at least I hope so). But the bigger issue is that I can’t trust the site any more.
Somehow, I entered a zero where I should have had a value (and the code is trying to divide by zero), but I honestly don’t know where it was done.
Do you think I’m entering my credit card details after this? I mean, what else are they not paying attention to?
Actually, it looks like American Express sent me to another site (with AmEx branding) called FX4You. But still, it reflects badly on American Express.
The ugly truth of software development is that there are loads of standards, but not many of them are adhered to. Testing always goes out the window to fit delivery deadlines. Code reviews are non-existent in most organisations I’ve worked with. The flip-side is that projects loaded with too much bureaucracy frequently fail to see go-live. There is a happy medium and it is difficult to find.
Back in 2000, when everyone was going crazy about e-Commerce, I was working for a small company looking to build an online shop. One day, I mentioned that I did not trust most websites with my credit card details, someone started to poke fun at me-- “Isn’t it ridiculous that our web developer doesn’t trust buying things on online?” But, even then, I knew how easy it was to leave security holes open in software. Just because I took precautions in my code, I knew not everyone else did. Now it’s almost ten years later and I think most people are more wise to security, but I still would take a site that uses Paypal over a custom-built credit card engine any day.
Maybe I can buy my traveller’s cheques through the American Express site safely, but I won’t risk it.



