Not too long ago I saw a TV show about video games. It highlighted that new multi player games that allow a user to be part of a team with specific tasks helps build the teamwork mentality.

I started to think of my corporate world experience and the more and more I thought about my past experiences the more I saw that teamwork is often talked about but seldom really implemented.

We live in a very individualistic society, and no matter how much corporate America tries to sell us the idea that there is no “I in teamwork” we still don’t get what that really means.

At the first opportunity people try to make themselves look better, or when there is blame to be passed around the finger pointing begins. There is the exception of the person that for some reason likes to take the fall, but because of their strong character they get a get out of jail free card every single time.

I think the breeding ground for teamwork is sports, but this country has diverted from actual keeping score for kids to everyone is a winner. I think this further enhances the notion on every kid that they are the best and they have to fend for themselves.

Life can be cruel at times, as can work environments, but a good team behind you is what gets you through. In life it is your family and friends when they selflessly rally around you when you need them. In the corporate world when something goes wrong and the team does the best it can to make the project work.

Maybe multi player video games will help people understand that every role in a team is important and it is ok to just be good at one thing. Maybe sports at the little kids level will start keeping score again; Because in a society of only winners, everyone ends up being a loser.

The Nice Programmer

I dislike the fact that many people think that computer programmers are hermits that like to live in little cubicles under the fluorescent lights. What does not help is that there are plenty of them that do think that computer users are just the enemy trying to break down the precious system.

The reality is that programming is something that requires concentration. To truly solve a problem with good logic you need to use your brain power to make sense of the steps that have to be taken. It sometimes takes time and then peace to be able to translate the thought into actual code.

Some programmers are always coding in their heads. I have actually woken up in the middle of the night with the solution to a problem and if I have remote access I log in and either solve the problem or send an email to myself. Trying to remember the next day is kind of difficult. Some programmers like to walk while they are solving some logic issue in their head so to other it looks like they are in a completely different world. I don’t pace when I think, however I do listen to music a little too loud and the more input the more I am able to work out a problem, but I am not the norm.

I think that this is where the problem with communicating with the mythical creature the programmer is comes from. You see a dude walking down the hall that does not acknowledge the world around him as a rude person. I think both sides feed off each other and the disconnect just becomes greater and greater. I have seen it in several organizations.

One of the most frustrating things as a person is to be ignored. While users would probably think that they are ignored the most on the equation, programmers are also only approached when they are needed for something. Like Milton in Office Space, they are the lasts ones to get the piece of cake if they even get any.

I will never forget the day that a user had a problem at one of my previous employers and I showed up at her desk. She was a middle age woman that I later found out was actually married to a programmer. When I said hi to her and asked her for more details on what was wrong with her report she looked almost scared. She then said, a programmer never talks to us. I later found out who the worse offender was in our department who even refused to talk to the help desk people.

I cannot solve the problem for everyone but I did find out how to make it better, at least for me. Start communication with people on a regular basis. I am not talking about full on water cooler talks with people but just saying hello in the morning when you walk in the office. I have observed that most people do not do this, or don’t like it. A good morning goes a long way into making you look more personable, specially for a programmer.

Money Talk

Mo’ Money Mo’ Problems is probably one of the biggest pieces of wisdom to come out of a rap song. Even thought not many people will come out and ask you, how much money you make, plenty will start the getting to know you process with what do you do for a living. I don’t think that there is anything wrong with that, the reality of relationships is that they all have some kind of basis in also economic principles. If I cannot afford to go to a luxurious vacation, or the trendiest night club where a bottle is over 100 bucks I am going to have to decline invitations. However, it is all personal choice and not a rule. I know people that have plenty of money but still prefer to go to the local watering whole.

Most employers have a do not talk about your salary policy. I completely agree with that notion and never want to find out what my coworkers make. It is bad every single way you look at it, if you make more they feel bad, if you make less you feel bad, if you make the same probably both of you are going to feel either more qualified or harder working than the other. I also saw how a company finding out the IT department’s salary wreck havoc on many relationships there.

