Fog Creek Software
Discussion Board




Small city, small projects

Having enthusiastically enjoyed developing for the .NET platform in a small consulting company in a small city for the last couple of years, I now find that my ambitions have grown bigger than what my job can offer.

Most of the projects we do are of small enough proportions that a single developer, sometimes two, can handle it. We usually get to do all the designing, testing and documentation ourselves. Today's hardware is so powerful that performance and scalability are never even close to becoming significant issues.

Now, some will probably think of this as a dream job, and it has been, for sure. It's just that I am eager to start tackling some more complex problems.

The way I see it, there are two appealing ways out, one of which is joining a bigger company as a .NET architect. However, there are no local competitors significantly bigger than us, and moving somewhere else is not an option. Hence, the other option is to establish a pleasant company of my own. That won't give me any complex projects for the next couple of years, but at least it will add the complexities of running a business to my life.

The problem with that, of course, is that it will be difficult to attract customers in such a small, and for now, slow, market. Yes, I know there are supposed to be "no geographical boundaries in IT," but in reality most of the income will come from the local industry.

Before I go into a long rant, I think I would just like to know if anybody else are having frustrations like this. And I would like to know if anybody has been able to go self-employed in a sleepy, little town and succeeded.

anon
Tuesday, November 04, 2003

Erm.  It could just be me, but when I hear "single developer, sometimes two", I don't automatically hear "you can only handle simple problems".

I mean seriously.  What kind of problems would you categorize as "so complex" that you think it requires more than one or two people (and why, I guess)? Ignoring the speed of development issue for a moment, which is a completely different debate. 

Just adding bodies to a project doesn't make the "team" automatically more capable of handling complexities!  Or is that just me?

Phibian
Tuesday, November 04, 2003

The kind of projects I have in mind are usually too big for one developer to handle alone. While I can certainly imagine very interesting one man projects, I think it is relatively safe to assume that there is a correlation between "complex" and "big" here.

To clarify a little, when a project is small it means that you can often get away quite nicely without a bullet-proof architecture, because there are few concurrency issues, lots of resources available and no scalability issues to be concerned about. In addition, security is less of an issue when there are only a few, more or less trusted, users. Not to mention the administrative issues, which are usually pretty trivial when you're working alone.

Hence, many architectural "best practices" can easily seem a little far-fetched and even overkill for your small system.

I emphasise that this isn't always the case, only very often.

anon
Tuesday, November 04, 2003

I don't agree. Many of the most interesting and successful projects I can think of were done by small teams of one to three people.

C, unix, emacs, doom...

Dennis Atkins
Tuesday, November 04, 2003

More people usually means more manpower but lower skill average. Simply because the amount of developers is a factor of complexity by itself. So problems to solve must be simpler when the team grows.

Serge Wautier
Tuesday, November 04, 2003

My only advice:

Becareful what you wish for, you might just get it.

Stevie Ray
Tuesday, November 04, 2003

---
More people usually means more manpower but lower skill average. Simply because the amount of developers is a factor of complexity by itself. So problems to solve must be simpler when the team grows.                       
---

Sounds like a skunkworks.  Get a small group of some of the smartest people you can find and let them loose on a complex project.  If you do it right you end up with the next fighter jet.  Thats how some of the big defense contractors design their next planes, from what I've heard.

Andrew Hurst
Tuesday, November 04, 2003

"Smart, talented people" don't tend to live in small, sleepy towns...

Rick
Tuesday, November 04, 2003

'"Smart, talented people" don't tend to live in small, sleepy towns'

BZZZZZZTTTTTTT.

They're called college towns, and they have higher average educational levels and more PhDs per capita than any of the cosmopolitan cities.


Tuesday, November 04, 2003

--
I don't agree. Many of the most interesting and successful projects I can think of were done by small teams of one to three people.

C, unix, emacs, doom...
--

Those projects had more than one to three people. Sure, C, unix, and emacs started out from just a few people, but then numerous others provided contributions.

Doom was over 3 people right from the start. I'll grant you that Carmack was the main developer, but he did have help.

You can certainly do interesting stuff with 1 or 2 people, but a team of 5-10 can do much much more.

NathanJ
Tuesday, November 04, 2003

NathanJ, okay how about Apple, Perl, PHP, the telephone, and the airplane? ;)

Andrew Burton
Tuesday, November 04, 2003

Add Google to that list....

John Rosenberg
Tuesday, November 04, 2003

The red herrings are really flying in this thread. Back to basics.

>> Small city, small projects
>> there are two appealing ways out, one of which is joining a bigger company as a .NET architect. However, there are no local competitors significantly bigger than us, and moving somewhere else is not an option.

