I'm in Boston at The Spotted Apron, which is a fairly snazzy bakery near Audrey's apartment that caters to people with laptops by having approximately eleventy billion outlets to plug into. Whether they designed it this way or it was just a happy accident is up for debate, but my guess is they realized they would have a ton of people kicking around with laptops, and nothing draws laptop people more than sweet, sweet alternating current. And the longer they stay, the more they drink coffee and purchase cupcakes. Truly a perfect business model.
So I began to wonder today why I feel so glum about working for large companies. It doesn't necessarily follow that large companies make people sad, and they didn't always make me sad. But something about the thought of working for a huge company (let's say more than 50 people) sort of gnaws at me now.
Back when I first started programming, I figured I would work as a cog in a huge company, which is pretty much what my father does. It looked lucrative to me when I was younger, and by all accounts it is. And although it may be somewhat uninteresting programming, even uninteresting programming is preferable to, say, bagging groceries. Plus, even at a young age I knew computers were going to be my life. They fascinated me beyond anything else the world had to offer. And back then, the only way I knew how to work on them was to work for a big company, like Dad.
Flash forward to age 23. I realize my programming skill has allowed me to pursue my own activities in whatever language I want. I further realized that I wanted to be my own boss. And after many a drunken bull session, a plan was made: to make something new that people would like.
But why is it that I want to do this? Is it the money? Maybe. I can make a fine living continuing to work for a large company. But I will never have sizable equity stake in anything unless I go my own way. Is it the challenge? Perhaps. Making my own company work would be far harder than anything I could possibly experience working for a big company. But it would also be far and away more rewarding to succeed.
So we come to the real reason I am striking out on my own: I want to do something new. I want to be the first to do something. And I want to help the world at large somehow. What I am working on right now (with my co-founder) will not make the world better. But if it becomes successful, I will have enough money to do something worthwhile. Something to change the lives of people who need help. That is the ultimate goal -- to be achieved through a mix of naive optimism and disillusionment.
I kid. Some of my best friends are Germans!*
Weitz is mostly cool because of cl-who and hunchentoot. As I have let slip before whilst rambling about the internets, my friend John Watson and I are hard at work on a fun project involving Common Lisp. While he fiddles with memcached, I am working on the beginnings of our site, which we plan to build using Common Lisp to dynamically generate HTML and skin it using CSS to make it look all pretty and WEB 2.0**.
This bold plan would be a hell of a lot harder if not for Weitz, and his wonderful libraries hunchentoot and cl-who. Weitz, self-effacing devil that he is, is quick to admit that many other Lisp markup languages exist. And they do. But few work so seamlessly with his major accomplishment, hunchentoot!
hunchentoot is a hilariously named*** Common Lisp webserver. Currently running on its own right now, it is serving me the very first test pages for our site. I am extraordinarily pleased with it so far, and cannot recommend it highly enough.
This is a pretty short update for today (lacking even a lolcat!) because I have an electrical engineering exam to study for and some work to do for my day job. I may throw some more up later tonight, but most likely I will just collapse somewhere. The lazy is strong with this one.
* Patently untrue. I only know one, whom I met twice. He dates my girlfriend's best friend. Regardless, he is awesome, and has raised my opinion of Germans in general.
** Rounded corners. Lots of rounded corners.
*** I am forbidden from talking about it in public, due to the odd glances I have started to garner: "Something smells fishy with hunchentoot!"

I often wonder about what my life would be like if I continued to work as a developer for large companies for the rest of my life. I can see two possible paths:
1) Stay Programmer.
2) Become Manager.
This is not a new dilemma. I'm sure people have faced it before with jobs in various fields other than software development. But it takes on a vital air when discussed among programmers and/or managers because the two are so different, and yet often one is promoted into the other.
Programmers* are very similar animals. They are all usually less than outgoing, interested in solving curious problems, and inclined to focus on one thing to the point where everything else becomes a dull background roar.
Managers are outgoing people. They have to be if they are any good at their craft, which is the sole act of dealing with and coordinating people. They enjoy nothing more than working with people, talking to people, and thinking about what to do with people and their time. They focus on a wide variety of tasks and they need to be able to context switch quickly.
Now you may think that I am about to start slagging managers as useless and talentless individuals. And some are. But a good manager is an extremely useful thing. He solves logistical problems, and aids the programmers with whatever is holding them up. An enabler who helps people get shit done, with a minimum of intrusion otherwise.
Nine times out of ten, programmers make rotten managers. They hate talking to people, they hate meetings longer than 10 minutes, and most of all, they hate to stop programming, which is essentially what you must do when you become a manager. Once in a while you will see an excellent manager promoted from a programmer who truly understands his employees, and is an absolute joy to work for with a laissez-faire management style and a no-bullshit attitude. These are gems that must be coveted beyond imagining: if you work for a manager like this, keep working there. And make sure he doesn't get fired!
This is mostly just an unstructured rant about how annoyed I am at the preponderance of shitty managers in software development today. And it is a difficult problem to fix: while most promoted from programmers suck, at least they are in touch with the problems programmers have. Nothing is worse than some business-school idiot with no programming experience being tapped to lead a dev team.
So what is the answer? I would begin by offering MAJOR salary increases for programmers becoming managers, and still allow them to program as they see fit, and delegate some managerial duties to an assistant as possible. This will keep them focused, interested, and ready to lead without boring them. I like this model, and if I ever have to become a manager (it is sometimes unavoidable if you wish to keep working at a particular company), it will definitely be my goal to set up my reign in this manner.
* When I use the word programmer, I mean a real programmer. Not someone who is doing it because they thought a CS degree was a ticket to instant free wealth. Someone who would be programming even if it were a completely unpopular social stigma akin to having herpes, and if it paid nothing at all, and in fact cost one money. The people who understand and love their profession, which is writing software. My God, I have a chip on my shoulder the size of Mt. Everest, don't I?
10/24/07
Most days I get little time to work on stuff related to my own startup, but today I have devoted some time to figuring out what kind of database we might use. After reading several scholarly articles and checking the opinions of some people whose programming ability I respect, I have come to the conclusion that PostgreSQL is the cat's ass.
http://www.postgresql.org
An interesting sidenote is the Common Lisp interface:
http://common-lisp.net/project/pg/
So in conclusion, if you would also like to be as gangster as I am (though not as gangster as, say, Hell Rell), I suggest you use PostgreSQL.
10/22/07
This is my latest attempt at keeping things organized and people updated using a blog. I inevitably get bogged down in the implementation of my blog, because I grow bored with it or because I have too many other things to do on any particular day to write my thoughts or work down here.
Anyway, the idea is that if I catalog what is going on in my life on any given day I can keep better track of all my projects, and also keep other people involved in the projects updated. Of course I will probably just end up posting LOLCATs when intoxicated instead of useful content, but my heart is in the right place. I guess.
To get the ball rolling, I have to plug what I think is the only blog worth reading right now, which is Ted Dziuba and company's Uncov. This blog is ruthless in its skewering of various Web 2.0 startups, and it is all done in a style I admire. Also, if you are interested in more than just the trashing of half-assed startups, he has a list of Uncov-approved Web 2.0 garbage, some of which is truly useful. DivShare in particular is worth a look.
That's enough for today. I need to get some chicken in me.
Some links I added later:
http://www.uncov.com
http://www.divshare.com