They say every day is a learning experience. I continually repeat that to myself after every hitch or problem I come across during the development process. There have been times I have held my head in my hands and asked why I ever decided to purchase a computer. However, in the end it always works out and everything is back to normal.
So I would like to go over five of the most important ideas, concepts, or general programming tips I have learned over the years, and how they have helped me along the way.
1. Browser CSS inconsistencies
Every browser has its own way of causing you pain until you learn how to cater to it’s needs. Anyone that has touched CSS knows that Internet Explorer (though IE7 is an improvement) is a nightmare when it comes to CSS. The list of CSS hacks to make everything display perfectly between browsers is longer than the Bible, so it is tough to learn what they all are and how to use them. After creating enough layouts though I have realized that the style sheets I am creating are cross-browser supported (in Firefox, Safari, and IE at least) without requiring any hacks. This comes from continuous practice, heartache and tears. If I had the knowledge I do now in CSS when I started, I would have had a lot more fun with creating my earliest sites.
2. Why I would end up preferring PHP over ASP.NET
I learned development in PHP and nose-dived into .NET soon before I took on an Application Developer position at an advertising agency (Planit) in Baltimore. I absolutely loved developing in .NET due to the massive library that is embedded in the language, the Intellisense support, and the tight integration with Windows IIS. This passion soon died when I went solo with Riddle Brothers and had to convince customers that the $20 extra each month for Windows-based hosting was advisable, and that their SQL Server license costs were worth the money over MySQL. Then I soon started finding out that the different Web hosting companies limited certain functionality of .NET such as .DLL support and COM installations. Even the explanation is confusing!
When I jumped back over to LAMP (Linux, Apache, MySQL and Perl/Python/PHP) I welcomed the ability to just upload a site and be done with it. No more configuring the Web.config file, verifying the IIS version, and hoping the hosting company allowed me to use a custom module. Of course there are problems with LAMP configurations as well (I hate compiling applications on Linux), but I will deal with these problems any day over the .NET horror.
3. The YUI library
YAHOO released a library some time ago that makes JavaScript development enjoyable. Yes, I used “enjoyable” and “JavaScript” in the same sentence. From animations to Asynchronous request the YUI library has it all. I went through about 5 other frameworks (including Dojo, Scriptaculous, jQuery) which all have their advantages, but I felt the Yahoo library had the most extensive features. Not to mention their developers are continually updating the framework so there are always new functions to play with!
4. Zend Framework
Great, another PHP frameworks. There are so many PHP frameworks for database, templates and security it is overwhelming. Why do I love the Zend framework? Well, since PHP3 the language parser was created by Zend so the developers obviously know the language. It is a personal preference, but I also feel that the ease of use for the framework makes it the best choice for developers. Just upload the entire system and include whatever module you will be using, and you’re done.
5. Great programming practices
To some people programming books are dull and boring, but you should follow their suggestions. One of my favorite books is Code Complete: A Practical Handbook of Software Construction. No matter what language you develop it, you must read this book. It covers everything from testing to estimating to commenting. Anything you want to know about general development practice is in this book. I pretty much live by the book’s recommendations - so much that my little brothers says I “comment like a textbook”. Great programming practices not only make it easier for other developers you are working with, but it makes a defined system of how your code is built between the many sites you develop. Consistency is a great thing to have when you are working on more than one project, and good practices will give you the groundwork to create a usable, streamlined system of your own to build over time.
If you are a beginning developer or have not heard of some of the items I mentioned above I suggest taking some time to check them out. These are a few of the many concepts I have learned from over time and now use them with most of my larger projects. Experience is the best way to learn so be sure to try out new systems and ideas whenever you can.