I take requirements, perform analysis, design the software then code it. Then work with my client to maintain the software, that is, ensure it continues to operate properly and provide enhancements when needed. I have written applications that interface to hardware and control it as well as to data acquisition cards for collecting data from sensors attached to the target equipment.