Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Being a student in a small school, there aren't a lot of people (well, there aren't any) that share the same passion or skill of programming that I have.

I have been learning to program myself since the age of 9, and I believe I have reached the level where I am ready to do something more ambitious, as opposed to the little scripts and personal web design I do at the moment.

The point is: would having a small group - or just another person - allow us to achieve greater things? If so, how would I begin building a team?

share|improve this question

closed as off-topic by MichaelT, Bart van Ingen Schenau, World Engineer Apr 19 '14 at 23:31

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 5 down vote accepted

would having a small group - or just another person - allow us to achieve greater things? If so, how would I begin building a team?

While a lone developer can no doubt achieve great things, having others involves helps a lot. In your situation, it's worth considering that your team doesn't have to be completely made up of programmers.

Programming is a tool to solve problems, often this is to speed up things that would take an age to do manually. If you want to do something useful, you need a problem to solve. Your ideal first team member is someone who has knowledge of a problem.

For example, if your school had a paper role-call/register system and you wanted to reduce the admin work involved in collating records by creating an electronic role-call system, you will benefit from working with a teacher (who uses the existing system) and/or an admin assistant (who collects the paper copies and files them together).

You can have all the programming knowledge in the world to no effect if you don't understand the problem and design a useful solution! It's important not to undervalue input from non-programmers; they may not write any code but their input is often every bit as vital as yours.

Of course, additional programmers means you can write more code in less time, but often a team benefits from having a diverse membership, rather than lots of people who are all good at the same thing.

share|improve this answer
+1 "all the programming knowledge in the world to no effect if you don't understand the problem and design a useful solution" – GlenPeterson Nov 17 '12 at 15:15

It's very unlikely that you get the people you need in your direct vincinity. I don't know if you already heard about this strange new thing called "internet", but supposedly this is a great place to join or start fun projects, get feedback and find out if you're more team player or a lone wolf programmer. You may learn a lot about communication, responsibility, team dynamics, user requirements, build management, project structure, revision control systems, etc. True, it's still a better experience if someone sits next to you, but amazingly there are things like Skype or Google Plus Hangouts where you can actually see and talk to the person behind the nick. I'd suggest to join a few projects first instead of trying starting your own right away - this would probably a disaster without more experience.

share|improve this answer

@Matt made a great point that the Real World doesn't judge you on these skills, but rather on how you use your skills to solve real world problems. He also brought up diversity, but I would make the distinction that you should seek to align yourself with one or more non-programmers with a totally different skill set from yours if you want to make a difference in the world. Whether that person is a philanthropist, scientist, political pollster, or genius in another area will be influenced by your moral imperative for your life and the luck of who you meet that inspires you.

In terms of working on something bigger, there are plenty of huge open-source projects out there that need a great programmer. Think about what kind of programming you like most - algorithms, drivers, web... and choose a big open-source project like OpenSSL, the Linux Kernel, the Spring framework, or OpenOffice. Actually, I'm not sure that Spring will stand the test of time as well as my other two suggestions. Look into some of the newer frameworks like Play. Anyway, those are big projects.

I recently read Steve Yegge's Platform Rant and it totally sold me on the power of services. Look how many projects turn into something other than what they were designed to do? Facebook is more a platform for games than a way to meet your professors, Amazon is becoming more influential for its AWS than for selling books online. Amazon's AWS is a market leader in "cloud" hosting because they took the service infrastructure they made to sell books and made it public. Making your project extensible leaves it open to morph into something else.

You may also want to consider the license when choosing open-source projects. I personally favor Apache-licensed projects (even though I just recommend 2 or 3 GPL projects) because I can use them, unencumbered, in my proprietary source day job. But I'd rate a good project higher than the license.

If you are at the top of the heap in terms of coding, college is a good time to challenge yourself socially. And by "social" I mean getting involved in a volunteer organization, not getting intoxicated "socially." Volunteer organizations (a band, a soup kitchen, etc.) have all the interpersonal challenges of business organizations but in a more emotional and less competitive atmosphere. I felt my experience with band dynamics made the whole corporate politics thing much easier to navigate. Also it's important to understand what motivates people besides money. The power of an interesting project, or belief is not to be underestimated.

Finally, if your school isn't challenging you, then you might not be in the right school. For maximum learning, you should really be in a place where at least half of the people are smarter than you. I would consider a transfer, or trying to test-out of some courses to get to a good grad school sooner. Stanford has cranked out more CS greats than I can count, but MIT and others are really good too. I've recently been enjoying some online courses like Martin Odersky's Functional Programming in Scala course on Coursera, or the MIT Open Courseware Algorithms course. As @Landei suggested, there is stuff out there if you look.

share|improve this answer
+1, thanks for your advice. As for going big - I don't think I am quite prepared for a lot of those suggestions yet - and I'm afraid moving schools is not in my control :P – tmewett5 Nov 17 '12 at 15:54

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