My first job out of college I was lucky enough to have landed before I graduated. At graduation I had a job and an above average salary for a recent graduate. While this was not the best job I have ever had it did teach me a lot about what it is to be a professional. I learned many lessons that I apply even today, and even though at the end I felt like money wise I was getting the shaft, I still have to thank them for the opportunity and experience I gained in my years there. We supported a sister company with their system. It was a call center and many of the people that work there became friends with us over time. We would go there to set up something new on their computers or just to install new servers. I used to go there a lot because of some sales call where they needed technical people as well as doing some business analysis for new reports and features.

The president’s secretary was a chatty girl that always wanted to know more about you than what was really appropriate for a professional setting. I did not dislike her but I always had my guard up when I was around her. For corporate reasons the company decided to merge health plans, our company had 10 employees the call center about 100. The little snag came about when a report with our salaries came through the front desk before being handled by HR. The president’s secretary took it upon herself to disseminate our salaries to certain people and before the end of the day we were the talk of the call center.

Our next visit there was not pleasant. Some people had looks of resentment on their face, others were right out rude towards us. “You make too much money seemed to be the theme.” Nobody wanted to exchange pleasantries and we became relegated to only communicating to the people that were at “our level.” It was sad, but it was a reality I had to learn, some people cannot handle the thought of you having something they don’t. Envy is a powerful demon to have descend upon you… it can override even knowing a person for months, even years.

Since leaving that first job I worked on consulting and made almost triple what I made on that first job. I was never completely happy with consulting for a set firm because at times they put their needs before the client’s needs. I have enjoyed consulting independently a lot more, but what I truly love is working for a set company where I am part of the staff. I do not make nearly as much as I could have if I consulted but I am very happy… more money means a lot more pressure plus a lot more traveling and that gets old quickly.

One of the past companies I worked for I was making good money but not my best paid job. I tried not to think about what other people made, we had a pretty large department and I had made some personal relationships there. My boss ruined that when he informed me while giving me a review that I made a lot more money than the other people that worked there. It was a strategy to make me swallow a 3% raise when I was really expecting something around 6%. After the speech of insurance and other potential bonuses he dropped that nugget on me. It weighted heavily on me that I made more money than others. While the biggest reason for me making more money was because I had some very specialized certifications the company need to be supported, it did not feel fair. Some of the people working there had been loyal to that company for more than 5 years and now I knew what range they were on. One of my friends there told me he was interviewing and I was happy for him until it did not pan out because he was not going to make much more money and the move meant more drive time. He told me how much he was offered and even that was about 20K less than what I made… it made me feel pretty horrible because he was a very hard worker that was dedicated to doing a good job… maybe he did not have as wide range of skills than I have and some of the technologies he was working on were outdated, but overall I felt we should have been closer in range.

Many companies clean up their IT department as soon as they are getting too expensive. It is not an uncommon practice that almost fuels the job hopping IT professionals are sometimes famous for. You get new unexperienced people and pay them very little and let got of your seasoned people that are costing you too much. I am lucky that I don’t have to worry about these kind of problems anymore and that I have no clue what the other people at my company make. Ignorance is truly bliss when it comes to how much other people make.

The Dirty Truth Behind Software Development

One of the blogs that I enjoy reading the most is HitCoffee, partly because it is very well written by a fellow geek, but mostly because I can get several topics sparked by just one of the posts there. A recent post about the tango that developers, QA and project managers dance, made me think about what I have learned about software development during my career and I commented…

Every programmer that I have met thinks that they are awesome software designers, however I would venture to say that only about 10% are truly good at it.

Will replied…

Software developers have an amazing capacity for arrogance in general. They really seem to believe that everything would be better if they were running the company. I’ve met MBAs with more humility than a lot of programmers… and I’m thinking of some programmers around here that I really like!

I wrote my first line of code when I was about nine years old. Now it is probably pretty common that a kid that young will customize their myspace or even write a full html page, but back then it was not that common. I was lucky that I went to a school that had IBM clones that we were taught how to use. One of the surprising things about the U.S. education system to me was that even though they had the resources, the computer classes I took here were actually way behind from what I learned in Colombia at a high school level. I will some day write more about that disparity, but I just wanted to give myself some credibility here, when it comes to computers and writing code, I have been around it for quite some time.

