Rules of Software Development revisited

May 13th, 2008 by Jason O
Posted in Business, Technology | No Comments »

May is the anniversary of my technology career. Going on nine years now and entering the management fold, I wanted to revisit the rules I created for software development 2 years ago while I was still in consulting.

  1. Don’t panic
  2. Write the best code possible within the time frame given. If you have lots of time then your code should be excellent. There is nothing wrong with writing functional if not optimized software if you are on a tight schedule either. The customer only cares about the end results.
  3. Work to meet all deadlines, even if they are unreasonable. Do everything in your power to make a deadline on time.
  4. When a deadline is not reasonable, point it out to management. They may not change the deadline but at least if you miss it then you can say they were warned.
  5. Coding standards should be adopted and strictly enforced. They make the codebase easier to maintain and will often help less experienced programmers from making simple mistakes. The simple mistakes are always the hardest to find.
  6. Ask for what you need but make do with what you have.
  7. Nobody “owns” code. Anyone should be allowed to make improvements to code when they are able.
  8. Changing code because it was not written “your way” is not the same as improving it.
  9. Every team should adopt or develop a methodology. Senior developers and team leads should observe what is working and make it a formal practice.
  10. When you have downtime, write documentation, make notes on potential code improvements, and maybe refactor that kludge you introduced two releases ago because you were in a hurry.
  11. Refactoring should only be done if there is an obvious benefit. Moving around code, making minor changes, or even doing optimization should be avoided if it may break an imminent release. Refactoring is good, but timing is everything.
  12. Cut-n-paste is a fine tool but should be used with care. A majority of your programming effort should not involve cutting and pasting code.
  13. Don’t underestimate the power of good software design.
  14. Develop a personal methodology to get yourself from requirements gathering to the final product successfully. Coding should be the majority of your effort but you shouldn’t code without a plan.
  15. If the application is functioning as planned but the customer doesn’t like it, then the application is a failure. I don’t care how brilliant your code was.
  16. Technology choices should not be made based on bias or resume building. The most appropriate technology for the job should be chosen.
  17. Act with integrity. Gave credit where it is due, blame no one else for your mistakes.
  18. If you are going to miss a deadline or a problem arises, be quick to notify someone that there is a problem.
  19. If you make a mistake, your first action should be to fix it. Laying blame or trying to cover your rear wastes time. In the long run you’ll look better if people see you acting quickly to correct your actions. The only people who never make mistakes are the ones who never do any work.
  20. Don’t say “I don’t know”. Say “I’ll have to look into it”, “I don’t have any experience in that area”, or anything else that indicates to your client and/or customer that you will make an honest attempt to get some more information.
  21. Don’t say “I can’t”. What it usually means is “I won’t”. Nothing is impossible. It’s always a matter of how much time and how much money. If the customer has an unlimited supply of either, then the only thing stopping you is you.
  22. Assume that QA will find a problem no matter how thoroughly you unit tested. If QA doesn’t find any problems in your code, then assume something is going to fail spectacularly upon release.
  23. When someone finds a problem in the system, assume it is your fault and investigate all possible causes in your code. Laying blame and pointing fingers should not be your first reflex. Besides, it’s a lot easier to lay blame when you already know it isn’t your fault. If it is your fault, maybe you can fix it before people start pointing fingers.
  24. Diversity is a good thing. If we were all the same we’d all make the same mistakes.
  25. The worst person to find mistakes in your code is you.
  26. No one ever became great at their job by never being challenged.
AddThis Social Bookmark Button

A confession

May 12th, 2008 by Jason O
Posted in Culture, Work | No Comments »

If you were to ask me what my yearbook caption should read, I’d say either “Most likely to be misquoted” or “Most likely to be underestimated”. I have had more people tell me I would never do such-and-such for whatever presumptuous reason throughout my life. I have had so many people stand in the way of myself and success and then have the gall to tell me that I would never succeed. Well, no, not while you’re standing in the way. Should I just go through you? (Answer: Yes!)

The best revenge truly is living well. Even so, there are days when I want to get in touch with certain people to let them know how I am doing. I don’t want to go into detail, but things are going very well at work right now.While work may be going well, there is more to it than that. Before I joined my current employer, I was doing very well as a consultant. I progressed quickly, clients loved me, and I always met my hours for the year. Performance evaluations ran the gauntlet between good and excellent. Would you be surprised to find out that I once had someone tell me they thought I wasn’t cut out to be a programmer?

The most powerful enabling words anyone has ever told me is “You can’t”. As it turns out, I so often could. There have been goals I never reached, but only because I couldn’t do things all at once. Did you know I was planning on going to Airborne school while I was still in ROTC? I left ROTC for the wrong reasons, but even though I was still a student I was already making strides towards my military career. While I regret that I did not pursue that career, I did at least go on to achieve quite a bit regardless. Even in the face of more “You can’t”. True, there have been some interests that I would not have succeeded at. At one point when I was younger I was sure I wanted to be a fighter pilot, but my eyesight has rendered that dream null and void.

