A few days ago, I received a link to a blog post called some lesser-known truths about programming. Among other things, it states:
Bad programmers spend much of that 90% debugging code by randomly making changes and seeing if they work.
Patrick, my business partner, jokingly calls this Guess-Driven Development and I now take the liberty to publish the term in writing. I will admit that I have fallen for this type of development quite a few times. But now I have started to wonder: Where is the fine line between guessing and exploring?
When faced with a strange bug or error in some system, we are taught to use e.g. a debugger and over time, we hopefully become more adept at solving bugs. But sometimes (many times) I have solved a problem by almost randomly trying out different solutions. So is this guessing or exploring? I don’t have the answer.
Maybe I should have listened more carefully in Software Engineering class?
“When you start a business, you have to work all the time, you just have to. Every waking hour.”
Bullshit. But I hear stuff like that all the time. So many times that I almost started believing it myself. But that does not make it true. Also, sleeping is kind of taboo. The inspiring book Rework breaks with this taboo and so do we.
What is the single most important thing for a software developer? Concentration. You cannot concentrate if you are tired. You are tired if you do not sleep. You do not sleep if you work all the time. You work all the time because you think it makes a difference. But you cannot think because you’re tired. So go to bed.
In the software industry, I believe there is often a somewhat strenuous relationship between developers and salespersons. Yet, there is often a perceived symbiotic relation between them. The developers develop and the salespersons sell. One couldn’t exist without the other.
So far so good. Let’s assume (and hope) for a while that a salesperson is actually better at selling software than a developer. That’s good, right? The developers can focus on development and the salespersons can focus on selling. Everyone’s happy. Where does it go wrong then? When the salesperson also decides on new features.
Features sell. Promises sell. The more a salesperson sell, the more successful he/she will look. After a salesperson has successfully sold a new feature, the torch is passed over to the unknowing developers who can do nothing but nod their heads and start implementing the requested features. After all, the features have already been sold.
Now, most things are — fortunately — possible to do. But there are still at least two problems:
- Salespersons cannot give accurate time estimates because they do not know what they are talking about.
- Developers get frustrated because they do not really want to implement some salesperson’s idea and then the famous torch gets passed on to someone else.
It does not have to be like this and I know that in many companies, developers actually have a say in what features are feasible to implement. But I have a feeling that as soon as a company grows and the distance widens between developers and salespersons, problems will arise. That’s why we do not necessarily want to grow — at all.
Hmm, I actually wanted to write a blog post about how awful it is to be disturbed in one’s work due to supporters with frustrated customers on the phone. But there you have it. I added supporters to the rant in one sentence.
I need to laugh more.
Well, kudos to Microsoft for their Bizspark program. It is intended to help small business by providing free Microsoft products. It’s a good way to try and get developers to start using their products. Thanks to that, I now have access to Windows and Visual Studio for free. Our intentions are still to use all open source tools by the end of our first year but for now we are forced to work in the a-bit-too-feature-rich-and-slow Visual Studio.
I am not sure that anyone can answer the question “why is Windows so expensive”. After all, most people get Windows when buying a new computer where Microsoft has a strong hold on the market.
First, how expensive is Windows exactly? Currently, I am looking at the US prices where Windows 7 Professional costs $200 for an upgrade and $300 for a full version. To compare, I have downloaded Ubuntu Linux three times within the last year for $0 but have donated $10 every time, just to make myself feel a little less guilty.
I understand that nothing comes for free and there are obviously many bright people at Microsoft that have high salaries. While being a student, one also enjoys the benefits of downloading tons of Microsoft software for free. But now, while starting my own business, $300 for just one Windows license is really a lot of money. And that is only the operating system. I won’t even get started on products like Visual Studio, SQL Server and so on.
There are two solutions:
- Use open source. Yes, I would like to do that, especially because there are excellent alternatives to proprietary Microsoft software. The problem is that Visual Studio is needed in certain situations.
- Swallow the bitterness and pay.
I would like to see Microsoft doing different pricing schemes on their software in the future. Until then, I will just have to pay.
Edit: The third option is to enroll in Bizspark which we did. See the next blog post