Archive for July, 2007

The Top Three Priorities for Software Development

July 31, 2007

Across industries, across platforms, across technologies, and across users there are three fundamental priorities that should always take the number one, two, and three positions in any software development effort. The three priorities being security, reliability, and maintainability.

These three notions are at the top of my list with every project I begin. They are the montra that I repeat to my teams and to myself all the time. Over many years developing small and large software packages for many industries and many user bases no project can be successful without first meeting these three criterion. And I’ve seen many projects fail for shifting other priorities into this top tier.

There are always business driven goals to take into account while developing software such as speed to market, usability, scalability, portability, globalization, etc. But the security, reliability, and interoperability of applications must be addressed before any other requirements can be met.

What do the priorities mean?

Security is the gurantee that the application will first do no harm. This is number one in any software package. Security of data, of systems, of unauthorized access are the most important baseline needs of any software application. Ensuring that even if the application sucks, crashes, is difficult to use that at least it will not compromize internal or external data and systems is paramount.

Reliability is the number two priority when developing a software product. The product must be available all the time, without lockups or crashes, unexpected behaviors, and down time. An application may be difficult to use, it may lack features, but if its dependable and predictable then users and businesses can depend on what they have got. Maintainability is a priority that you may wonder why it makes an appearance so high on the list. Maintainability means something very specific to me. It means that software is being built by creating blocks that are assembled and not goliath systems. By following good OOP, SOA, and componentized development it ensures that the developed software is flexible to keep up with the always chaning landscape of technology and customer requirements. Componentization is the foundation of nearly all other requirements such as scalability, portability, globalization, etc. Productized components is a way to achieve this.

By keeping these concepts in mind to design, build, and test a secure and reliable componentized foundation I gurantee you’ll see more success in your software development efforts ongoing.


Big Bad Boss: Advice for Bosses, Managers, and Employees

July 30, 2007

What follows is a list of actions and behaviors that bosses exhibit, good ad bad. If you’re a boss, use these lists as a general guide to help you do better and extract more productivity from your employees. If you’re an employee, make sure your boss is performing so you can be successful. If you’re neither, remember these things for when you become an employee or manager.

Do Your Job Comic

DON’T ….

  • Don’t give your employees opportunities but at the same time set them up to fail.
    • This usually happens when you have an employee you can count on, that is doing a great job, and who you want to delegate more responsibility to. When you delegate, in any situation, make sure your employee has expectations set, tools to do the job, and appropriate compensation for going above and beyond. If you give more responsibility you have to give more resources and power.
  • Don’t’ reward bad behavior or poor performance, even by inaction.
    • Be careful not to reward bad employees and poor performance. It demotivates good employees. Even worse is awarding poor performance by inaction. When you treat good and poor employees the same it is rewarding your poor employees and punishing your good ones. It’s not fair, demotivating, and setups up a poor work culture.
  • Don’t punish good performance, even by inaction.
    • Do not punish good employees. This can be done by inaction, by lack of appreciation and compensation, or by piling on the work because “you know she’ll pull through.” Even worse is punishing a good employee. Be careful with good employees, they all should not be treated the same; they’re not your kids.
  • Don’t show too little appreciation.
    • The most demotivating thing for your good employees is a lack of appreciation. Be sure to say thank you, to give them extra privileges, extra gifts, and extra compensation. Even kind words and a “good job” go a long way.
  • Don’t forget things you’ve said or promised.
    • You’re the boss, you’re the entire world to your employees. If you’ve said something or have promised something don’t forget it. Write things down, take notes, send yourself emails, write on your hand. Do whatever it takes to not forget things you’ve said; your word is the law and it sets up the work environment. If you don’t remember what you’ve said you’re creating an ambiguous work environment that your employees cannot navigate and will get frustrated and demotivated by.
  • Don’t give your employees impossible tasks.
    • Don’t ask your employees to do things that are impossible. This includes tasks that they do not have resources for, tasks that there are not enough time for, or by over-burdening them with labor. Setting up your employees to fail creates a very negative work environment.
  • Don’t be a stranger.
    • Don’t be a stranger to your employees. Don’t be an absentee manager, you have to know what’s going on in your domain. If you’re not there it’s impossible for you to know what’s going on. If you’re not there, employees can’t turn to you to help remove barriers.

Dream Manager Job Cartoon