Still, there has been so much that I have not accomplished simply because I have not pursued it. Looking back, I was naive to think I would do certain things as quickly as I thought. Sorry for the vagaries, but I have my reasons for now. The point is, I still managed to accomplish much. I’d really like to go back to all those people who ever wished me nothing but failure and shove my success in their faces. Then again, I realize that one of the reasons I have been so successful is because I went on to do so much by ignoring their advice and moving past them. To continue being successful I have to continue to disregard everything about them. A shame, because the petty little troll inside of me wants to gloat so badly.

AddThis Social Bookmark Button

What I hate about Internet Forums in one easy link

May 9th, 2008 by Jason O
Posted in Culture, Gaming | No Comments »

Someone does a review where they suggest that Smash Bros. Brawl may not be perfect and there is now a forum response thread over 1000 comments long

You know, even if I was a pissed off Nintendo fanboi, the nature of Internet forums means that coherence just gets lost after a certain point. There is no way that discussion still has any meaning. I’m afraid to look. Surely the only people left discussing it two weeks later are people who think it may be possible to commit some kind of textual assault.

AddThis Social Bookmark Button

Somedays you get the bear

May 8th, 2008 by Jason O
Posted in General Nonsense | No Comments »

Banzai!
Click for Larger Version

I am not a great Halo 3 player by any means. I think I work well in a team. I can establish my role very quickly. I am surprisingly good with dual SMG’s even though I see most players eschew them for the shotgun. This is typical of most games I play on-line. I tend to be better with a weapon that most people overlook or outright avoid. No one avoids a gravity hammer, though everyone tries to avoid the guy with the gravity hammer.

The picture above is from one of my sessions. The red guy about to land with the oversized meat tenderizer is me. The blue guy thinking he is safe inside his shield is screwed. He is about to have a very bad evening.

After a series of defeats, largely because my teammates kept quitting in the middle of the match, this one felt pretty good.

AddThis Social Bookmark Button

Only the lonely

May 7th, 2008 by Jason O
Posted in Business, Culture | 3 Comments »

Hubba Hubba I want to draw attention to this image that has been appearing in my Yahoo mail account recently. I’m sure it’s no secret that I am male and as someone of my gender I do have a predeliction towards certain things. I once heard a great analogy that boobs are to men what shoes are to women. No matter how many pairs you’ve seen you’re still going to look. Having gotten that out of the way, I still can’t help but find this ad for an on-line dating service extremely annoying. Oh, yes, it has also been edited because I am not about to give away free advertising to a service I don’t endorse.

Let’s break this down. First there is the picture of the young lady herself. What in the hell is she wearing? A cleavage exposing hoodie? I suppose with the wide diversity in fashion such a thing does exist, but this has got to be a first for me. She was definitely selected because of certain assets that she can convey in a visual sense, if you know what I mean. Yes, I’m feeling about as subtle as a crowbar to the testicles about now. I really can’t say too much about the picture itself because it really is worth a thousand words and I don’t have the attention span to write them.

So I really like how on the right hand side there is an option for “photos only”. That’s somewhat disingenuous since this really is just an image and clicking on it anywhere takes you somewhere else. Regardless, I’m sure you can find that “someone special” by only looking at their photo. I guess it helps people with certain priorities expedite their search. “I want someone smart, funny, and optimistic, but if she doesn’t look like a cheerleader then I don’t care”.

Moving on to the “profile” underneath the picture we find out that she’s 30 years old and works as a Barista. I love this, because it is so transparent that some marketing troll came up with this information. I’m not even going to touch the username. Ok, the girl in the picture is obviously not 30. Yeah, I’ve seen some pretty hot 30 year olds and I actually happen to be married to someone who still looks like she’s 18. At 30 you can look young but there is something about that age that is unquantifiable that conveys the sense they are older. I might mistake someone for being younger than 30, but if you told me upfront they were 30 I’d believe you. Tell me someone is 30 that is really 25 and I won’t believe you. I can’t even tell you why. If this girl is 30 then apparently I am 6 years older than I claim. I also love the job description because it’s so non-threatening. She doesn’t work some low paying retail job, she’s not a cashier at JC Penney’s, she doesn’t work fast food, but she’s not a model either, or a lawyer for that matter. She works the kind of job where you might actually have some brains and people would still believe someone that physically attractive would be at.

Nevermind that I seriously doubt that is her real job. She’s got professional model written all over her.

My favorite is at the bottom though. “photos in this ad may not be of actual [dating service name withheld] users”

I can’t say it’s false advertising in a legal sense because the laws around false advertising are so vague and obtuse that actually making them apply is an extremely complex process. I will say that I consider it false advertising from an ethical sense because what they are not so slightly implying is that you can meet this woman using their service.

Look, I don’t have anything against on-line dating. I’m not sure there is a wrong way, outside of meeting people in jail or prison, to find a date. People get lonely and I’ve been married for so long that I have no idea how dating even works anymore. I don’t even want to know. So you get lonely and you turn to the Internet for help. Why not? I turn to the Internet all the time. I can barely remember life without Google or Wikipedia even though they were not my first search engine and digital encyclopedia. I just think an ad like this is exploitive. I don’t see ads targetted to women this way. Either you’ve got the “Sexy vixen” like this picture or the “Happy Couple” and there is no inbetween. Is this a dating service or are you trying to get some guy’s hopes up that he can achieve an easy one-night stand?

AddThis Social Bookmark Button