Start Fresh or Expand and Modify?

This question is faced by programmers just about every time they are presented with code which they did not write, and have been asked to fix. Our ego tells us that we can do a much better job than the original programmer, that the entire code is a waste, and should be completely thrown out.

In a few cases, we’re actually right.

In most cases, management might wade into the discussion and veto the idea of starting over, claiming budgetary constraints, or perhaps an unwillingness to admit that the money spent on the original solution was a complete and total waste. The new programmer must therefore adopt the [horribly written] code and modify it, expand it, until it resembles scar tissue – one layer on top of another to fix things as they arise, rather than determine the original cause of the first problem and correct that.

We’re not alone.

In any type of project, there is often a desire to hold onto the current version of it in its entirety. Perhaps it does certain things well. Perhaps we spent a lot of time on it. Perhaps it was expensive.

The bottom line, however, is that the current version of the project doesn’t work. It does not accomplish what we need it to accomplish. It needs to be changed, updated, corrected. There will be a version 2, the only question that remains, however, is how closely it will be tied to version 1.

The decision that really needs to be made is whether by starting over (and using the lessons learned from Version 1) you will end up producing a better product. Sometimes the answer is yes, sometimes no. What was true the last time you made that decision might not be true this time.

As an example, take writing an article for a formal publication. After the first draft, you need to decide how to revise it. Sometimes you’ll just go back over the article and fix a sentence here, a word there, a paragraph over there. But other times you might realize that the entire draft is poorly structured, perhaps as a result of changes that occurred during the writing that left the article poorly structured. In that case, you might be better off writing a second article from scratch, loosely based on the first draft.

The decision needs to be made, and most people do make a decision. The problem, though, is that most people don’t realize that they are making a decision, since they always take the same action.

Don’t let that be you! Think about what you’re doing. Are you really saving anything by keeping hold of the first version? Are you really improving the product by starting over from scratch?

Tolerance for Error

Most areas of life have some tolerance for error in them. In work environments in particular, there is usually some tolerance for error, but often, it is dependent not on the person making the error, but on someone else. As such, the topic of this article is the tolerance for error on the part of other people.

There are a few reasons why an error should not be tolerated, but even in those cases where the reasons are valid, the level of response to an error is heavily dependent on the nature of the error.

For example, a mistake that costs a business the equivalent of 1% of its annual revenue is not of the same caliber as one which does not have any noticeable effect on the company’s bottom line. Likewise, making an error on a formal filing to the government resulting in late fees and time-consuming audits is much more severe than the same error made in a weekly report to a manager.

As such, the tolerance for the error is actually the same in both cases, but the level of reaction is not. In both cases, the error must be pointed out to the person who made it – otherwise, how will you ensure that there is not a recurrence?

However, the real question is what happens after that mention is made?

On the one hand, you can choose to let it go, and ensure that whatever steps are necessary to ensure a relapse does not occur are taken. For example, if the cause of the error was a lack of training, then ensure that the training happens. If the cause was “I forgot, but now that you mention it, I did know about X” then it is necessary to determine if anything needs to be done, and it would depend on the outcome of the error to answer that.

On the other hand, you can insist on treating each and every mistake like a crime against humanity. You can ignore the explanation for the error, and whether a lesson was learned from the mistake. You can act like the mistake was the root cause of the deaths of millions of people.

However, bear in mind that reactions like that have the following consequences:

  • People will never own up to a mistake under such rule, even when doing so could reduce the effect of the error
  • People will leave such an environment as soon as another opportunity presents itself
  • People will shift blame as much as possible and FAIL TO LEARN FROM THE MISTAKE other than the most simple lesson – DON’T GET CAUGHT

So, which will you be? Will you let people learn from their mistakes, with a tolerance level that promotes learning? Or will you push people and harp on all the errors, forcing them to leave an environment that punishes honest mistakes rather than educate?

A Preferencial NDA Clause

I recently had to look over several contracts, each which was for the same purpose, but all three were quite different. One was 2 pages, another 9, and the third 18. All three, however, contained the same basic elements – who the contract was between, what the purpose of the contract was, and several clauses outlining various limitations of the agreement.

In all three there was what I call the Non-Disclosure Clause. The purpose of this clause is to prevent someone from gaining information through the agreement and then using it for their own purposes. For example, a bakery might hire a baker, but doesn’t want their new hire to be able to use their recipes except while working for them.

Naturally, this clause does not have a fully standardized phrasing, since it is highly dependent on the nature of the agreement, and the type of information that might be expected to be exposed through the arrangement. As a result, I was not surprised to see that all three had completely different phrasing for this clause. (To bring this point out, the clause regarding Governing Law was almost identical in all three contracts.)

One of the three, however, I found to be much better written than the other two, and not from a legal perspective, but from the perspective of someone who might sign the document. The reason I liked it so much (although it was not the most open, or the most closed of the three versions) was because it was reciprocal.

