Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

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

About your own project, in which way does it give you more improvement?

  1. Read high quality code in the same domain, implement your own.

  2. Write one project from scratch with your imagination.

My point is that it is not practical to write something like networking lib or graphic engine without knowing what other people did in the same domain.

share|improve this question

closed as off-topic by durron597, MichaelT, gnat, enderland, Snowman Jul 13 '15 at 15:18

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." – durron597, Community, gnat, enderland, Snowman
If this question can be reworded to fit the rules in the help center, please edit the question.

Your question is a little unclear and overly broad. Can you consider revising your question? – maple_shaft Mar 26 '12 at 12:23
up vote 8 down vote accepted

Let me list down my approach to learning something new. Theses are raw and generalized steps.

  1. Read little about what you are going to learn. You may not understand everything but will definitely create lots of questions in your mind.

  2. Get a some sample code (from multiple sources) read and understand it.

  3. Hack the code, add your stuff, break it , debug and fix it.

  4. Read again (what you have learned from step 1 ) try and implement whats in the book.

  5. Start with a simple application of your own, keeping reference of what you have learned from the practice. In this step you should code, code and code.

  6. Read more to get thorough with concept and usage.

share|improve this answer
yes, after reading a network lib, I find that lots of the concepts are common in other libs, while some are defined by the author. I have to read more. – upton Mar 26 '12 at 10:29

I would suggest the following from my own experience:

  1. Read high quality code across all domains. It's the style and motivations behind the code design that is important.
  2. Work on the project over a long period of time (like years). As your skill at coding improves, you will see the old problems in a new light. This makes your learning tangible. You remember how you used to think and notice how you think with your new information and your new understanding.
  3. Rewrite the project from scratch every 6 months or year. It sounds like a lot of work but it is very fast and very rewarding because you can see how much progress you have made.
  4. Get some great books and work through one every 3 months or so. My favorites are Clean Code and Pro C#. You can find awesome books by looking at Amazon reviews, Programmers SE or Stack Overflow.
  5. Learning is a skill, and a critical one for programmers. Get good at it and find ways of learning that work for you.
  6. For more practice (if you get bored of your project), got to Project Euler and solve problems.
share|improve this answer

Having your own project gives you the drive to learn and keep at it when things get rough. In fact, it gives you as much or more drive to learn than taking a class because (by definition) the goal interests you.

This drive will push you to do all the things ManuPK put in his answer and you'll like it because it'll allow you to get closer to finishing your project.

share|improve this answer

Most important requirement for learning is to have a concrete project to work on. One year back I was too confused about how to improve and try to code a great code in my first major project.

What I learned after researching a lot is code and just code with an aim in mind.

Another thing is try to follow coding conventions which exists in your choice of language. For example, in python world pep8 conventions are followed and I did the same. Don't ever think that let me code first and then I will worry about conventions. Conventions are there for your benefits, use them.

Learning to code is easy but learning to write proper and maintainable code is a must.

After some time (if you are in learning stage not on sharp deadlines) go back and read your old code again and there is lot of chance you will cringe at it or may want to improve it.

No code is perfect. Always try to refactor after writing a working code.

Always unit test your code because unit test brings out your mistakes very soon not when you have written so much code that it pains you to find out that small mistake.

share|improve this answer

Try to change only one variable at a time (ie: A new framework, a new ORM, a new work methodology).

As such you are proficient in one programming language, do as you would normaly do, but add a new element to it, like a framework. Next time, use the same framework, but add an other variable (like an ORM) and keep repeating.

Make sure to choose project that are not too wide, but not too small to make sure you can cover most use cases of your new element.

Treat every project as if it's a "pilot", this way you won't stay in your comfort zone and you will keep learning an improving.

share|improve this answer

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