Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

With software products taking whole teams of people to develop, how much can one programmer accomplish on his/her own? In other words, could a single person write Photoshop, MS word, etc...? And if they couldn't, would web development be an area where one programmer could do a lot?

share|improve this question

put on hold as primarily opinion-based by gnat, MichaelT, Bart van Ingen Schenau, Dan Pichelman, Kilian Foth 2 days ago

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
I am not sure what is being asked here. If you have the mojo to develop a software you can certainly accomplish it by yourself - web or not. It may take some time, after all facebook was not developed in a day by MZ. –  CoolBeans Jun 7 '11 at 3:51
    
Take a peek at blitwise.com for single dev work. –  Michael K Jun 7 '11 at 4:09
    
Coder productivity varies very widely. Some coders code 10x+ faster than others... –  Denis Jun 7 '11 at 23:19
2  
If it was a single devloper building, photoshop and ms word, they would be about 1/100 the size. I don't consider that a bad thing. –  JeffO Jun 7 '11 at 23:32
1  
It depends. :-) –  Richard DesLonde Jun 8 '11 at 0:25

6 Answers 6

Start small

Linux is currently much bigger than its first iterations, but the important thing is that it came out with enough stuff in it to gain traction.

Only if its worth it

I have the personal rule that big stuff is just worth doing if its fundamentally different to the rest. Otherwise you are diving into a red ocean.

Good to start, but not always sustainable

If your software is good enough you may want to get serious with it. Take for example Markus "Notch" Persson, creator of Minecraft. IIRC he started the game alone, and when the game gained traction he started looking for collaborators and even started a company.

While rewarding to achieve something alone, big projects fulfill their potential by developer collaboration, not a single genius, which takes me to my next point.

A myth

Check out The Myth of the Genius Programmer, a talk by Ben Collins-Sussman and Brian Fitzpatrick at Google I/O 2009. You should get all false expectations there. Main point I want to make here is that sometimes a single developer gets the credit for the whole thing, while there were more people behind.

Its definitely possible

Another example, aside from Linus Torvalds, is John Carmack. He ported Wolfenstein in just four days when EA had estimated a full team for two months.

It is not the ammount of code, its the architectural and technical knowledge that lets you achieve big things with less code than you would expect.

Given the skill and knowledge (beyond average level) you can make lots of work feel like little.

share|improve this answer
7  
+1 IMO, Linus doesn't have shit on Carmack. His stuff is the stuff of legend. –  Steve Evers Jun 7 '11 at 5:42
1  
whos stuff is the stuff of legend ? Linus or John. didnt get your slang back there –  Wildling Jun 7 '11 at 6:48
1  
@RYUZAKI: I guess @SnOrfus's comment is an entire question for the english stackexchange. –  Spoike Jun 7 '11 at 9:01
1  
@RYUZAKI - John has the stuff of legend, in SnOrfus comment. –  Slomojo Jun 7 '11 at 10:03
1  
Did Carmack get the 2 months' full team salary for his 4 days' work, or just a pat on the back? –  Andrew Heath Jun 8 '11 at 1:44

Due to the nature of the work I'm doing, I've developped a couple of pretty large applications all by myself. So yes, it's doable. I could go on about this for hours but haven't got much time now so here are some pros and cons from personal experience.

Pros:

  • you're in full controle and there's no team to fight with, so you can go with what you think/know is best. No wasting time in endless discussions about a tiny little aspect in the code.
  • you have the whole architecture in your head, know literally everything about it, customer support is a breeze since you know all the answers yourself
  • you learn a lot about all aspects of programming. Low-level, mid-level, high-level, user interface, ...

Cons:

  • no team to fight with, so sometimes you take bad decisions without anybody telling you
  • it's easy to get lost in it, not seing the big picture anymore. And there's no one that can help you. (except SO/SA and the likes :])
  • spending lots of time on customer support that you would rather spend on programming
share|improve this answer

With some dedication and skill a single person can definitely achieve a lot. It isn't easy however, just being a good programmer isn't enough. For a successful project you often have to think about use cases, user interface design, documentation, support and much more. Once things get rolling and user numbers grow doing it all single-handedly will increasingly become unrealistic - that's the point where either more people get onto the project (via community participation, hiring people or otherwise) or the project dies.

share|improve this answer

It depends on the software that he/she is trying to develop, time constraint, and the skills . If he/she is developing a simple MIS application its very possible that he can do it at a short time. Trying to develop a software as complicated as Photoshop, MS Word, Blender, Flash, and etc its possible but it takes long time and it has the most basic function and the features are simple.

share|improve this answer

Its all dependent on skill, time spent, and willingness to do it. The more knowledge you have the less time it will take to accomplish something. You will get an extremely intimate knowledge of the codebase as the sole developer which can also speed up the process of figuring out/refactoring/debugging.

I've personally been working on a desktop-to-server transfer application. I've coded the server application, desktop application and tested it all myself. I've written the installer for the application even. I figured out a way to allow drag and drops onto system tray icons in Windows and even wound up writing a new Java library from scratch. I did this over the course of a year and its still under development and testing.

This entire project has been a one-main ordeal. Everyday after school I've worked on the project as well as weekends. Is it as massive as MS Word, Photoshop, etc? Nope. The project is still large and ever growing though and it is possible to achieve a lot.

share|improve this answer
    
See that's what I was wondering... it may take longer but since you would know what all the code does it would probably be easier to debug. And a great learning experience. –  fender1901 Jun 7 '11 at 4:20
    
@fender1901 Well programming should constantly be a learning experience, the day it isn't is when you either know it all or need to find a more challenging task. –  Glenn Nelson Jun 7 '11 at 4:39

I'm currently working on such a project myself in my free time (it's a web application, not a desktop application, but the principles are the same). Here's what I've found so far:

1) Don't reinvent the wheel. Use existing libraries/frameworks, rather than doing everything from scratch. One caveat here: make sure you pay attention to licenses as they apply to your desired distribution/release/whatever model. Some copyleft licenses will require that you open-source your "derived work". Some licenses allow non-commercial use only. Keep track of the libraries/frameworks you use so that you can provide appropriate attribution in your "Credits" screen/area/whatever

2) Work iteratively. This ties into what dukeofgaming said with "Start Small". You're much more likely to stick with a project if you can see results. Until you can see something working, any development you do is the equivalent of painting in the dark.

3) Don't be afraid to ask for feedback/help early on. Chances are, you're not good at everything. If you're great at the lower-level nitty gritty of coding, you probably suck at UI. The converse also applies. It never hurts to get advice from those who are better than you in a certain area. Many folks will avoid this because they're worried about someone stealing their idea. Don't worry about this - if someone tries to copy you, it means that you're onto something worthwhile. Ideas are cheap, implementation is key. Apple didn't invent the MP3 player, Microsoft didn't invent the operating system, Facebook didn't invent the social network, and Google didn't invent the search engine. What they did was make it compelling for users (and not suck).

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.