How to become a good developer?
จาก Wiki2
I was asked through this blog how to become a good developers. I think this is the question that many beginners want to ask. For every question there are throusands of answers. Okay, there are many answers like these but these ones are mine. :)
Attitude
Most important thing is attitude. To get strong you have to get used with an idea that for every damn day you should learn many new things. You have to understand that you are part of world that changes very fast and the only way to survive it is to study, study and study again.
'Your attitude determines your altitude'. I am sure you must have heard that phrase. From a developer's context, this means believe in you, stop blaming others and adapt to changes without fretting. Remember that you always get what you want because you always want what you get.
Read the books
There are many great books written guys who have long experience on the field. Also there are many great books written by industry leaders. And, of course, there are too many books to read them all. Select books carefully so you don't waste your money. Read the books you got and think hard about what you have read. Is it all like this or do you have another opinion? How can you use new knowledge in your current or future task? What you made wrong in past tasks?
For guys who find books to expensive for them - there are public libraries where you can find books. Also you can check out Google books system and search for free e-Books. There are many great e-books available in internet and they are free.
Code! Code! Code!
To get a good practice write as much code you need. Try to be each time more effective than before. Study from experiences you have. Analyze the mistakes you made last time and try to find better ways how to solve these problems. Try out different features of language and platform you are using. Using different features of language you should usually write code using different patterns. This way you are improving your coding skills and also study many new things you didn't knew before.
I have seen a lot of developers having good amount of theoretical knowledge. They read a lot of books and technical material. However when it comes to applying that knowledge, they take a back foot. That is because they do not practice. Efficiency and effectiveness in your work can only be attained if you practice code. The only way you can make a good developer of yourself is to practice, and then practice some more.
Try out tools and utilities
that make your work easier. One part of your work is knowledge about how to make things work. The other part of your work is your development environment. Find out what features your IDE provides and look for utilities that extend it by great fetures you don't get out-of-box with your IDE.
Try out new technologies.
To stay on the track you should know about things that happened today or that will happen tomorrow. Take a time to discover new technologies and study new theories. Think about how you can use these technologies and in what context. Also try out how new stuff works and try to create something using it.
Look how other guys develop systems.
Take a look at open-source project to see how other guys build their systems. Go through the code and try to understand why they decided to do things this way and not the other. Of course, you can always communicate with authors of system if you think you have good advice how they can make their systems better.
Patterns & practices reflect technical guidance, technical problem domain and engineering practices based on real-world experiences. The process to learn it is gradual, but once done; it can save you a lot of time and efforts and enable you to work smartly. Follow a Code Design Guideline. Always use a code analysis tools that will evaluate and analyze your code.
Everything that shines is not gold.
Although there are industry leaders and veterans and their opinions matter they are just human beings like you and me. And they make mistakes - just like you and me. Of course, they are genial source of information but always use your own brain to rate the information you got.
There are also online information sources like discussion groups, chat rooms, forums etc. Before you believe what is said there - try out. If somebody thinks that this or that thing goes this way then don't follow these opinions blind. Try out if it is this way or not. But always use your brain to analyze information.
Participate in communities.
There are many communities for Microsoft technologies. You can belong to any open community you like. Communicate with people, help them to solve their problems and ask help if you are in trouble. Also be a member of local technology communities.
Visit technology events.
If it is possible visit technical events. There are many regions where are local .Net groups (by example INETA etc) wo organize events. Also try to visit events like TechEd and MIX. These events are valuable sources of information about new and coming technologies.
Read/Write blogs.
Simply subscribing to the ASP.NET article of the day has really been a huge help in getting to know what's out there. The framework is so large, there's almost always the right tool for the job, but you have to being aware that the tool exists before you can use it. Seeing the types of challenges other people are facing and the tools they are using also can really help you weed out what are the most effective solutions.
How many of us can remember everything? I cannot. So I document them. It helps me to reference stuff when I need them. Over and above, it also helps me get some good feedback from readers and shows me multiple approaches to do the same stuff. I have received a lot of feedback about my work, some good and some not so good. However, I do validate them and learn from this process. It develops the developer in you.
Visit the forums and help people.
Helping people not only gives you the opportunity to feel good about helping the community it gives you the chance to look at a large variety of problems faced by other developers and attempt to solve them.
KISS - Keep Implementations/Approaches Short and Simple.
Do not over complicate things by using jargons, which people find it hard to understand. The key is to simplify your designs and avoid over-engineering things.
Consistency is the name of the game
Do you hop jobs too often or are bitten by the 'salary' bug? If yes, then it’s time for you to sit down, relax and plan. Invest time in thinking and let your decisions not be spontaneous. To move ahead, you need a solid foundation and that comes with consistency.
Okay, these are my nine points that I would suggest if somebody asks me how to become a good developer. If somebody feels like this list needs corrections then please drop some lines to comments sections :)
At the end, just remember that you are not going to remain a programmer for ever. So once you are satisfied and get a feeling that you have proven yourself as a good programmer, it’s time to re-program yourself. Expand your interests. Development is just a part of the process. Understanding the users and business is in itself an art, one should aim for and should master over a period of time.