In almost any relationship between two businesses or individuals, information will be shared in both directions. As such, while one party is “issuing” the contract to the other (remember that contracts are unilaterally binding when signed by both parties), many of the issues at hand apply to both parties.

As an example, take an employment contract. There is likely a phrase regarding non-disclosure, or confidential information, and it might be written stating that the employee cannot use any confidential information they acquire through working for the employer for any use other than the benefit of the employer. That’s fine, but the employee will also be giving the employer some information, for example, their Social Insurance Number or Social Security Number.

As an employee, you want to be sure that the employer will not hand out that information, and they will treat it with the same respect they expect of you when dealing with their information. What better way to ensure this than to have a reciprocal agreement when it comes to the handling of confidential information?

After seeing the clause phrased this way, not mentioning who is giving and who is receiving the information, but making the clause binding on the receiver of the information, I recommended that an adaptation of that clause be used. If both sides of the contract are willing to bind themselves by the same clause when it comes to confidential information, the level of trust between parties (not necessarily from a legal perspective though) is likely to increase.

As a note, I am not a lawyer, nor an expert in law by any definition of the word. This article is about my impressions of a particular clause – it is not intended to provide legal advice. If you have a question regarding a specific case, please refer to a lawyer who can provide advice relevant to your situation.

If You Have Time to Do It Twice

There’s a saying that I’m fond of quoting:

If you have time to do it twice, you had time to do it right the first time.

That is, any time spent correcting the work done the first time around could have been spent during the first iteration to do it correctly in the first place. Until recently, I couldn’t really think of an exception to this rule, though I was sure that an exception did exist.

Then I came across a scenario where perhaps this doesn’t hold true.

A project with a fixed time line might actually have enough time to do some work twice, but not correctly the first time. That is, because each stage of the project has a fixed time frame, it might not be possible to get everything done within its set window. As a result, components that don’t work properly are moved to the next stage, and are then corrected later on in the project.

This might be most familiar to people comfortable working in an Agile environment. At any iteration, the errors from previous iterations are resolved (doing some work a second time) and new pieces are added that could not have been worked on had the previous iteration not finished.

That is, dependencies might exist in the project which allow for errors to move forward and be fixed at a later time, for the simple reason that other people cannot wait for all the corrections to be made.

As an example, take the construction of a chair. In the first iteration, the carpenter might build the frame. There may be some flaws in the frame, but its size is correct. The upholsterer can now cut the fabric needed while the carpenter goes back and sands down the imperfections.

In a perfect world, the upholsterer would wait for the carpenter to finish before starting to cut. But in the real world, a customer might be waiting, and the delivery date might be fixed. As a result, the two workers do their jobs side-by-side, even though one depends on the other to complete their work properly. But at least they can start working once a tentative version is complete, even if it will end up being done twice.

What’s Your Mindset?

Every company has a mindset, and it often reflects the personality of the person leading the company. If the leader of the company is laid back and likes to operate his business that way, then the impression that filters down will be one of a laid-back attitude. If he’s a stickler for the rules, then that’s what will filter down.

Employees will see this attitude, and will likewise pass it on to the various people they meet throughout the day.

If the company is operating by the book, then a customer may be hard pressed to find someone who will bend some rules for them on occasion, even when justified. This may have a few side effects, giving the impression of a company that’s predictable, that can be worked with as long as you follow the rules, or as being a company that’s hard to deal with (because outside the business, it cannot be assumed that people know the rules).

On the other hand, a company that’s running casually will see each employee doing as they see fit, which can have the result for customers that they can get what they need easily, but removes predictability. If today an employee bends a rule, there’s no assurance that tomorrow the rule will be bent once again.

There are, like most things in life, pros and cons to each system.

Like most things in life, the optimal place to be is in the middle.

Rules need to be in place for the benefit of everyone. When in doubt, see what the rules say, and work with it. This should be available to anyone – the customer should know their rights, as the employees should know what it is they are supposed to do in a particular situation.

However, employees and customers also need the ability to ignore the rules when common sense (which isn’t so common) shows that the rule was not really meant for this particular scenario. When this happens, the people involved need to know that they will not be punished for violating the rules provided a reason for doing so is available.

So, build up those rules, but let people know that it’s also okay to sometimes look the other way when the situation would benefit from that.

Choosing Furniture for your Office

When I look around at a corporate office, I tend to see what has been described by one employee as puke gray cubicles, or, in more polite terms, neutral gray walls. The layouts vary, but that gray seems to be universal. While there’s nothing offensive about the color, it is not an inspiring color.

If you’re looking to set up an office, I would recommend that you look away from traditional sturdy, durable furniture, and instead look at furniture that is lighter, but also more welcoming. I speak, of course, of wood.

Choosing light-toned wood (for example, lightly stained pine) gives the office a more homely feeling. If you want a more professional look, try the darker stains (cherry as an example). By using these colors, people will see the warmth in the environment, rather than the drab gray of corporate America.