We all think of doctors and lawyers as the ultimate arrogant professions, and while some of them probably are, a lot of people in the IT field have a god complex. I have met several programmers that like to use the term programming god. Some of them truly think of themselves as better than others simply because they can read computer code, or have memorized every single intricacy and function of a programming language.

I have no idea why I was spared that faith of becoming arrogant about programming. I do think I am above average when it comes to programming and I am also excellent at bug tracking and solving. That does not make me a better person, just someone that has patience and good logic. I however respect people in other professions inside and outside of my field.

The challenge that companies face is that communication breaks down as soon as their departments stop talking to one another. I was hired at one company because I could potentially bridge a broken relationship between marketing and development, and while I was able to facilitate the running of the projects I was involved in the relationship never seemed to get better. You had web developers trying to be designers and vice versa.

The good software architects that I have met were actually poor programmers. Big picture people tend to either forget about the details or the users. Teams of people seem to make this issue less painful, but all parties need to be truly involved and willing to comprimise.

I learned early in my career that the more I simplified the software I wrote, the more people like the features I implemented. Color coding things has always been something people respond to because it gives them another way to memorize things. I also try to apply a the little principle that computers are better at remembering things, but humans are still superior at make decisions. When I have to leave something up to the user I balance it on that scale.

Almost every programmer that has been in a company for a while thinks they understand the business side of things. However, the business side of any company is a living entity that constantly changes, the bigger the company the bigger the changes. Users are very clever and will use features in ways that they were not intended… do developers then adapt them to do the right thing or remove them?

That is when I think some of the disconnect happens. In situations like this it should be a consensus between the development team and the business that ultimately dictates the direction. Most of the times it is only one of the sides that dictates the direction and that leads in the best scenario to friction and in the worst it least to lost company productivity.

Software development is a lot of times like single life, you date different companies and try to do your best for a while but eventually you want to move on. You feel like you have so much to offer, but you are not appreciated, listened to and could do so much better. The good relations come when you have commitment and truly want to marry a company, truly start to think about what would be best for the company and not what is going to make you seem smart and clever. A programmer can be revered as a genius, but if the software they write is not usable or does not solve the problem it the end its a failure.


“Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so.”
Douglas Adams

“Experience is simply the name we give our mistakes.”
Oscar Wilde

I have posted about the topic of experience before. The catch 22 of employers need for experience, but reluctance to take the time to give someone the opportunity to acquire it, becomes more painful when the economy suffers and new graduates are trying to join the work force. I remember being extremely lucky when I graduated college in 1999; after Y2K it seemed like people had a hard time getting into the IT world because of people realizing that the world did not end… that and not long after the dot com bubble burst.

One of the lessons that I now call experience, is silence. I love knowledge and discussion, I read as much as I can and I love watching educational TV shows. I can probably comment on most topics, and when it comes to martial arts or computers you can hardly shut me up. I now know how annoying I must have been when I would have something to say about everything. I know that unless I have some deep knowledge of the subject, “I don’t know” is always a better answer.

Knowing enough to be dangerous is something I have found to be very true in my field. Practical knowledge cannot be replaced by knowing a book from cover to cover. The smartest programmers I have met seem to always forget the people that they are writing the software for. When you write software with yourself in mind, you become very frustrated when people do not do what you think they are supposed to do. Some of the worse cases I have seen get very upset with users for not using their software right. It seems these people don’t ever get past the sixteen year old mentality of “I am always right.”

Gathering experience is an expensive process for companies. Many people think that it is about just paying your dues when you enter a field, but it goes beyond that. Listening to your users, or just having them in mind when you code, is something you learn as you fail implementing a new feature. However some people might be in the field for years and never learn that simple lesson.

This is one of the lessons that I have seen most people refuse to learn or be told. Many programmers I have met dig their heels in the ground and refuse to make their application more user friendly. Some even go as far as considering their job done as soon they think something works and not waiting until the users have truly accepted things.

Do you have any examples of people not learning from experience, closing their eyes and refusing to learn?