Archive for October, 2008
The Seven Archetypal Software Projects
Throughout any given software developer’s career, I think he or she is bound to run into a few archetypal projects. Some are good projects to have experienced, others not so much. Either way, I find these are the projects that offer up the biggest smack-in-the-face lessons.
I also find that the order I’ve laid out below tends to mirror the progression of a software developers career chronologically as well.
The school project
I love this one, because this is where a large number of hackers become “software engineers”. Or so says the industry and HR people. The only reason I value this type of project is because it’s such a stark contrast to how development happens in the real world. Somehow, the particular mix of apathetic group members + hero group member + late nights in the computer lab makes for good memories to reminisce after you’ve been in the software industry for a while.
The “I can do that in a weekend” project
Don’t lie - the first time you saw twitter you said, “I can write that and more in a weekend.” Maybe not twitter, but we’ve all run into successful apps and scratched our heads pondering what the big deal happens to be. So go ahead, write it. Build that app. Then eat dirt. I find this is the fastest way to learn that 1. no, it’s not that easy, and 2. even if you built and launched a me-too app, no one cares.
The “I’ll build it from scratch” project
This is another one too many of us have had the guilty pleasure of partaking in. Instead of taking well-known and well-document open source solutions already out there, you decide you can do it better yourself. More often than not, you walk away with a new appreciation of that whole shoulder-of-giants saying. Then you start shopping.
The “other platform” project
Everyone gets curious about the greener grass on the other side. So appease the need. If you’re a *nix/apache type, give .NET a shot. If you’re the .NET type, give open-source platforms a shot. Loving Java? Try C#. RoR expert? Give Django a shot. Learning both sides is not so much for gaining actual experience as it is for gaining perspective. My personal experience has shown that you just might stay on that new platform. (Of course, most of my experience has been of the Microsoft camp going open source.) At worst, you’ll know you validated the choices you made going into your current setup.
The “coding as a job” project
If you haven’t already, get a job (at least once). It’s a quick shot of reality and harsh perspective. It helps you realize what engineering in the wild is like. Product managers, program managers, project managers, mid-level managers vs. you. It helps you realize whether working in a team is your strength or your weakness. It helps you learn to curb that ego of yours. It makes you appreciate just how difficult running a business is, aside from the technical side of things. Observe the sales people, watch the BD team. Learn their tactics, their way of doing things. It will make you a more well-rounded individual. If nothing else, you’ll learn what kind of software and services the suit-and-tie crowd really need.
The startup project
The beauty of software is that everyone’s got an invitation to start something up. This is more than just a “all the cool kids are doing it” thing - I feel that everyone should try to build a project (and eventually product) that brings real value to people. In fact, try charging for it. Nothing validates your ideas, concepts, beliefs, and ambitions more than getting others to give attention to what you’ve got to say or sell. If you fail, no big deal - you’ve learned something valuable and chances are you lost nothing but a few weekends and hosting money. If you succeed, well then it’s all the more rewarding.
The open source project
This is where the “end-game” of software development happens. You go through life looking for projects to be passionate about. You’ve gone through school and pulled through the grind. You’ve tried the whole day job thing and you’re either feeding your family or you’re looking for a new cause. You’ve done your own start up, for better or for worse. In the end, you begin to realize nothing is better than sharing your great hack, tool, technology, algorithm, framework, project, or application with the world. I find that the sense of accomplishment that comes with open source projects spans the spectrum from being the sole maintainer of tiny, obscure plugin to being a drop-in-the-bucket contributer to a massive framework.
What comes after the Web 2.0 lottery?
I feel like today is the day after the lottery for all of web 2.0. You know, the day where you look down on your ticket comparing your numbers to last night’s numbers. Then you sigh. Game over. You just lost your dollar.
Oh wait, but I forgot, the lottery is for under-educated poor folk who are desperate to get rich. What’s the difference between that and the game the Silicon Valley has been playing for the last 2 years? What’s the difference the lottery and the game played in the early 2000’s? From all of this web 2.0 stuff, we’ve basically learned that the exceptions (Google, Youtube, Facebook) got rich, while the rest got/are getting shafted.
However, when one door closes, another one opens.
First, this is a great opportunity for businesses with legitimate, sustainable models to separate themselves from the rest of the pack. More signal, less noise for all of us. Similarly, this is an opportunity for those with unique talents to find themselves in smaller, leaner, more efficient teams. At the end of the day this will reward responsible companies that curb spending and reduce burn-rates.
Second, the opportunities for areas outside of consumer web space finally have a chance to shine. No more showing up for VC pitches only to be asked, “does it come with a Facebook app?”. Companies that focus on selling actual products with actual price tags will be rewarded.
Third, for developers, a whole new world of viable alternatives opens up. The Rails community seems to be happy about the opportunities present in the downturn. However, there is no better time to start your own indie developer shop. For example, maybe it’s time to start desktop development again - the market for Mac software products grows with each day, and incumbent developers will tell you there is a lot of money to be made.
At the end of the day, jobs will be lost, families with be affected, and people will have to search for their own answers. But, we just have to keep our heads up and look for that next open door.
Revisiting the Entrepreneurial Rollercoaster
I came across a great article by Cameron Herold guest blogging at Tim Ferriss’s fourdayworkweek.com blog. He writes:
Regardless of whether or not you believe you will ride an emotional rollercoaster running a business, you will. You have two fundamental choices: you can hold on and scream, or you can wave your hands in the air and have some fun.
Also, you’ll find Marc Andresson’s precious nugget of wisdom being quoted as well:
First and foremost, a start-up puts you on an emotional rollercoaster unlike anything you have ever experienced. You flip rapidly from day-to-day – one where you are euphorically convinced you are going to own the world, to a day in which doom seems only weeks away and you feel completely ruined, and back again. Over and over and over. And I’m talking about what happens to stable entrepreneurs. There is so much uncertainty and so much risk around practically everything you are doing. The level of stress that you’re under generally will magnify things incredible highs and unbelievable lows at whiplash speed and huge magnitude. Sound like fun?
I can’t stress enough how important it is to recognize and respect the awesome force that is human psychology as it comes into play during the hectic start-up phase of a company. More often than not, however, setting the right expectations and being informed about your particular industry means you can flatten the so-called “Transition Curve”.
The problem I find with today’s entrepreneurs is that the optimism is often too overbearing. Perhaps it’s the romanticism with which we surround the notion of a “start-up”. Perhaps it’s because people are starting their own companies at younger and younger ages. Perhaps it’s because a lot of tech start-ups are headed by folks who know more about cool technologies than running actual businesses. More likely, it could be because VC money is (or at least was) too readily invested. Whatever it is, the right expectations are not being set to counter-act what Cameron refers to as the “Uninformed Optimism” phase of start ups.
My advice, for what it’s worth, is that you should find something you’re passionate about, persist at it, and do your research.