I been giving this question a lot of thought: “What makes an entrepreneur different from an employee?” In my not so humble opinion it’s only two things, money and cast iron balls. The entrepreneur has some amount of each, in fact everyone has some amount of each. It seems these things are multiplicative, you can be successful if you have a lot of money, or if you have a lot of balls. It’s good to have a lot of both. I believe there is a threshold above which entrepreneurs operate. Employees simply don’t have the required combination of balls and money. It’s a simple equation.
(Balls)*(Money) >= Threshold

On a related tangent, I believe that this threshold can change, and that people can change. Someone who might start out an employee can become an entrepreneur later in life, or even do so concurrently in different parts of their lives (hence all the microISVs out there).

With this formula in mind, the implication is that anyone can be an entrepreneur, even the very poor, as long as they are willing to take risks. Also, it implies that you can grow your risk tolerance, possibly through taking more and more risk as you get bigger and bigger opportunities. It seems the people who would be best at attacking this problem through sheer balls would be the people who have the least amount to lose, or basically people who have just graduated from college and have yet take on large fiscal responsibilities, as suggested by Paul Graham.

Long story short, Nike was right, Just Do It.

Advertisements

How to Develop Code Faster

February 28, 2007

First, we’re not really looking to develop “code” faster.  What we really want is to develop a “product” faster.  There is a big difference.  Largely that difference is that someone will buy a product, and they won’t necessarily buy code.  My goal is to maximize the amount of money I make compared to the effort it takes to produce it.  We’re looking for a local maximum in the relationship between the earnings curve and the effort curve.  Here’s the List so far:

  1. Get rid of Not Invented Here syndrome.  This is important.  Other people are out there writing code; some of them are even good at it.  They, too, are trying to sell a product.  If you have a common task, there is some code out there that will help you complete that task.  Basically, if you are building someone a CRUD app, then there is some code out there to help you.  Most people think it’s easier to write things from scratch than to use someone else’s code.  Please believe me when I say that you are flat out wrong for anything more than a trivial case.  Purchased applications have already been tested.  They have phantom unit tests (hopefully!) of which you are not aware.  Also, the code is being sold at a fraction of the cost that it takes to produce, because they are selling more copies they can afford to lower the price per unit when compared to the production costs.  It takes less time and resources to learn some 3rd party control than it does to implement that control yourself.  Yes, the control costs $450 or whatever, but you can pass that cost onto the customer, and they’ll be glad you do because you didn’t spend hundreds (thousands?) of hours implementing something that you could have bought for $450 and had working in your application in 2 hours.
  2. Learn the customer’s business.  This helps in two powerful ways. First, if you know their business you can speak to them in terms that they’ll understand.  They can speak to you in their own terms.  The removal of that communication barrier is a fantastic improvement to productivity.  You know what they want, even if they haven’t said it.  Second, in knowing their business, you know what they don’t need.  We think we are programmers, but we really should be sculptors.  Sculptors remove from a project until the project is perfect.  So too should we.  You can save yourself a lot of work, the customer a lot of money and both of you a lot of time by simply removing that which is not necessary.  This is the fastest way to get a particular feature completed, simply don’t do it.  Bam!  That’s off the list of things to do now.  Knowing the business is key to being able to make those judgment calls.  Stop doing unnecessary work.
  3. Code to a product.  Make your project meet the minimum standard that will fulfill the job that it will be used for. Coding to a product gives you a goal.  Goal galvanize great programmers to finish.  Measure your progress.  Do this only for yourself, doing it for anyone else is a waste of time because it is then subject to “gaming.”  The measurement can only be honest if you are doing it as a self imposed measure.  Pick a metric that gets you coding to a product.
  4. Rest.  Sleep.  Vacation.  Take two months off once you have put out that product that took 8 months to create.  Exercise.  Make sure you are taking care of your body.

That’s all I have folks.  The more I think about it, the more I realize that the best way to get something done isn’t in a framework or a programming language or an operating system (though these things help), it’s a social exercise between you and your customer.  This is why dog-fooding your own product works, because you are then your own customer.

Mired

February 24, 2007

No AJAX for me today; it’s back to working on my big contract for this month. This is the second half of a $14,600 contract to build an internally used application for a nationwide company. Technically, I am working for a company that is working for a nationwide company, but all the same, my software will be running in 1,400 locations across the country. I got paid half up front, and I get paid the 2nd half when I finsih, which has to be shortly because their is a presentation next week to the owners of the “beta” software. We’ll call that release candidate 1.

I cannot understate how useful findng code on the internet is. I think that finding, and in some cases buying, code on the internet has made me significant money with minimal effort. I know everybody has the “Not Invented Here” syndrome, but I am here to tell you that it is costing you money. You cannot possibly replace the functionality of a product that is for sale in the time you have to do the project. Hence, in the spirit of Greenspun’sTenth Rule:

“any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.”

I present Shuad’s Greenspun Rule Ripoff:

