By the way, from personal experience project manager isn't really a technical position (though it might be occupied by a technical person).
I agree. I have a friend who took a few programmer analyst course in college who went on to become project manager and he does very little technical work, if any. Mostly just making sure milestones/deadlines are met.
Software architects wouldn't likely be as technical as a senior developer either, though. I would expect very little mucking around with server configurations, or even implementations, writing unit tests, etc. Mostly just dealing with refactorings (determine how to best achieve a result -- not actually having to actually carry that task out), determining best practices, focusing more on the framework and interfaces than the code base.
Senior developers I would say are anyone with a few years experience (5+ years in the same company) who are thouroughly familiar with the codebase, quirks and caveats. They lead junior developers as subordinates and report to project managers but more likely architects.
Junior developers are code monkeys. They do little but write code and complete tests. They are not responsible for API's or anything they just code to an interface focusing purely on implementation which might then be reviewed by senior developer to ensure conventions, standards and security requirements are met.
Project managers speak to upper management and relay messages back and forth between architects/senior developers.
If marketing steps in and requests a new feature, the architet would assess the request, and approve or disprove depending on time, budget, etc. The architect might then sit down with senior developer and ask for his estimate in time, possible ramifications, etc.
Togather they might decide whether the feature is possible or not.
I would personally organize a company this way:
- 1 or 2 architects
- 2 or 3 senior developers
- Any number of junior developers
Of course the above numbers will change depending on size of the project. I've personally managed a 80k line peice of software entirely myself. That is about as big as I would want to go as an individual. Any larger and things would have been really messy. If a project were larger, I would split it into two or more separate projects with their own architects, developers, etc. Maybe having one architect managing multiple junior architects.
I'd probably scrap the project manager unless the organization (not the project) was large enough to absolutely require one...if software architects were truely not business savvy enough to speak to those with vested interest in the project that is.