These are interrelated. The local competition is not "larger" than your present company because there are probably not that many large business prospects in your immediate area. So, the end users that would use the services of consulting companies just aren't that large.

Believe me, if the opportunities were there, *someone* would have been exploiting them all along.

>> Hence, the other option is to establish a pleasant company of my own.

Er, you will run into exactly the same issue on your own.

The comments about "what about college towns" are red herrings because most small towns *aren't* college towns. Also, while a college town obviously has one major local employer/client, this opportunity is almost always neatly balanced by the fact that a consultant is probably competing with local students (and even some faculty) for opportunities.

I see the *only* alternatives in the kind of area you probably live in as being:

- Accept that your local clientele is small time and that you just aren't going to find major development efforts around you.

or,

- Start your own product company. Example: http://notalegend.com/notalegend.html

Bored Bystander
Tuesday, November 04, 2003

It would be interesting to know what kind of things you have "in mind".  (What would you consider to be a large project?)

This brings up another kind of interesting point.  How do you define "size" of project?  Is it the length of time it will take to complete? The dollar value?  The number of projected users?  I guess it's obvious that I believe defining "size" based on "complexity" is rather odd.

After all, the ideal flipping of beer mats (recently reported on BBC) turned out to be quite complex from an engineering perspective.  But it was never a "big" project.  Conversely, anyone who thinks that the "big" billion dollar gun registry project here in Canada is particularly complex / worth even a fraction of that price tag is guilty of wishful thinking.

Phibian
Tuesday, November 04, 2003

Bored Bystander, the points you make are pretty much exactly what I believe I will just have to accept. In short, I'm going to spend the rest of my life working on small projects, and starting a new company here is not going to change that. Unless I forget about consulting and rather come up with a great piece of software that sells globally. Of course, both Eric Sink and Joel Spolsky are great sources of inspiration in that respect.

By the way, yes, we have a pretty decent university here. It's a small city, not a small town.

And Phibian, forget "complex" and "big." I guess what I really would like is a chance to cooperate on fun projects with a group of smart and productive programmers. For a living. Software development is such a slow process that if you would like to build something great, you can only dream of doing it alone (most of the time).

anon
Tuesday, November 04, 2003

I've worked on a three-man team that wrote a program to simulate urban radio wave propigation and present the results in 3-D, and a group of four developers who do mortgage asset intererst-rate simulations.  It doesn't take a lot of people to write code that does a lot.

I think where the small city will get you is that it is hard to find "big" clients.  So maybe what you want is a small company in a bigger town.  I haven't worked for any big companies, so I don't know if my impression is right that smaller companies do the more interesting work.

Keith Wright
Tuesday, November 04, 2003

>"Smart, talented people" don't tend to live in small, sleepy towns...

I do and I think I am.
Just because I am smart and talented doesn't mean I throw everything else out the window. I have a husband who prefers small sleep towns, so we compromise with a med size sleepy town. Our family lives close to us and we don't won't to leave them, we don't like the idea of living in a capital city......
But I guess you realised that was a silly thing to say huh.

Aussie Chick
Tuesday, November 04, 2003

Surprised no one has brought up Mythical Man Month, rapidly rising coordination costs as a team grows, etc.

I would say really complex projects can ONLY be done by a small team.  Of course, it might take a larger team to polish the project into an actual product that can make money, after the core of the project is completed.

If the project is too big for a small team, break it into multiple projects, each of which can be done by a small team, with clean interfaces that make it easy to tie the parts together.  Note that big and complex are different concepts.

Jim Rankin
Tuesday, November 04, 2003


Bigger projects usually mean MORE simple work not work that is more complex.

The poster wants to work on more complex and technical problems by the sound of it. 

"la la make some db tables... la la make some input forms and some presentation reports.... la la"  can get a bit old.

One thing that I get satisfaction from is trying to build mechanisms and functionality that will be useable on more than one project, if you a repeating the same of work is it getting better each time ?

Also constantly handling smaller projects means you can put real effort into polishing your coding.

I am starting to get some good feedback by walking into a collegue's office and asking "ok.... got a few minutes... this is what i am trying to do....  how would you handle..."  and seeing how they would do it.

I think the ultimate solution is the same old story that you will never be working on and with and in the way that is just right for you unless you are working for yourself and have ultimate control.

I have worked in an 8 man team writing a large java system and while there are different satisfactions to writing small systems alone there are different frustrations as well....

The search continues.

braid_ged
Wednesday, December 17, 2003

*  Recent Topics

*  Fog Creek Home