Wednesday, September 12, 2007

Let's begin...
I really want to share with you some thoughts about software development.
These are some "truths" that keep making their way into my experiences. Perhaps you have seen them too.
1) Keep it simple. The best architecture is like achems razor, i.e. "All things being equal, the most simple explanation is probably the correct explanation."
2) A language is just a tool -- a means to an end. There are many languages out there, and no single one is made to fit all problems. The language carries with it frameworks that are designed to solve specific problems. Find the right language for your problem domain.
3) Don't reinvent the wheel. If someone else has solved a problem or pattern, use it!
4) Admit what you don't know. Software is a broad, broad area. No one can know it all.
5) Keep up with your contacts. Your past associations are often your best resources for information, solutions, and (most importantly) friendship.
6) Understand the major design patterns. People often quote certain patterns in geeky conversations as if knowing the name of the pattern puts you in the "club". I have seen people list design patterns on their resumes. On close examination, they don't really understand them. Don't be one of those guys.
7) Learn the business domain. Just applying software principles to a problem may be enough to solve the problem, but it doesn't add value to your resume. Develop your expertise in the business itself. You will find that it will lead to more consulting situations over time than just knowing how to code.
8) Learn to code. Don't fake it.
9) RTFM. Documentation is done for a reason. You are better off spending some time learning the background information about your problem than just by looking at the code.
10) Contribute to the industry. You have an obligation to add to your craft! Develop your expertise and share it through publications, technical associations, instruction, etc.

No comments: