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

I started programming lately(pre-final year of a CS degree) and now feel like there's a sea of uncovered treasure for me out there. So, I decided to cover as much as is possible before I look out for a job after graduation.

So, I started to read books (The C++ Programming Language, Introduction to Algorithms, Cracking the Coding Interview, Programming Pearls,etc ) participate in StackExchange sites, solving problems (InterviewStreet and ProjectEuler), coding for open source, chatting to fellow programmers/mentors and try to learn more and more.

Good,then what's the problem?? The problem is I am trying to do many things, but I am doubtful that I am still utilizing my time properly. I am reading many books and sometimes I just leave a book halfway (jumping from one book to another), sometimes I spend way too much time on chatting and also in getting lost somewhere in the huge internet world, and lastly the wasteful burden of attending classes (I don't think my teachers know good enough or I prefer learning on my own)

May be some of you had similar situation. How did you organize your time? Or what do you think is the best way to organize it for an undergraduate? Also what mistakes am I making that you can warn me of

share|improve this question

closed as off topic by gnat, Thomas Owens Jun 22 '12 at 11:21

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. 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 reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

Socializing is also important. You will benefit from your network later. – user1249 Jun 22 '12 at 8:52
Also learn the fun stuff while you can. Otherwise you will never get exposed to things like Haskell, Prolog or BrainF*ck. – user1249 Jun 22 '12 at 10:21
Ultimately, this question is about time management, motivation, and learning and not unique to software development. You may be interested in browsing through some questions on the Personal Productivity Stack Exchange as a starting point. – Thomas Owens Jun 22 '12 at 11:21
@ThomasOwens didn't knew there was one for productivity too, thanks – nischayn22 Jun 22 '12 at 11:26
can this question be migrated to productivity?? – nischayn22 Jun 22 '12 at 11:34

Don't forget to spend some time on communication skills, being able to write well and give a good talk are very useful.

That being said you don't need to learn everything in college (and you won't). You need to get the fundamentals down and understand how to learn. I promise you the specific languages that you are learning today probably won't be what you will be using in 10 years. But the general concepts of how to program will be useful

share|improve this answer
  • reading
  • programming
  • problems solving(for instance from project euler)
  • walking with friends(it will be great if they programmers too)
  • reading
  • reading
  • sleeping
  • walking
share|improve this answer
unfortunately very few (read as none) of my friends are programmers – nischayn22 Jun 22 '12 at 11:21
you can find friends here:))) – Zagorulkin Dmitry Jun 22 '12 at 11:22
+1 this list would be more useful to me if you could assign approx. times I should devote to each activity – nischayn22 Jun 22 '12 at 11:22
@nischayn22 if you really want to be a great programmer you should more read and more think. Every chapter in programming book you have to bind with real coding practice – Zagorulkin Dmitry Jun 22 '12 at 11:33
@ZagorulkinDmitry So true. When I started working, I've soon learned that theory is nothing without practice. – Oliver Weiler Jun 22 '12 at 12:34

Just remember, It's never to late to learn. Rule of thumb, focus on one program for a while you don't want to be confused between the different syntax and what not. C++ is awesome. Good luck to your journey.

share|improve this answer

I am actually at the same position as you.

What has helped me a lot is reading some of the books listed here

In particular: Martin Fowler's Refactoring, Feathers "Working effectively with legacy code", Test Driven Development by Kent Beck, Pragmatic Programmer and Clean Code are the best.

My personal learning process is:

1) Grab some these books and keep it always next to you. Every now and then read a chapter. These books are meant to be references/handbooks.

2) Find an open source project which deals with some of your interests. For example I'm interested in combinatorial optimization, algorithms etc.

3) When finding a relative project I try to apply what I read about in the above boooks (especially Refactoring and Legacy Code).

4) Every now and then read the answers in some popular question under a specific tag for example see this this and this

Code browsing and refactoring has helped me very much

share|improve this answer
most of these books are so costly, I have to download and read them as pdfs – nischayn22 Jun 22 '12 at 11:27
I borrow them from my university's library – Florents Tselai Jun 22 '12 at 11:28
I never searched these in there, hope I find them when I get to college – nischayn22 Jun 22 '12 at 11:29

I've also spent a lot time reading and researching when studying. While this is certainly benefical, even more so is learning all this stuff to accomplish something, i.e. learn those things to build something real (aka start a project). This will help you to focus on something and will keep you motivated.


What's really important: At all cost, finish that project!

share|improve this answer

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