I'm in middle school at the moment and have been programming for about a year and a half. I mostly work with Python and Ruby, and am currently learning Rails. I know, you can never learn enough, it takes a looong time to master a subject, but I feel like I don't have much left to learn :(. I've learned many concepts in Python, learned basically the whole std lib and have written a ton of programs, same with Ruby. In Ruby I've also done a lot of metaprogramming. After I've learned all the concepts, and written a lot of programs, there is nothing really left for me to do! What can I do, now that I've learned all the concepts, and written some programs? I can't get a job working with real developers, and the programming camp I went to last year was far too easy.
|
closed as off topic by gnat, Thomas Owens♦ Apr 8 '12 at 21:48
Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined in the FAQ. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about closed questions here.
Not to go off topic here but there is no way this is true. In fact, there's a psychology term for what you're likely experiencing it's called the Dunning-Kruger effect. It has happened to every programmer at one time or another--you greatly over estimate your abilities when you're newer to something (whether in general or for a specific framework/language/concept)
If you don't believe this is true--think back to all the times years ago when you thought there wasn't much more you could learn, and how much smarter you are now. Take a deep dive into computer science; find out what you really don't know. This field would not exist if it could be mastered by a middle-school student in a year. Unless you're an algorithms, relational database/ORM, and web development genius then there is plenty for you to learn. |
|||||||||
|
|
This question reminds of the time I picked up a copy of my first MMORPG (WoW). When I first loaded up the game and began playing, I was blown away by the level of detail and the size of the environment I was in. First 10 quests were all in a starting area but it felt like a large, open world. When I left the initial starting area, I realized just how small that area was because the next quest area was 10 times bigger. And again, I thought, wow this is huge and awesome. But then I discovered there are multiple zones and game got so big it was taking a really long time to travel. But then you discover there are trains, mounts and other ways of transport and initial 2-3 zones now look really small. But wait, there are other continents and they are just as big as the one where you started. But wait, there are other worlds. I hate to bring you this news, but most likely you left the initial starting area and are now exploring zones 2 or 3. And the world of programming is almost infinite. It will scale much larger than WoW ever did. You've learned the basic language constructs and you've learned how to make calls. That's great. Your next challenge is to scale out. You said you've written a ton of programs. How big (lines of code) were they? Try making something bigger. Applications in the real world can be 10,000 to 10,000,000 lines. Try creating something useful and semi-polished that other people might actually find useful. What you will discover is there's a whole, higher level of skills that you need to master: software design. How do you organize your code so it remains manageable as it gets bigger? How do you organize your data or your classes? My bet is you'll soon find out that even though you feel you know how to code and you know ruby/python very well, you will find that your application will be increasingly difficult to work with. At times it will be hard to follow and add features to. Sometimes it might get so bad that you won't even feel like working on it anymore and then you might get disappointed that you didn't finish it and don't want to finish it. But that's ok, instead of getting disappointed, look back and evaluate what you have done. Think about why your code became difficult to work with. What would you have done differently? These are the best programming lessons that will make you a better developer. Your next large-scale app will be much bigger and cleaner but more than likely it will end the same way as your first app. You will learn more lessons and more ideas of what's good code and what isn't. These high level skills are true programming skills and they transcend programming language boundaries (i.e. when you pick them up, it'll make you a better programmer regardless of what language you choose to program in). After you do several projects, you will look back and realize how insignificant it was that you simply learned how to write Ruby/Python code. Anyone can write code. Learn to build applications. |
|||||||||
|
|
Take a look at unanswered questions here or on Stackoverflow tagged to a subject you think you know all about, like ruby, and try to solve/answer them. You will very quickly find that you weren't as good as you were thinking at all and at the same time find specific subjects pointed out to you that you do not yet master, which gives you something to do again, perhaps (probably) even a challenge. Another option: Think of a kind of program that requires a different approach than you have used until now. Maybe try to write a simple game (or if you did that, another type of game, RTS is much different from shooter or platform), or anything else you have always wanted to learn. lastly, you can always improve the way you code. Take a look at design patterns for example, or Software architecture. You've never seen it all, and the sky is the limit in computer science. |
|||
|
|
|
Few ideas other than quite common join an open-source project:
|
||||
|
|
|
I would consider helping with an open-source project, not only it can provide good learning experience, but it will look good when you're looking for a job. |
|||
|
|
|
You could try to study algorithms and data structures. As you know Python language, you could try this free online book, and this one. Another interesting topic is game development. There are Pygame tutorials and this book about it. There is always a lot to learn! |
|||
|
|
|
You could spend some time on projecteuler.net to expand your knowledge of mathematics. After learning how to use databases, create basic GUI and network programs, and how to program with threads and processes, then the next step is to expand your mathematics knowledge along with data structures and algorithms. You could also spend some time studying discrete mathematics, it is very helpful for computer programmers working on non-trivial projects. |
|||
|
|

