A few months after graduating from college with a BSEET degree and working as a board-tech, I came to the realization that I liked working with computer software much more than computer hardware, and began making the transition into software development. Three years of SQA later, I landed my first full-time software development job, and the rest is history.
Most of my software development knowledge comes from samples, books/documentation, and from developing my own samples and software. I've had several "mentors" (more or less) that have shown what good software looks like, and how writing it correctly from the start can make all the difference in the world when it comes to enhancements, maintenance, and bug-fixing tasks.
I have also found code generators to be invaluable tools in the development process. When bugs or design problems are discovered or software changes are required, it is much faster, easier, and simpler to regenerate the affected code than manually make all the changes in the system. In fact, I have found code generation to be so invaluable during the development process that I wrote my own template-based code generator that can be used in nearly any software development project.
I've written several software articles that have been posted at
CodeProject.com.