Senior Software Developer For A Specialty Software Company
Job Title: Senior Software Developer
Type of Company: I work for a small computer company that focuses on networking for HVAC equipment in buildings. We have a service business to monitor the HVAC equipment in buildings and issue monthly engineering reports to the owner on operations and efficiency.
Education: B.Sc., Physics, University of Victoria, BC, Canada Ph.D., Physics, Stanford University
Previous Experience: I worked for two years as a post-doctoral student in Europe and later worked for 5 years for a software company doing computer speech recognition.
Job Tasks: I am responsible for designing, maintaining and configuring the equipment and software which collects data from a customer's site and sends it to our central database. In order to monitor the customer's equipment, we install a box on their site which collects the data and sends it back to our central office. Once an installation is done, we configure the data collection and the equipment "just works".
However, the customer's equipment will change (because of work they are doing), so we must continuously monitor the process. We have a weekly status meeting to go over problems and upcoming new installations so that everyone is aware of what is going on. When there are problems, I attempt to diagnose the them. Often this is routine, but sometimes it is a puzzle.
I am also responsible for various parts of the software which analyze the data we collect. The system and the code always being improved. I work with others to determine the requirements for the new software and then implement my parts of them. This involves trying to envision how the system is going to evolve in the future and picking apart the design to figure out the critical parts. There are usually 3-4 people involved in the design work.
Best and Worst Parts of the Job: The worst part is the daily/weekly grind of keeping our data collection system working smoothly. Because we connect to customer sites, we must deal with changes which are out of our control and there is always some site which is having a problem.
The best part of the job is creating something new. Sometimes this has to do with a new customer, such as creating a custom application for a special requirement. Sometimes this is designing and writing a new program which works well.
Job Tips: There are lots of computer jobs for people with specific skills (web designer, database programmer, etc), but there is also a need for generalists. My specialty is in analysis of scientific data. This is not something that is taught in computer science, but comes from physics or engineering. I do not have specific training in the type of engineering that my company does for customers, but in the end, knowing the math, basic physics, and data analysis techniques is really what is needed.
Get a good grounding in math, programming and some physics or engineering and there will be jobs available.
Additional Thoughts: I enjoy working in smaller companies that hire bright people, even when the actual work is not in a field that I consider myself an expert in. This kind of environment is stimulating and you can often learn what is needed easily if you have good basic skills.