Saturday, August 18, 2012

Developer Types - An Introduction


There are many types of software developers, and if you spend enough time in the industry you will meet them all. There have been posts in many blogs about different software developer and/or programmer types, and most lists have some similarities. However, personal experience affects your view of the stereotypes. I will spend the next several posts discussing the stereotypes that I have seen.

The developer types as I see them are:

  • The Cowboy Coder – the amazing lone wolf
  • The Young Buck – wants to write his own operating system
  • The Work horse – reliable and steady wins the race
  • The Code Monkey – needs specific instructions
  • The Developer – winner of the all-around
  • The Layover Coder – just a step on the path
  • The Good Enough Coder – “Just the task, ma'am”
  • The Over Optimizer – nothing is good enough... ever
  • The Original Coder – older and often nostalgic
  • The “On A Tangent” Coder – easily distracted and often off topic
  • The Adamant Caveman – unwilling to change and happy with the way things have always been.

As most developers, I have some traits of each of these types, and have occasionally been firmly seated in one type or another. In the immortal words of Dr. House, M.D., “It is a stereotype for a reason.”

Wednesday, August 8, 2012

Strategy v Tactics


Strategy v. Tactics


In the military, tactics is all about winning the battle. It is about what is happening locally and “right now”. It is about completing the mission; about squad deployments; and about the survival of the team. Envision the “LT” crouched quietly behind a tree, making hand signals and deploying his troops to out maneuver the enemy that has been spotted farther down the trail.

Strategy, on the other hand, is about winning the war. It is about battle plans, large scale troop deployment and survival of the cause. Envision the smokey WWII war room with communications equipment around the perimeter and a giant map in the middle. The generals stand over the map, contemplating the whole war, moving the little figures of men, tanks, planes and ships around with the croupier stick*. Battles are won and lost, but under the proper strategic guidance, more battles are won than lost and ultimately that leads to winning the war.

Military success takes great leaders in both the tactical roles (battlefield commanders, non-commissioned officers, etc.) and the strategic roles (Generals, Admirals, etc.). Battles cannot be won without the former, and successful battles have little meaning without a coordinated vision, led by the latter.

In the corporate world, tactics and strategy are also very important. IT tactics are lead by the managers and team leads. They set short to mid-term goals, usually in the form of task assignment, project management and team management. The tactical leaders are responsible for the design and coding standards that make projects successful and keep the day to day operations running smoothly. They also set team processes and procedures that ensure long term tactical success and support the strategic vision.

IT strategy is lead by the executive management team, which is responsible for long term goals and “the big picture”. They set enterprise processes and procedures that help make the teams successful and keep the department running smoothly; as well as setting enterprise architectural standards that help set the framework for continued success. The strategic leaders make sure that the tactical battles have purpose and serve a common vision.

As with military success, business success takes great leaders in both strategic and tactical roles. Instead of Generals and Admirals, the business has CIOs and Vps; and instead of battlefield commanders and non-commissioned officers, the business has managers and team leads. While lives are not hanging in the balance with each business decision made, success hinges on the skills and coordinated efforts of the strategic and tactical leaders.


* I only know it is called this because my brilliant wife Googled it!

Saturday, July 28, 2012

True Geekwards Reboot - Everything Else is Rebooting, Why Not This Too?


"I have been thinking for quite a while about starting a blog, and the time has come.

The purpose of my blog..."


Almost a year ago (8/13/11), this was how I started. I managed to get 6 posts out in a little over a month. I underestimated the time and effort that would be required to create this blog, especially since I committed to posting complete, pertinent, well thought out material. Despite the extra time and effort I had to put in, I was enjoying the activity and happy with the product.


THEN LIFE HAPPENED.


The team experienced more turn-over than we have had to deal with for quite a while. My Business Analyst (and "right hand man") resigned to pursue an opportunity with another company. One of my developers resigned to go to Space X (it is hard to fight something like that). We gained a couple of people, we lost a couple of people including my manager and most of our "development support" staff. Mostly normal turn-over kind of things, but stressful, nonetheless. Overall, I think the team has weathered it well, and learned from the experience.


We also suffered through: some production system challenges that meant long hours and tons of pressure from the business; reworking of some of our process and procedures to accommodate tactical and strategic IT plans; and a workload that is hard on a small staff with limited resources. 


Despite these stresses and challenges (or possibly because of them), some good things happened for my personal career. When my manager resigned, and I was promoted. This meant that for a time I was responsible for all my team lead duties, all my supervisor duties, AND all of his duties. It was a new challenge and I worked through it, finding a way to make it all work and adjusting my work load and work flow to accommodate. Going from "doing" to "delegating" is a very hard thing for people like me. It was not easy on me, my team or my family. But, as I often say, "If it was easy, ANYONE could do it!"


I am always my worst critic, and the things I could have done better often stand out more in my memory than the things that I did right. I must have done more right than wrong though, because 6 months later I was promoted to Director of Application Services. I have no doubt that a significant factor in my recent elevations has been "being in the right place at the right time", but as I become more comfortable in my skin as a member of management, I can tell that my skill and ability is increasing. And my focus remains on further improvement and stretching to meet and exceed expectations; expectations laid upon me by the company, as well as those laid upon me by myself. I am also currently working on my PMP, and have been offered a spot on the Computer Science & Industrial Technology Advisory Board for Southeastern Louisiana University.


So.... with all these things happening, the blog did not. I thought about it often, more in the last few weeks than ever, but just never actually sat down and worked on it. I have decided to re-commit to writing, and so my first new post is a reboot, a "what happened to the blog" post as well,  as an update to my first post.


From post #1 (with updates in italics):
Why am I qualified to give advice and opinions on these topics? I am not entirely sure that I am. I have been developing software since 1979. I started with a TRS-80 and "trash basic" in the 3rd grade. I tried it out in a class and my life changed. I have had a passion for computers, technology and software since. I have learned untold number of languages over the years, and equally as many patterns and techniques. I have been in the professional world since the early 90's, and have worked for companies that range from LARGE banks to a consulting company with five employees including two and a half developers (one was part time). I currently work for a mid-size, national auto insurance company. My responsibilities have ranged from humble beginnings as a help-desk tech through a few ups and downs to my current position as the manager of a six man development team where Director of Application Services. I am responsible for a development team that is currently under-staffed at 4 developers, but will have 7+ developers when fully staffed, as well as development support staff of QAs and BAs. I act as the architect, project manager, and design and development supervisor, IT project governance and strategic advisor, IT recruiter, coordinator of efforts between multiple development teams, lead business analyst, lead quality assurance analyst, and many other things.



I am always open to constructive criticism, and am willing to consider points of view other than my own. I have learned that good honest debate is sometimes the best way to learn something new.

And so it begins (again)...