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.

I am a senior in high school planning on majoring in Computer Science in college. I have been programming for a number of years. However, I have no idea how I stack up to professionals. What would be a way for me to measure my skills in specific languages? I currently use Java, C#, Ruby, and C.

share|improve this question

closed as too broad by gnat, ChrisF Sep 25 '13 at 8:11

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

6 Answers 6

up vote 15 down vote accepted

Try answering a few questions on StackOverflow. You'll find out soon enough. On second thought, never mind. I can't answer most of the questions on StackOverflow.

Don't compare yourself to others. The only real metric is "Do I have enough credentials to land a job." The rest is just a continuum of learning. Everyone's skill sets are different. Just keep learning.

As to whether or not you have good skills in a particular language, try building a non-trivial, working application. You can judge the quality of the application a number of ways:

  1. Is the code clear, concise, and easily understood by others?
  2. Is the code testable? Can I write unit tests against it?
  3. Is the code maintainable? Can I easily modify it without breaking things?
  4. Does the code follow sound design principles and methodologies?
  5. Is my application easy to use by others?
  6. Does the code perform well?

And so on.

share|improve this answer
    
I guess that would have been a better question, I am mostly thinking if I have enough knowledge to land a job. I look around various websites and the credentials they want just seem crazy. I never see any openings for people with little or no experiance. –  mbreedlove Nov 25 '10 at 18:23
    
It would be better to have someone else judge those criteria. –  Barry Brown Nov 25 '10 at 18:23
    
@mbreedlove: There are never any openings for people with no experience (well, hardly ever). And yet there are many developers that got the experience and have jobs. Some of them worked internships, others developed a portfolio of their own software. Find out from them how they did it. Speaking for myself, it took a long time, I worked many other jobs, and eventually stumbled into a real developer position. I imagine that many other developers have done much better than that. –  Robert Harvey Nov 25 '10 at 18:28
    
You will need to compare yourself against others to identify those who are more knowledgeable than you, so you can learn from them. –  user1249 Nov 25 '10 at 18:46
1  
And, as for stacking up against "professionals", you wouldn't believe how wide a description there is for "professional". I've seen so many come out of college into the corporate world and be worthless because they couldn't think through a problem. They got into programming for a degree, not because they enjoy it. If you love it you'll have a desire to improve, which I think you've already demonstrated. Keep it up! –  the Tin Man Nov 25 '10 at 18:50

Join a team that does a real project. This is the best way.

share|improve this answer
1  
Do you mean join some kind of open source project? I've tried before but the code for most of the projects is just so enormous it is really hard to understand. –  mbreedlove Nov 25 '10 at 18:20
    
@mbreedlove join to any project you like ideologically, without considering its complexity, and do something you really want to do. Comparing yourself to another developers is not the key point if you want to become a good software developer. –  duros Nov 25 '10 at 18:24
    
@mbreedlove, ALL projects need improved documentation! –  user1249 Nov 25 '10 at 18:47
    
@Thorbjørn Ravn Andersen, how do I go about finding some smaller projects? The only projects I can think of are the huge ones, Mozilla, Apache, etc. All of which are so complex it seems if it would take me months just to understand. –  mbreedlove Nov 25 '10 at 19:00
1  
@mbreedlove, I can only speak for Java where there is many, many smaller projects. My best advice is to find one which you will actually use (or grow to use) and contribute to that - which third party projects have you used so far? –  user1249 Nov 25 '10 at 19:07

Programmer competency matrix has some ideas if you want a kind of ballpark to some degree.

There are various high levels pieces to a program. How well can you break things down? How well do you understand various layers that exist within using abstract constructs and ideas? These are some of the things that the matrix addresses by putting things into a few levels that may help determine what you know well and what you may want to consider studying.

share|improve this answer
    
would you mind explaining more on what it does and why do you recommend it as answering the question asked? "Link-only answers" are not quite welcome at Stack Exchange –  gnat Sep 25 '13 at 8:24

Wikipedia description :

SPOJ (Sphere Online Judge) is an online judge system with over 100,000 registered users and over 10000 problems. The solution to problems can be submitted in over 40 languages including C, C++, Java, Python, C#, Go, Haskell, Ocaml, and F#. SPOJ has a rapidly growing problem set/tasks available for practice 24 hours/day, including many original tasks prepared by the community of expert problem setters associated with the project. SPOJ allows advanced users to organize contests under their own rules and problems. It also includes a forum where programmers can discuss how they can solve a particular problem.
Apart from the English language, SPOJ also offers its content in Polish, Portugese and Vietnamese languages.

Wikipedia description :

TopCoder is a company which administers contests in computer programming. TopCoder hosts fortnightly online algorithm competitions — known as SRMs or "single round matches" — as well as weekly competitions in design and development. The work in design and development produces useful software which is licensed for profit by TopCoder. Competitors involved in the creation of these components are paid royalties based on these sales. The software resulting from algorithm competitions — and the less-frequent marathon matches — is not usually directly useful, but sponsor companies sometimes provide money to pay the victors. Statistics (including an overall "rating" for each developer) are tracked over time for competitors in each category.

share|improve this answer

You don't need to test it, it will test itself.

When I got my first/current job, I knew I can't compare to anyone I was working with. So I simply did my best and hoped for the best. Turns out I managed to prove myself - or so I was told/shown in different ways. Whether this is true or not, I can't really say objectively.

Just do what you do best, and sooner or later you will get feedback, whether you want it or not:

  • People will seek your advice
  • You'll get more responsibilities (e.g. increasingly larger features to code)
  • You'll (hopefully) get more money
  • You'll be asked to salvage a failing project (which can be a bad thing:))
  • etc...

or

  • You'll get boring tasks no one else wants to do
  • No one will ask you anything, you'll just get a task and be expected to do it without discussion
  • No raise
  • etc...

Having said all that, always try to surround yourself with people better than you, if you can. Don't ever miss an opportunity to learn from other people, especially their mistakes! ;)

Also try to read some of these, I just started going through the list myself, and I can't recommend it enough.

Don't worry about your knowledge now, worry about how much you learn each day!

share|improve this answer

I completely agree with the already chosen answer. But just to add, if you just want some ARTIFICIAL metric on how much you know, just find some certifications on the languages you know and do a couple of mock tests. Other than that, I think that the best and most edifying way to test your knowledge is to have a conversation with someone who's already working in industry.

share|improve this answer

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