DO …

  • Do expect your employees to do their jobs.
    • You made an agreement when your employees were hired. Expect them to fulfill their duties, they are getting compensated for it. If your employees are not fulfilling their obligations they need to step up or you need to have them step out.
  • Do create a culture of success.
    • All the time you need to tell your employees what the goal is and strive for it. Let them know the big goal; to sell a million units, to make a million dollars, to be number one in the market. But set small goals too; how many good ideas can they come up with today, how many happy customers can they support, can they get the next component done by the end of the week, can group A get their project done with less bugs than group B.
  • Do measure successes and failures. 
    • Performance is important, knowing who is performing and who is not, knowing which areas of the business to focus on, knowing if you’re meeting goals. Make sure to put in some measures of performance, it gives you an objective view of the situation and makes it easier to talk to your employees, especially if you have to reprimand them.
  • Do treat your good employees better than your bad employees.
    • Your good employees are an invaluable asset that you have to take care of and keep. Your poor employees are a menace to your group or organization and need to be mitigated or removed. You should treat your good employees well, they are setting an example for your organization. Don’t play arbitrary favorites though, reward good behavior based on measurements and results and make it obvious why the rewards are being given.
  • Do learn about your employees goals and desires.
    • You should genuinely value your employees. Learn about their goals and desires and try to help them come to fruition. It’s a reward that breeds loyalty and trust. It shows you see them as more than just cogs in a wheel. Motivate your employees by helping them reach their personal goals.
  • Do things as a group to promote team bonding.
    • Your group is likely made up of many people that work together in a continuous process or system. It’s important that the group meshes. Find ways to bond your group, it creates team loyalty and efficiency. It’s a motivator working with people you enjoy being around. Do lunches, group projects, and non-work interaction.
  • Do be open to your employees.
    • Your employees need to know whats going on in the company and in the group. Don’t sugar coat or hide too much. Inevitably bad news comes out and by hiding or being afraid to share bad information you will build a culture of mistrust. Make sure your employees know what’s going on in the organization. You must respect their ability to make decisions and deal with situations. Hiding information is mistrustful and manipulative.
  • Do remove bad apples as soon as possible.
    • The worst thing for a team is a bad employee. You’ve heard a chain is only as strong as its weakest link. Make sure to root out bad employees before they are able to disrupt your organizations processes, culture, and people. It’s hard to build a great team, but very easy to tear it down.
  • Do implement some level of structured reporting, even if it’s minimal.
    • You need to know what’s going on. Your employees also want the opportunity to tell you what they’ve accomplished, even if it’s small. While structured reporting can go overboard, make sure you have some level of regular reporting implemented from the beginning and you stay on top of it. Daily or weekly emails are just fine. It also gives your employees an opportunity to contact you in a non-threatening way and allows you to keep up to date on the details of what’s happening. But don’t micro-manage.

Good luck out there… the work environment is a tough one to manage.


I’m on Pownce, You Can Be Too!

As a part of my recent immersion into this recent phenomenon called Web 2.0 I’ve been joining lots of social services. The latest one is Pownce. I’m experimenting and discovering, but I come from an age and personality type that finds little value in these services. I’m very much a face to face, direct contact type person.

But, I’m giving it an honest try. If you visit my contact page you can get links to all the social networks I’m on. Please, be my friend!

Look me up on Pownce. Add me, I’d love to connect with some people on this service. It seems that this service, more than any other, requires you to have friends. I have some invitations if you want to join up. Leave me a comment.


Overcoming the Feedburner Switching Barrier

July 29, 2007

Feedburner is a great service for optimizing and tracking your feeds. I use it myself on this blog. Feedburner has the ultimate switching barrier, all of your users are subscribed to their feedburner.com address. Locking you into their service in order to keep your subscribers from switching all of their reader applications.

Why would you ever need to switch? Well, Dave Winer recently wrote an article about his problem with the recent Google acquisition of Feedburner. There are also concerns about Google privacy, another potential reason to switch to a competitor. Or, maybe a better service comes along.

So, what to do? Well, fortunately Feedburner provides a way to bypass their switching barrier, but you need to make sure to use it before you build a subscriber base. The feature is called MyBrand. It’s free and it allows you to point your own sub domain to the feedburner service. Be sure to use it. Happy blogging.


Fun Techie Comics

July 28, 2007

Here’s a collection of comics I’ve collected over the past few weeks that you might enjoy. A lighter post to go along with the heavy business and tech. Let me balance out the dire mood of the recent post Google is Evil, Part 1 on Privacy.

The New Age Bully. Information is Power.

Hacker Bully

Is nothing sacred. I love Christmas!

Outsourced Santa

Developer power, keep things secret.

Error, the programmer quit!

Linux stands no chance. The Windows blue is perfect.

Make Linux Like Windows

Penguins are communist.

Penguin Logic

A great one. So many perspectives.

Requirements and Projects

Watch your head when you build top down.

Build from the top down

With a 500W power supply, my power cord is getting a little warm too.

Computer Problem