These days ,there are not enough coding works everyday, and I feel that it is not a good thing to a newbie like me, What should I do to improve my coding ability??
I'm assuming you mean that you're full time job isn't giving you a lot of tasks to work on. One thing you can try to keep testing out your programming abilities is try out Project Euler questions.
I suggest you to read good software development books, read blogs, do some code kata's and have fun experimenting with new technologies, languages or paradigms.
Check also these related questions:
This is what I do:
- Ask my team lead and/or manager for more work
- Read programming books and blogs about programming best practices
- Refactor and unit test legacy code
- Answer questions on SO
- And finally if there is a severe shortage of work with no hope in sight then I start searching for a new job
This is going to sound a bit mean, but if you're being paid to work a set number of hours then you should work that set number of hours, regardless of whether there is much programming work going on. I'm sure there's plenty of other work that needs to be done.
Failing that, read some books! All self-respecting Bloggers out there have their own "Undergraduate Computer Science Reading List" or "Top 10 Programming Books" or whatever. Go out, get those books (library if possible) and read them cover-to-cover. Once you've read a couple of books you'll be itching to try new things and get programming.
One of the questions that I believe all knowledge workers should ask themselves is the following one, proposed by Peter Drucker in "The Effective Executive". What can I do that will significantly affect the performance and results of the institution I serve? This question leads us to being truly productive employees. The task may be large or small, a programming task or something else, but once you start asking this question, you won't spend time on 'pet projects' unrelated to your company's goals.
If there is absolutely NOTHING officially that needs to be worked on at your organization you could:
- See if you can find something that needs to be done. Maybe you can automate a process that will save time and or reduce a cost. Either way its more $ toward the bottom line.
- Improve your own skills in such a fashion that will add value to your organization.
- Contribute to an open source project. The whole community, including possibly your organization, may benefit.
- Answer questions on Stack Overflow.
If your projects are often in some kind of blocking transitional phase (i.e. you are waiting for the design team to finish before you can do anything else), find some free/open source software project that would challenge your abilities and ask your boss for permission to work on it during idle time.
For instance, if your company uses some kind of open source CRM, or VPN gateway, or OS, or whatever .. they would benefit by giving a little of your time back to those projects and you'd become more intimately familiar with them.
If your self employed, then do the same, just forget the whole asking for permission bit. It helps boost your verifiable resume with actual code that potential employers/customers can see, keeps you sharp, exposes you to a larger peer review and you might even make some friends.
I agree, your paid to be there .. so contributing to open source helps your skills and your employer's image. Everyone wins.
Things I would do (in no particular order):
- Improve legacy code
- Write unit tests
- Watch some screencast
- Look at your software development process, is there room for improvement and how?
- now is the time to implement, because now you have time to do so.
- update documentation
- Improve my knowledge about the used technologies
- Learn new technologies and see how they can improve business