A Canvas for Thought

October 10, 2007

My Life Must Change

Filed under: perspectives — vednis @ 12:29 pm

Today begins a new chapter in my life. It is the first day in my professional career that I am out of a company’s employ. I was laid off. Our parting was on good terms, but the reality of the situation before me is deep, and harsh.

My life must change. The thought invokes thrill, fear, raw exhilaration, worry. It fully calls upon the support of my strength, family, faith, and reason. It tests me.

My skills are rarely seen – Python, Linux, Open Source, Agile development – they catch the eye of others, recruiters especially: it interests them. But the companies that use these skills are as unique as I am. The search is difficult, the opportunities rare; every resume and cover letter becomes a finely crafted shot bound for an elusive mark.

Others have offered to open doors, but to cross through them I must give up some of what makes me unique: I must forsake Python, and Linux, and find myself a place in the brave world of Microsoft’s .NET. My friends have faith in me, in my skills as a Software Engineer, and I thank them greatly for it, but to give up the path I have forged these past few years…

This part of Canada, Southern Ontario, is based on big business: manufacturing, finance, and commerce. Only a faint glimmer of the Silicon Valley startup scene shines here. Globally, perhaps 60% of programming is done with Java or .NET: here, 90% feels more accurate. Vancouver, on Canada’s West coast, is different. It feeds off of the fervor to the South. But to move out West is to leave my family, my wife’s family, the place where I grew up, and for what? A computer language? A dream? An ideal?

The weight of it, my family’s well-being, rests squarely on my shoulders. My wife is at home, and cares for our children; it is a decision we made together, one we truly believe in, and I will fight for it until the bitter end. I am responsible for what comes next.

My life must change. And it is never easy.

September 23, 2007

Craigslist Software Jobs: Canada vs. San Francisco

Filed under: perspectives,wild speculation — vednis @ 11:57 am

I recently checked out the Canadian Craigslist scene after reading some recent posts by Guy Kawasaki.  I’ve heard that Craigslist is big in the San Francisco Bay area, but how is it catching on in Canada’s largest cities?  I devised a small survey to compare the regions, and wow, what a difference.

I compared Canada’s largest city, Toronto, and the surrounding area (known as the GTA), to the San Francisco Bay area.  I also threw in Montreal, Vancouver, and their surrounding areas.  I looked at some of my software specialities, including the Python programming language and Linux, and at some general Web2.0 activity indicators.

As searched on Sept. 23rd, 2007:

S.F. Bay GTA Vancouver Montreal
Population (2006) 7 million 5.5 million 2.1 million 3.6 million
Python in Jobs 386 27 23 16
Linux in Jobs 1157 247 244 75
Ruby in Jobs 259 31 55 6
Python in Gigs 14 0 0 0
Ruby in Gigs 41 0 0 0
AJAX in Jobs 577 222 121 41
Developer in Jobs 1206 772 456 141
Software Engineer in Jobs 1458 98 99 26
Programmer in Jobs 269 234 169 80
Startup in Software Jobs 234 10 4 4
Startup in Internet Engineering Jobs 179 4 1 4

heri noted in the comments that the Montréal numbers are irrelevant, because most job postings will be in French.

Some interesting observations:

  • Why does everyone in S.F. want a Software Engineer, but in Toronto they only want Developers?
  • I have heard that the Linux scene in Toronto is pretty dead.  Answer: yep.
  • I have heard that Vancouver is a bigger tech hub, per capita, than Toronto: perhaps, going by the Cutting Edge Indicators (Ruby, Open Source/Linux, startups, and overall Craigslist usage).

Do keep in mind that this is just a survey, and unscientific in every way.  But do feel free to have fun with the numbers, and draw your own conclusions.

Technorati Tags: , , , , ,

September 16, 2007

Rails, Y-Combinator, and the E-Myth Revisited

Filed under: perspectives — vednis @ 5:45 pm