The second suggestion I would make is to allow your employees to choose their furniture, but with a caveat. An office should have a uniform appearance to some extent, so select a line of furniture, but then allow the employees to select the pieces that they would prefer. Some employees will want filing cabinets, others open shelving, others drawers. Should there be a hutch over the desk? Let the person who will be sitting at the desk decide.

Third, allow every employee to select their own chair. This one item can make an incredible difference over the many hours spent sitting on it. As such, it would be ideal to allow employees to pick their own.

What does this gain?

By having your employees involved in the creation of the work environment, they will be more comfortable there, it will increase their productivity, and it give them pride in the workplace.

Which would you rather? Force your employees to sit in a dreary environment, or have them happy to be sitting at their desk which they helped choose?

International Business is Special

I recently had occasion to work with a company that has international offices, and discovered that what I might have considered to be common sense was not being followed universally. As such, I decided to outline the particular issue that we encountered, and how it can easily be avoided.

In our case, the issue had to do with difference in tax law between Canada and the country in which this company had its headquarters. After a quick exchange of emails, this was cleared up, but what made me pay attention was the fact that the mistake had been made in the first place, and why.

Simply put, the accountant from head office was not an expert in Canadian tax law, and therefore assumed that the issue in question would be treated the same as in his country. This was an error, but the first mistake was in not using an accountant familiar with Canadian tax law in the first place.

In summary, when working across borders, a company needs to make sure that they are using appropriate experts in the rules governing the target company. This is necessary in order to ensure that not only are the rules being obeyed, but that the company is not going to be taken advantage of by someone more familiar with the laws.

As such, when getting involved in any level of negotiations across a border, even a friendly negotiation, try to find a local expert to help you. Whether this is an accountant, a lawyer, or some other professional, it can save you and your company a lot of regrets by following the rules from the onset.

As a second example of a negotiation gone wrong, examine the following case.

A company is looking to expand to North America. They create an U.S. corporation as a holding company, and decide that all North American business will be conducted via this corporation and all its subsidies. However, a majority shareholder in this corporation lives in Germany, which creates an issue of foreign interest. Complicating the matter is the fact that there is another corporation, this one Canadian, which is owned (60%) by the U.S. company.

When the company made an offer to a Canadian firm, they discovered that Canadian tax law treated the Canadian corporation as foreign-owned, subjecting it to certain rules. However, U.S. tax law considered it to be foreign-owned as well, since it was situated in Canada. As such, this corporation would have been taxed at incredibly high levels.

Fortunately, in that situation, there were ways to work with the laws of the two countries to bring about a viable solution. However, the fact that the question of tax law only came up during a negotiation indicates that the parent company had been ill-advised in terms of dealing with North American corporations.

The situation could have been avoided had they worked through an American or Canadian tax or law firm familiar with cross-border issues. Sadly, they had not done so.

So, if you’re thinking about doing business across a border, make sure you hire experts in your target country, not just your home country.

Professional Communications

I’ve been told, and like to believe, that my writing is of fairly high quality in general, even when unedited (as an example, most of the articles on this blog are completely unedited). I try, to the best of my abilities, to maintain a high standard of professionalism in my writing at all times, since I never know who might end up reading it. That’s not to say that there aren’t errors in my writing, but that they are generally of a grammatical nature, not with inappropriate content.

I’m not referring to use of certain crude words or phrases – while I try to keep such language out of my writing, I do understand that for some people, this is considered normal content. I don’t think such phrasing belongs in a professional communique, but that’s just my opinion.

However, there is never an excuse for including personal information in an email which is not relevant to the recipient. Yes, gossip does move around, and some people are more prone to involving themselves in such conversations. But to include that in an email, in a business environment, to someone to whom this information is completely irrelevant, is completely and totally inappropriate.

When I saw an email from a business owner in which there was not a single correctly formed sentence, I was shocked by the lack of professionalism in her writing. When I read the content, and found comments about a former employee, I was astounded that she was able to keep anyone working for her. Inclusions of phrases commonly heard, but rarely written (for example, I was like thinking) which are heard because people often start talking before they’ve thought out the conclusion of the sentence, indicated to me that I had no desire to continue written communications with her.

Are my rules fair? Was I too harsh on her for not spending an extra few minutes on that email to clean it up?

Perhaps I was harsh, but I do feel it was deserved. If someone wants me to spend a few minutes reading an email from them, the least they can do is remove the irrelevant content, ensure that the phrasing is professional, and that the email flows from beginning to end.

A professional email:

  • Gets to the point
  • Includes all relevant information
  • Does not contain any irrelevant information
  • Uses proper phrasing and sentence structure

The more of those points an email fails to meet, the less likely it is that communication will be continuing smoothly.

One last point.

With the availability of tools to check spelling, there is no longer any excuse for a spelling mistake. If there is a single bit of editing that you do on your writing, it should be to ensure that a spell check does not pick up a single mistake.