The Hippocratic oath that programmers should make

I swear to fulfil, to the best of my ability and judgement, this covenant:

I will respect the hard-won scientific gains of those programmers in whose steps I walk, and gladly share such knowledge as is mine with those who are to follow.

I will apply, for the benefit of the users, all measures that are required, avoiding those twin traps of time and cost.

I will remember that there is art to software as well as science, and that warmth, sympathy, and understanding may outweigh the programming toolsets or coding standards.

I will not be ashamed to say “I know not,” nor will I fail to call in my colleagues when the skills of another are needed for a project’s success.

I will respect the privacy of my users, for their problems are not disclosed to me that the world may know. Most especially must I tread with care in matters of life and death. If it is given me to save a life, all thanks. But it may also be within my power to take a life; this awesome responsibility must be faced with great humbleness and awareness of my own frailty. Above all, I must not play at God.


Project Management is difficult – like running a ship

Under what circumstances, if any, can adding team members to a software development project that is running late result in a reduction in the actual ship date with a level of quality equal to that if the existing team were allow to work until completion?

There are a number of things that I think are necessary, but not sufficient, for this to occur (in no particular order):

  • The proposed individuals to be added to the project must have:
    • At least a reasonable understanding of the problem domain of the project
    • Be proficient in the language of the project and the specific technologies that they would use for the tasks they would be given
    • Their proficiency must /not/ be much less or much greater than the weakest or strongest existing member respectively. Weak members will drain your existing staff with tertiary problems while a new person who is too strong will disrupt the team with how everything they have done and are doing is wrong.
    • Have good communication skills
    • Be highly motivated (e.g. be able to work independently without prodding)
  • The existing team members must have:
    • Excellent communication skills
    • Excellent time management skills
  • The project lead/management must have:
    • Good prioritization and resource allocation abilities
    • A high level of respect from the existing team members
    • Excellent communication skills
  • The project must have:
    • A good, completed, and documented software design specification
    • Good documentation of things already implemented
    • A modular design to allow clear chunks of responsibility to be carved out
    • Sufficient automated processes for quality assurance for the required defect level These might include such things as: unit tests, regression tests, automated build deployments, etc.)
    • A bug/feature tracking system that is currently in-place and in-use by the team (e.g. trac, SourceForge, FogBugz, etc).

One of the first things that should be discussed is whether the ship date can be slipped, whether features can be cut, and if some combinations of the two will allow you to satisfy release with your existing staff. Many times its a couple features that are really hogging the resources of the team that won’t deliver value equal to the investment. So give your project’s priorities a serious review before anything else.

If the outcome of the above paragraph isn’t sufficient, then visit the list above. If you caught the schedule slip early, the addition of the right team members at the right time may save the release. Unfortunately, the closer you get to your expected ship date, the more things can go wrong with adding people. At one point, you’ll cross the “point of no return” where no amount of change (other than shipping the current development branch) can save your release.

I could go on and on but I think I hit the major points. Outside of the project and in terms of your career, the company’s future success, etc. one of the things that you should definitely do is figure out why you were late, if anything could have been done alert you earlier, and what measures you need to take to prevent it in the future. A late project usually occurs because you were either:

  • Were late before you started (more stuff than time) and/or
  • slipped 1hr, 1day at time.

Hope that helps!

Continue reading “Project Management is difficult – like running a ship”

Good Companies Grow No Matter What

Every business demands growth, and double-digit growth is the dream of every dedicated business owner, even when lackluster results show up at quarter’s end.

Most entrepreneurial business owners need a guide to navigate their way toward substantial, sustainable growth.  It can be done even in a slow economy as demonstrated by such companies as Harley Davidson, Starbucks, and WalMart.  Even smaller companies such as Paychex and Oshkosh Truck have been able to make gains in revenue, gross profits and net profits.

Here are 5 disciplines of sustained growth:

Continue reading “Good Companies Grow No Matter What”

Become Your Own Personal CFO

Budgets and personal finances are not most people’s favorite topics, and certainly not one of mine.  Even bank executives have problems in this area, but if you’re an entrepreneur so do you.  You’re concentrating so much time on your business, your personal checkbook takes a back seat.  Then one day you are met with the startling fact that you’re not saving enough for lean times and you panic. Continue reading “Become Your Own Personal CFO”

How to use Telnet

Most of you only know that TelNet is a Port ( Port 23 ) or that TelNet is a Remote Control Tool. Remote Control means in this aspect that you as Client can get a Connection to for example a TelNet Server and then you can write Commands in a derivative of a Shell and this commands are executed only on this server not on your machine. But I want to show all you guys how to use this simple Remote Control Tool in several ways, because this simpleness is brilliant.  Continue reading “How to use Telnet”

Hacking Servers: A beginner’s guide

This information is to be used for informational purposes only.

I am asked at least 5 or more times a day by young, beginning “hackers”, “How can I hack?” or “Is there a way to hack a web site?” Well there is. There are, in fact, literally hundreds of ways to do this. I will discuss a few in this text to get you started. Every hacker has to start somehow and hacking web servers and ftp servers is one of the easiest ways.

If you are reading this I am assuming that you already have a basic knowledge of how web servers work and how to use some form of UNIX. But I am going to explain that stuff anyway for those of you who don’t know. Continue reading “Hacking Servers: A beginner’s guide”