I have recently been reading a book called The E-Myth Revisited.  The author, Michael Gerber, lays out the foundation for building a successful small business using a franchise model.  I decided to measure two successful projects from the Web2.0 world against the franchise model: Ruby on Rails, and Paul Graham‘s startup-generating machine, Y-Combinator.  The results are interesting.

First, some background.  Gerber defines a successful franchise as a Turn Key Business Model.  You learn how the business model works, get the keys to the business, fire it up, and it succeeds; every time, it succeeds.  This model is followed by two of the most lucrative franchises in Canada: MacDonald’s and Tim Horton’s.  Starting either restaurant means that you start a successful small business, guaranteed.

Put another way, a successful franchise is a system, powered by people, that is guaranteed to run properly, so long as the system guidelines are followed.  Tim Horton’s is a system for running a profitable doughnut shop.  Rails is a system for repeatedly building robust, flexible, featurful web applications.  And Y-Combinator is a system for turning wizardly hackers into Web2.0 startup entrepreneurs.

Gerber states six rules that a business model must follow to succeed at the franchise game.  We can see some interesting aspects of Y-Combinator and Ruby on Rails’ success
if we look at how each follows Gerber’s small business franchise rules.  (Note that these rules must be taken together: they are an irreducible system, a whole of interrelated parts.)

1. The model will provide consistent value to your customers, employees, suppliers, and lenders, Beyond what they expect.

Rails fills this role in flying colours.  Diving into Ruby, Rails, and the Pragmatic bookself will have you building those super robust Web2.0 web applications very, very quickly.  And that is before you have even touched the larger Rails community, which is teaming with tutorials, plugins, and stories that will add untold value to an already successful application.

Y-Combinator is a dream come true for a hacker-turned-founder wanting to start a startup.  They deliver exceptional value by giving startup founders everything they need: legal advice and services, bookkeeping, market awareness, and other smart startup founders to bounce ideas off of.  The founder may be unbelievably creative, and you can turn out code like you wouldn’t believe, but they are still at great risk of running afoul of Gerber’s Fatal Assumption:  “if you understand the technical work of a business, you understand a business that does that technical work”.  ie, wizardly hacking != knowing how to run a business that employs wizardly hackers.  Y-Combinator is a system that teaches you, the wizardly hacker, how to run a business.

2. The model will be operated by people with the lowest possible level of skill.

Now, I should clarify exactly what “lowest possible” means.  The lowest possible level of skill may be “brain surgeon”.  The model must be operable at the lowest possible skill level because highly skilled people are expensive.  In comparing two similarly successful franchise models for brain surgeons, the one that requires less skill to run will be more successful simply because it has a larger eligible talent pool to draw from.  It would be easier to set up a franchise that requires “one brain surgeon and two assistants”, rather than one that requires “three brain surgeons”.

Rails makes doing difficult things simple because many tasks involving complex concepts have been neatly abstracted away.  Need a database table to store and maintain a hierarchical tree structure?  You need not read about nested sets, adjacency lists, SQL syntax, or time/space performance tradeoffs, and, more importantly, you need not spend time debugging the whole mess.  You simply add the line ‘acts_as_tree’ to you model, and you’re done!

Y-Combinator makes startups accessible to ordinary wizardly hackers.  Not hackers like Miguel de Icaza, or Paul Graham himself, but normal wizardly hackers with a bright idea that can be turned into code in three months.

3. The model will stand out as a place of impeccable order.

Here we see Rails shine through.  If you understand “The Rails Way”, and “The Ruby Way”, then many of the design decisions encountered while building a typical web application have been made for you.  There is an obvious place for everything, every piece of functionality or code.  Application deployment is clean, orderly, and portable across web hosts.  The risks and rewards for adhering to The Way are clearly laid out, they are flexible, but departing from The Way will involve trading away some of the advantages that the platform brings.  (The Pragmatic books do an excellent job of communicating this point.)

Now, applying this rule to Y-Combinator is difficult for me, since I know nothing about how the course internals work.  But I would assume that first things first: get your idea written down, and get your legal paperwork out of the way.  Perhaps some of the “impeccable order” is evident in Y-Combinator’s stringent selection process: they prefer to fund startups that fit a certain profile, which increases their chance of success.