“any sufficiently complicated contractual program contains an ad hoc informally-specified bug-ridden slow implementation of functionality that could have been purchased, learned and implemented at 1/20 the price.”

Think about that next time you dive into implemented a control that you know already exists (you checked if something like what you need exists, didn’t you?) and you could buy for $150, but charge your customer the amount that it would have cost them had you written crap version yourself. You get an easier path to a good program and make more money in less time. The customer doesn’t have to deal with your buggy, slimly tested crap implementation. GI Joe taught me, “knowing is half the battle.”

I am tired of Windows Apps

February 24, 2007

Yes, I have a lot of experience doing them. Yes, I have an entire “Rails-like” framework internally developed for doing them. Yes, they are very responsive from a UI standpoint. Yes, I never liked web applications either. Then, I went to install a small program I wrote on the LAN of one of my customers. Everything works fine on the server, and everything works fine on my LAN, but everything did not work fine on theirs. It’s something to do with security. Fast forward 3 hours. I still haven’t gotten it to work on their LAN and my customer is standing around wondering why this is taking so long, and it’s time for them to close. Now I have to find out what sort of security issue is causing it (is it .NET, SQL Server, a firewall, antivirus software?).

This is holding up getting me paid. I don’t like to wait for my money. Yeah, in this case it is only $600 (total job was $1,500, got 50% up front, and then gave him a 20% discount on the 2nd payment because of all the issues and it taking longer than originally planned, and yeah it really didn’t help when the security got in my way).

So, officially, I am becoming a web programmer. Yes, I am still going to serve my existing customers with their Windows based apps, but I am moving away from it for new development. I am in the market for a new platform. I checked out Flex from Adobe, which looks pretty good. I am also looking into Rails, Django and TurboGears and myriad of AJAX frameworks. More and more, I am finding that if I let someone else do the programming, I make more money. Frameworks are good, because they are existing tested code. Open source frameworks are even better because you can fix bugs in their code should you need to. I am finally waking up to the internet revolution.

I’ll report back on my findings with these various frameworks and technologies. First up is Flex. Wish me luck.

An Opportunity

February 22, 2007

 

I just read on news.ycombinator.com that Google has launched a yearly subscription product that integrates all of their offerings, including: gmail, gtalk, their document and spreadsheets, search and others. Here’s a link:

http://www.techcrunch.com/2007/02/21/google-launches-apps-premier/

I noticed at the bottom of the comparison list for the free and paid version of this service that it said something about 3rd party apps. Is this an opportunity? I checked and only about 8 companies are currently in that group. They offer a range of services that build on top of the Google offereings or in some way customize it. Long story short, Google is offering all of us microISVs a platform on top of which to build interesting products. An untouched platform, and they’ll give us technical support too. I can’t shake the feeling that this is a big opportunity for some smaller companies.

There is a drawback; the cost to get in is $10,000 per year. That’s what it costs to be a Google partner. Can we weather that cost? Do they realize that the people who can most easily make an impact on their fledgling platform are one man programmer shops that are looking to make a name for themselves? Why would they charge this much? It boggles the mind.

Still, I wouldn’t let a little thing like money stop me from seeing a good opportunity. Start your engines ISVs, there’s an entirely new world that we have to fill in with good product offerings.

I would rather be CEO

February 22, 2007

 

For 10 years, I have loved programming. I have learned and used Java, C, Scheme, C#, Python, Ruby, Boo and sometimes even PHP and Javascript. I have made a decent living out of it. Here’s the problem: I’m tired. I realized I can’t do it all myself, even if I make little minions out of code to do a lot of the work for me, even if I master the most powerful programming languages, the most powerful frameworks, the design patterns, the project management skills and read all the books.

I want to build something more than myself. I need other people for that. I need to trust other people for that. Therein, lies the journey. This blog will be about that journey.

I am currently about 12 months into running my own company. I went the easy way and have a sole proprietorship. I have a Nevada C-Corp coming into existence shortly. I’m still going to pay California taxes, but it just turned out to be easier to do it in Nevada. I have some things going for me. I have at least two reasonably steady clients. I am awash in offers for positions and one-time contracts. I have one pupil who is trying to learn the ropes, one who is coming back into the fold hopefully, and a part time ringer at my disposal.

What next? The plan is to work contracts and grow a small team so that I can transition slowly to becoming a product based company, instead of a contracing based company. This is a common plan. So far, it is not working for me. I don’t have time to work on my products because I am always chasing that next big job. I have worked everyday since Jan 6th. I will work everyday for at least another two weeks. I largely stopped bidding contracts on Guru.com (the major source of work for my little one man company) on January 1st, because I already had too much work. Even now I am behind on some projects that I must catch up on. I have six concurrent projects going, several of which are quite large. I even have one for equity stake in the resulting company with a decent business partner.

I am purposefully keeping this blog anonymous (as much as possible) so that I can talk about money. I don’t really want competitors, potential customers and just any random Joe being able to connect my money with me. This anonymity gives me the chance to really put it all out there. Thanks for understanding.