Careers in Software Development
Careers in software development have evolved to be as diverse as any other profession. As little as 20 years ago, the average computer programmer held a degree in math, physics, engineering, or even biology. Early programming jobs attracted educated people with a wide variety of expertise. Fast-forward to today; career paths in programming have diverged and coalesced into specific job titles beyond the basic description "Computer Programmer." Colleges have created specific academic paths for specific software development career paths.
Any job containing the term technician usually implies work that requires application of existing technology with little room for innovation. A typical Config Tech spends the workday building projects programmed by other people in the company. Problems that arise during the build process are duly reported to the original authors. Config Techs are not expected to dig into code and solve problems. They do have responsibility for writing and maintaining build scripts as well as keeping current versions of production code up to date. Larger companies tend to employ Config Techs rather than smaller companies; high volumes of code require this type of expertise. A smaller company typically relies on the individual developers to build their own code. Many entry-level programmers accept positions as Config Techs in order to get established in the software industry. The position is sometimes viewed as a stepping-stone to more advanced programming positions.
In the evolution of software development, Web Programming is reaching adolescence but is far from mature. The array of tools has exploded in the past 5 years, along with the expectations of users and employers. To be precise, web site development breaks down into two very different career paths; design and implementation. A web site designer should be right-brained. Web site programmers should be left-brained. The two will rarely intersect. The web site design process calls for knowledge of human factors, color, layout, and graphic design. Such skills are not the purview of the typical programmer. Most software developers are not prepared to consistently create user-friendly web pages.
Web Programmers usually program in languages such as php, Java, C#, and python. Many other languages are also employed; the intent here is not to disparage any particular language or platform.
Embedded Systems Programmer
Commonly referred to as "low level" programming, embedded systems developers require a thorough understanding of the hardware/software interface.An embedded system might control a heart pacemaker, a vending machine, a fuel-injection system in a vehicle, or any of an innumerable array of products.An embedded system is tied to a hardware platform very early in the system design process, therefore the programmer is obligated to optimize the software based on the specified hardware.
An Embedded Systems Programmer usually works in assembly language, C/C++, or a proprietary language provided by the hardware vendor. Knowledge gained by Embedded Systems Programmers is usually not as portable as knowledge gained by other programmers. The intricacies and specifics of each hardware platform vary widely.
Database Programmers use database management systems such as SQL Server, Oracle, or MySQL to organize and manage information. Sometimes referred to as "back end" systems, these components rarely require a user interface. A Database Programmer may be responsible for massive and incomprehensible amounts of information. A career path in Database Programming requires design skills and knowledge of data management theory. In some cases the programmer may spend all day using a query language such as SQL; in other situations the programmer may be required to employ procedural languages to accomplish data management tasks.
Any program intended for the desktop of an end-user is a application program. Microsoft Word is a prime example. The line between web programs and application programs blurs more each day. The typical vanilla application program has a much better user interface because web-based apps are still limited by the capabilities of web browsers such as Firefox or Internet Explorer.
An Application Programmer develops algorithms, implements user interfaces, and interacts with databases. A modern application program also includes some type of interaction with the Internet; usually a connection with web-based applications that provide program updates or program data. Application Programmers are required to have more domain knowledge than typical database programmers. In larger companies, application programmers interact with database programmers and web programmers as part of a group effort. In smaller companies, application programmers may wear all programming hats.