4. All work in the model will be documented in operations manuals.

The operations manuals for Rails are obvious, those being the Pragmatic books, the various cookbooks, and so forth.  Follow these, learn The Way, and success with your Rails projects is guaranteed.

Once again, I don’t know if Y-Combinator has anything like a manual.  But I will bet that many people would love to get their hands on the powerpoint slide decks that the company shows to each round of startup founders.

5. The model will provide a uniformly predictable service to the customer.

A company that understands Rails development will produce web applications that are flexible and robust.  However, Rails does not guarantee a decent user interface, competent project management, or clear client communication (look to SCRUM for that).

I would assume that Y-Combinator successfully delivers Web2.0 startups, because they are still going.

6.  The model will utilize a uniform colour, dress, and facilities.

OK, you got me on this one.  I can’t apply this rule to Rails or Y-Combinator without bandying about evidence of near-ubiquitous Mac, Linux, and Textmate usage in the web and startup communities.

So there you have it, an attempt to apply a new-found model to my world.  It will be interesting to see if Gerber’s ideas can be applied to other business models in the technology space: is Y-Combinator the only sure-fire way to build a successful startup incubator?  How well does Y-Combinator fill out the market strategy, customer awareness, and visionary components of a successful business?  Would it be possible to provide a Rails Turn Key Business franchise, a system for building world-class Rails shops, one that provides business assistance in the same way that Y-Combinator helps startups?

The E-Myth Revisited is a good book: I’d recommend it to anyone thinking about going into business for themselves.

April 2, 2007

Why Offline Web Development Matters

Filed under: perspectives — vednis @ 9:03 am

This is a response that I posted in the a thread about Adobe Apollo and Joyent Slingshot. It answers the question “Why do these offline web platforms matter?”

The fact is that people still use desktop applications, and those applications by-and-large offer better integration and responsiveness than their online equivalents.

If anything, this is a direct assault on the entrenched desktop programming world. These platforms blur the line between thin and thick desktops, they enable a single standard for cross-platform development, and they open new frontiers for web-based developers. That is no small achievement!

Removing the browser’s chrome is a big step. Others have already moved in this direction, notably Konfabulator. Konfabulator takes brilliant advantage of this web-based, cross-platform environment through Javascript, XML , and its own self-contained runtimes. Adobe, Slingshot, et. al. are opening up that environment to a larger audience.

Think of it another way: could you develop a desktop application for Windows, Mac, and Linux, with all the bells and whistles, as quickly as you can build a *single* online app? No? Well, now you can.

March 22, 2007

Certification: Natural versus Official Authority

Filed under: lean,perspectives — vednis @ 4:49 am

This is a re-post of a comment I made during a discussion on Scrum certification at InfoQ. It relates some of the pressures that I see affecting the software industry. (And yes, I know it mentions Dave Thomas again. What can I say? The guy’s a legend.)

I agree, certification locks up access to a profession, often to the profession’s detriment. We have all encountered people with impressive official credentials who deliver less-than-impressive real world results.

It is the difference between natural and official authority. Fotunately, many of the brightest lights in the software community have great natural authority, authority gained by doing useful things, and by helping others. It is part of the culture.

I think the problem comes when you attempt to reconcile software’s culture with the rest of society as a whole. We are pressured into becoming an “official” profession in the vein of doctors, lawyers, and engineers. But what is wrong with aligning ourselves with professions that value experience and results, like sports, or the arts?

Dave Thomas, one of the Pragmatic Programmers, aludes to the problem of authority in his presentation titled “Herding Racehorses, Racing Sheep”. He notes how nursing faced similar challenges as software, and how they reconciled official and natural authority within their profession. Why can’t we do the same?

I am glad that the rise of agile and the certification debate are pushing these issues to the forefront. Software won’t realize its full potential until they are resolved.

Blog at WordPress.com.