I have worked in a variety of environments, often in leadership roles and always learning from every situation.
Before Windows was prevalent, I built a DOS-based educational management system in Borland Pascal that loaded software from other vendors, ran lessons for students, then collected the scores for teachers to assess. Rules were implemented for automatically reviewing tough areas or advancing through easy material. Plowing through a variety of programming languages, such as C, BASIC, FORTRAN, and working with other developers on the team taught incredible lessons in multitasking, quick learning, and flexibility. Plus, wading through the plethora of Novell NetWare manuals taught me more than I wanted to know about networking.
Later, in a support role at a company that built clean rooms for high-tech manufacturing plants, lots of experience was gained by watching people in the field who used computers only for managing critical pieces of information--not something they really wanted to do! Synchronizing remote laptops, hooking up printers and fax modems, rebuilding an online job-scheduling web site, and installing the first video conferencing system were all part of the daily task list. I can't say learning Perl or ASP in the line of work was useful for anything more than giving me a greater appreciation of other programming languages!
Another environment involved working in a team of software developers on a commercially sold Windows application that gave new life to an antiquated telephony system. Having an actual separate test person in the group was a huge benefit to building a very solid application. This position taught a lot about several software development practices being used in larger corporations--and why they are so important. As a manager myself now, this experience has helped me build a more robust programming department.
Most currently, I have worked in the retail sector providing data integration services and extending functionality to a commercial retail management program written in Delphi, one of the last great programming tools for building native Windows applications. This position has had more variety and a steeper learning curve than almost anything encountered before. Every business does things differently, whether it needs to charge a second tax for certain provinces in Canada, process gift messages based on a flag in the line item, update a remote inventory database in real time, use a new payment gateway, provide membership management more seamlessly, or require custom-generated tracking numbers on a complex packing list report, retail is one of the biggest software development challenges I've ever faced. Sometimes a simple export to a web service is all that is required. Other times, a complex set of plug-ins, timed updates, and carefully formatted files can lead to confusion of the most astute. It's always fast-paced as retailers need new ideas implemented quickly!
