Archive for November, 2007

I fell into consulting totally by accident, and I don’t think this is unusual. You happen to have some specialized knowledge or an area of expertise. Someone learns of this and asks for your help. Voila! You’re now a consultant. Now what? If you are serious about doing consulting, regardless if it’s on a full time or part time bases, the first thing I would consider doing if forming a legal entity (i.e. a company). I can hear it now…Woah! Dude you’re crazy! I don’t have thousands of dollars to spend to create a company! What’s the point of that?

Professional Image
Companies are much more likely to want to deal with “Embedded Enterprise” than with Joe Consultant. Yes, it’s superficial, but sometimes superficial works in your favor. Joe might be paid $40-$50/hour, he’s a hired-gun after all. Embedded Enterprise would clearly no consider those rates. All the corporate overhead…

Legal Liability
Let’s face it, we live in a litigious society. Business relations sometime sour. You might get sued. If you are not incorporated, you are on the hook for defending yourself which might put a mighty crimp on your financial resources. If a legal entity is sued and it runs out of funds, well…it can always declare bankruptcy. At worst, you loose your investment in the business. Beats loosing your house.

It’s Cheap!
It cost me less than $500 to create a Limited Liability Corporation (LLC). Your mileage may vary, but in my book, that’s cheap insurance against trouble. Note that with a sole owner LLC, the company’s income or loss is reported directly on your taxes. There really is not a huge accounting burden. Follow a few simple rules (and use simple accounting software) and the burden is minimal.

Name Protection
If you incorporate, then the corporation name is registered with the state. No one else can use it (in the state). I wouldn’t go calling myself Wal-Mart Engineering (that’s begging for trouble…)

Less trouble with the bureaucracy…
A few years back, we used a consultant to perform some work. They were located remotely, but they had a computer that was provided by the company. Some state agency was leaning towards declaring this consultant an “employee” (there was also some requirement about how much supervision an employee received vs. a consultant…bureaucracy at it’s finest) which means that we would have been liable for taxes, etc… We were able to present the case that they were a consultant, but this left an impression on me. If you are incorporated, there is NO doubt that you can’t be an employee, no matter how much supervision you receive.

Those are just some of the reasons I can think of to incorporate.
Beside, doesn’t CEO sound better than engineer?

P.S. I’m not a lawyer (although I do know some) so go consult your own before you take my advice. I know a thing or two about programming and embedded systems, nothing about the law.

Microsoft’s Visual Basic spawned an interesting phenomenon. It has made programming accessible to the masses and possible to create decent looking applications fairly easily. But it enabled “The manager masquerading as a programmer”. For the first time in history, managers obtained the power to use computers and create applications to fill some particular need they have. No longer were they beholden to the IT/programmers. They can now scratch their itch (to quote Eric Raymond). Unfortunately, I have seen this phenomenon cause problems. In this case, there is some truth to mother’s admonition to not scratch the itch, it will make it worse.

The manager has a good idea for a new product and being VB savvy, proceeds to develop the product. It becomes a viable piece of software and is moderately successful. However, little thought has originally been put into the structure of the application. This code now must be maintained and extended. In small shops, the manager (in addition to managing) now assumes both the product management role and the development role. Being human, this can lead to a myopic view of the product, with no back and forth between development & product management. This tend to lead to piecemeal features, now much forethought to product growth or architectural considerations. It also distracts the manager and prevents him from excelling in the managerial role.

Another problem can occur when the manager has a need for software to meet some internal business requirements, tracking employee time for example. Being diligent, he looks around at available commercial software, but nothing out there meets his exact needs. Being empowered by VB, he decides to roll his own software. This results in a product filled with quirks and unfinished features. It again distracts the managers from his real job.

In my experience, this seems to be more prevalent in small companies, where the manager’s job is often loosely defined and where a “time is less expensive than money” attitude sometimes prevail. It also tend to afflict managers that come from a more technical background.

Is this something you have run into or do I simply have a very skewed sample set?

I don’t care if you are the most brilliant programmer, able to write tight code, crafting algorithms as aesthetically pleasing as they are fast. If you are not using a source control system, you are nothing but a dilettante, an amateur, or if you are truly exceptional, an idiot savant.
I don’t understand it. The first tool you should install is a source control system; before the IDE, before the compiler. In this day and age of free SCM systems (subversion being the most popular) why is it that there are still companies that are not using source control?
I am not talking about a wholesale document management system. It’s not like we’re saving all the various versions of your frame maker customer documentation. No, I’m simply interested in your engineering department, your programmers, working on lowly source code.
I’m not advocating the use of such advanced features as tagging and branching! Heaven forbid we ask your designers to experiment with the mental gymnastics that are feature branches. I would be ecstatic if companies used a simple linear development main branch. It would make life so much easier.
The objection I often hear usually revolves along the lines of “We will have problems when the same file is modified by multiple designers!” EXCUSE ME?! What happens now if you don’t use source control? Might you not simply overwrite someone’s changes? Well, that’s so much better than getting a pesky conflict and having to deal with a merge.
Another good one revolves around remote development. “We have remote developers, but we don’t/can’t/aren’t allowed to have a VPN to give them access to our servers. We can use a SCM system”. Run don’t walk to Rob’s post on source control for micro-ISVs. I too use DreamHost for hosting, and they provide you with the ability to create hosted subversion repositories. It works darn good too!
Ultimately, those are all red herrings. I believe this is at best, simple inertia. Nobody wanting to take charge of the process. At worst, it’s outright laziness. Let’s face it, the change in workflow is minimal. Do an update in the morning to pick up any changes, and simply commit from time to time. Not that hard.
Why is it that so called developers/engineers/programmers still are not using source control systems? Have you ever been successful in showing them the error of their way?

Ok, I have been chastised: calling out for more embedded blogs, and then dropping out. I’ll spare you the excuses (especially since Scott Hanselmann can keep blogging despite a) starting a new job at microsoft, b) building a new house and moving in, c) becoming a new father and d) organizing a new home office).

The one change I have made to the blog that might impact readers is that you now need to register to post a comment. I do realize it essentially means that no one will comment, but the spam was just becoming insane. Funny since the blog has been inactive for a while…

There will be more posts geared towards “small shops” development, as this is an area of recent experience. There might also be a few posts related to embedded operating systems.
What can I say, it’s the space I operate in now :-)