The median annual wage for computer programmers was $108,530 in May 2021. Employment of software developers is projected to grow 15 percent from 2021 to 2025, much faster than average. Software developers also need skills related to the industry in which they work. Developers working in a bank, for example, should have knowledge of finance so that they can understand a bank's computing needs. In fact, many students gain experience in software development by completing an internship at a software company while in college.
Network Analyst, Network Engineer
Sometimes referred to as a Network Support Engineer. The role sometimes overlaps with Network Architect roles. Typical responsibilities / skills: work with a variety of types of networks including LANs, WANs, GANs and MANs; determine network capacity requirements and ensure that the infrastructure can handle it; monitor and administrate the network; troubleshoot problems. Depending on the size of the organization, a person in this role might also setup, install and configure all types of hardware, from servers and printers to desktops and laptops, routers, switches, support internal network users. Non-standard work hours are a possibility. Salary range: $ 58-124K.
Depending on the size of an organization, this role can overlap with that of other network specialists. Typical responsibilities / skills: design internal and intra-office networks, including physical layout: LAN, WAN, Internet, VoIP, etc.; monitor network usage and performance, devise network tests and evaluate them; incorporate any new business requirements so as to upgrade overal network architecture; do any necessary cabling, routers, and install and configure hardware and software; follow or recommend a budget for projects; choose or recommend the appropriate network components; sometimes report to a CTO (Chief Technology Officer). Network Architects usually have five or more years of experience as a Network Engineer, and supervise various other engineers in implement a networking plan. Besides a Bachelor of Science degree, depending on the employer and the specific role, sometimes an MBA in Information Systems is required as well. Salary range: $ 78-156K.
Network Security Engineer
Typically responsible for network and server architecture; implementation, admin, upgrade of hardware and software, e.g., firewalls, etc.; enforcement of security policies set down by either the organization’s Network Architect, Network Security Administrator, or similar position; monitoring and analyzing network usage for security issues; troubleshooting network problems; contributing to the selection of new technology and/or upgrades; contributing to the documenting of systems and processes; providing technical support for IT coworkers. Certification may be required. Knowledge of computer telephony technologies such as VoIP may be required, along with an understanding of relevant compliance issues. May require some physical effort, for cabling and installation work. Salary range: $ 99-131K.
Systems Analyst, Systems Engineer
This role is sometimes referred to as a Computer Systems Analyst, with duties that might overlap that of an IT Project Manager, if overseeing installation or upgrade of computer systems. This role typically analyzes an organization’s computer systems and procedures; makes recommendations for process improvement; interacts with partners/ vendors and with programmers or programmer / analysts. Educational background might be technical, though this is more of an analytical than technical role that is focused on the business aspects of technology, including: analyzing the cost of system changes; the impact on employees; potential project timelines. Needs to interact with department managers on IT requirements; incorporate feedback from both internal and external users into business requirements documents; incorporate feedback from designers; contribute technical requirements; advise technical teams on their and their technology’s role in the organization; provide guidance to programmer / developers with use cases. Salary range: $ 50-108K.
Typical responsibilities / skills: analyze wireless networking and communication requirements; design and develop network infrastructure; capacity planning; recommend system improvements; document necessary processes; develop any necessary software such as drivers; monitor systems use and performance; setup and run wireless network tests. A senior position might lead a team of junior and intermediate engineers. Salary range: $ 46-125K.
Sometimes has overlapping duties with Database Programmer, Database Analyst and Database Modeller, and may report to a Database Manager and/or Data Architect. Typical responsibilities / skills: maintain an organization’s databases; design and implement databases, in coordination with a Data Architect; schedule and run regular database backups; recover lost data; implement and monitor database security; ensure data integrity; identify the needs of users and provide access to data stakeholders, data analysts and other users, as necessary. DBAs can have broad or specialized duties. E.g., divide tasks up: System DBA upgrades software for bug fixes and new features. Application DBA writes and maintains code and queries for one or more databases in an organization. The role may require certification. Salary range: $ 63-126K.
Data Warehouse Developer / Analyst
A data warehouse is a repository that combines data from several sources, internal and external, within an organization – e.g., sales and marketing – and is used for trend reporting. Typical responsibilities / skills for a Data Warehouse Developer: interact with business analysts to understand the necessary business logic; follow standards and procedures for databases set down by a Data Warehouse Manager; design and create databases for the purpose of data warehousing; design and run ETL (Extract, Transform, Load) procedures to extract external data and load into a data warehouse; test integrity of data warehouse; write and maintain any code necessary for data warehousing tasks including report generators. This position may require experience with specific 3rd-party applications, and often overlaps with Database Developer duties. Salary range: $ 60-133K.
Typical responsibilities / skills: data management and administration, data modeling, data warehousing, investigate data integrity issues; devise and conduct data tests for integrity, and follow an action plan for any necessary recovery; document access of specific databases for developers in other departments; work with logical and physical models of data; understand principles of distributed data, data redundancy; incorporate database updates as per stakeholder requirements; produce reports on analyzed business intelligence data; write database queries and complementary computer code to support internal applications, and which are possibly shared with developers in other departments. This may require knowing “back end” programming or scripting languages such as Java, Ruby, Python, Perl, etc., as well as knowledge of both traditional RDBMSes (Relational Database Management Systems) and newer NoSQL databases such as Cassandra, CouchDB, MongoDB, Hadoop and others. The role tends to require specific commercial database system experience, experience with database performance tuning and troubleshooting, and may require some forms of certification. Salary range: $ 73-134K.
Typical responsibilities / skills: creates the Conceptual Data Model representing an organization’s data requirements for various business processes; produces the plan for building the Logical Data Model(s) from the conceptual model. (The physical data model is the actual implementation (database) where data will be stored.) Data modeling (aka database modeling) covers business requirements for databases and is an organic process, so this role also requires adapting a database to business requirements changes. Salary range: $ 76-134K.
Depending on the size of an organization, this role can overlap with that of over database specialists. Typical responsibilities / skills: provide a data architecture for an organization’s data assets, including databases, data integration (combining data sources into one view), data access; define the formal data description, structures, models, flow diagrams, and overall metadata; enable stakeholders to manage their portion of the databases or data warehouse, under guidance and data access policies; have logical and physical data modeling skills, whether they’re used in actuality or to oversee a Data Modeler’s efforts; defines data warehouse policies including for Information Assurance. The role usually requires senior experience as a Database Developer/ Analyst / Engineer. Salary range: $ 111-153K.
Data Security Analyst / Information Security Analyst
Typical responsibilities / skills: determine security risks for an organization’s computer systems, databases and networks; monitor external activity; install and configure security-related software (firewalls, encryption); understand compliance issues related to security, especially for a publicly-traded organization; make recommendations to management for security policies and procedures; design and run penetration testing (simulation of attacks); keep abreast of new attack techniques and implement means of preventing these. Salary range: $ 61-137K.
Typical responsibilities / skills: produce the overall design of new software or modules based on requirements passed down; produce flowcharts, algorithms and anything else necessary for the actual coding. Junior developers might start out by maintaining (debugging) existing code / features rather than design new code. If code in an organization is not done separately by Computer Programmers, then it falls to the Software Developers — who might also do testing and debugging, or work with teammates who do that work. Salary range: $ 80-127K.
In government positions and some more established corporations, Software Engineer and other IT positions are often divided into Levels indicating experience / rank. Each higher rank incorporates more responsibilities for the role. While there is a theoretical technical difference between a Software Developer and a Software Engineer, many organizations use the term Engineer when they mean Developer. True “software engineers” are certified by an engineering board. While a Software Engineer creates/ tests/ documents software just as a Software Developer does, the former is more likely to also optimize software based on their technical, mathematical and/or scientific knowledge. They produce more reliable software through engineering principles. The salary range listed here covers any use of the title Software Engineer. Salary range: $ 61-160K.
Typical responsibilities / skills: focus might be on middleware applications; interact with business analysts to understand and incorporate customer and business requirements; understand the SDLC (System Development Life Cycle); follow design specs and programming standards for coding applications; develop and test application-specific software and modules; interact with quality assurance specialists. Possibly requires experience with multi-tier environments. Requires an understanding of specific programming/ scripting languages and development frameworks, and possibly specific database packages. Salary range: $ 69-137K.
Mobile App Developer
This covers multiple related roles which require knowledge of at least one mobile operating system and development platform, such as Android or iOS, and the underlying programming languages. In some roles, Mobile Web development skills are a requirement. Typical responsibilities / skills: design, write and maintain mobile application code; port features for an app from another platform (such as desktop, Web, phone, tablet, wearable computing) to the mobile platform in question; integrate databases (internal) and REST APIs (internal and external); produce API components as necessary and document usage for other developers (internal and sometimes external); devise and run code tests in simulator or hardware; work with Quality Assurance staff for additional; testing log and fix defects. The role can sometimes require design skills for a front-end position. Salary range: $ 100-144K.
ERP Technical Developer
Typical responsibilities / skills: understand the SDLC (Software Development Life Cycle); interact with business teams to understand requirements; analyze technical problems in ERP configurations and assess risk; write any necessary code for extending an ERP platform’s features, or to integrate with an organization’s applications. This position usually requires experience with a particular ERP solution and with one or more facets/ modules. Salary range: $ 94-130K.
IT Project Manager
This is a broader role than for an Applications Development Project Manager and may not require as much of a technical background. Project Managers should have at least an understanding of — if not experience with — the computer systems or software being built / maintained. Responsible for defining, maintaining, and enforcing a project schedule; updating schedule when requirements change or project facets become overdue; keep projects on or under-budget. Other responsibilities and requirements: understand Agile development process (where necessary); run scrums; interact with multiple departments and many levels of co-workers, and convey to them the importance of their respective stakes while also keeping technical resources such as developers goal-oriented; update management on the status of projects, bottlenecks, requests for resources. IT Certifications such as PMP (Project Management Professional) can increase opportunities and salary. Salary range: $ 56-135K.
The focus of a support tech’s work is interacting with non-IT users, whether internal to a company or external. One group of technicians may support internal users of 3rd-party software, while another group may support internal and external users of company software. Responsibilities include being familiar with the software, hardware or systems they support, including keeping up to date with both new and retired features; knowing where to find the answers to questions that come in to the help desk; possibly contribute to a repository of FAQs (frequently asked questions). Salary range: $ 49-140K.
CRM Technical Developer
Most CRM (Customer Relationship Management) software has both internal and external (Web) components. Users can be internal (sales staff, support, admin, systems developers) and external (customers, vendors, partners, researchers). These are the users a CRM Developer needs to keep in mind when developing solutions. Typical responsibilities/ skills: experience with a specific CRM system; custom configure a CRM used by the organization; develop custom modules to extend CRM functionality; integrate CRM features into an organization’s own computer systems, including for customer use – which requires experience with a programming or scripting language, and either server, desktop/ laptop, Web or mobile (phone, tablet) development experience as necessary; document custom settings, modules and features for different levels of user. Salary range: $ 89-119K.
This role usually requires a technical background and leads a technical team, which could consist of developers, testers, analysts and more – whether or not the organization is technical. Typical responsibilities / skills: oversee the technical aspects of internal projects; maintain corporate IT procedures, with documentation; hire and lead a technical team to support the procedures; manage resources within a budget; keep up to date with new technologies, for recommending possible internal upgrades; interact with various departments, vendors and possibly consultants /contractors. The role can require a master’s degree in computer science or a related field. Salary range: $ 99-142K.
Business Intelligence Analyst
This is not always a purely technical role, though background could be and often is in computer science or a similar field. Usually, it’s a business-focused role that analyzes and reports on data used within the organization. Reports are a key part of such a role and are targeted for executives who will make business decisions upon the recommendations. This could be IT process improvement, software and hardware upgrades, networking, etc. Typical responsibilities / skills: collection and analysis of business data for process improvement, similar to “continuous improvement” philosophy; ability to express technical topics in a form non-technical decision makers can absorb; ability to structure business intelligence for internally-defined purposes. The role can require an understanding of a specific software, particularly database systems, and may involved working closely with developers.Salary range: $ 101-142K.
Typical responsibilities / skills: reviewing and recommending compliance processes, especially for a publicly-traded company; determine and assess risk pertaining to technology, both for a single location and other corporate offices; audit an organization’s computer systems and infrastructure for secureness; comply with company audit policies (e.g., if in a divisional office); draft a security breech prevention plan; define audit procedures; report audit findings. This role is more likely to require a background in MIS (Management Information Science) or business administration, although IT skills are valuable. Salary range: $ 67-146K.
Quality Assurance Associate / Analyst
Software Quality Assurance (SQA) work is on of those unusual sets of roles where compensation varies widely. Companies that appreciate the value of proper testing and “code coverage” pay more for a good Software QA Analyst/ Engineer than they might for a Software Developer / Software Engineer, and thus often require a seasoned developer/ engineer. Other companies pay less much less and tend to employe QA testers — although both variations are sometimes referred to as a Software QA Engineer. In QA work, these are overlapping roles. The tester role is focused on running pre-defined test suites and verifying the results, reporting bugs or interacting with Software Developers/ Engineers. A QA Analyst / Engineer is more like to be the person designing test suites and improving code coverage to verify that everything that needs to be tested is being tested. The latter role can require experience with programming/ scripting languages and/or Web or Mobile platforms. Salary range: $ 57-147K.
User Experience (UX) Designer
This role comes in various forms: desktop, Web, mobile, wearables. Typical responsibilities / skills: design software interface flow, user interactions, screen layout and organization, screen interaction (between screens), overall appearance (visual design), and optimizes the user experience — typically through iterative improvements and user feedback, to create engaging user experiences; create wireframes or more realistic prototypes — possibly with the help of front-end web developers or a web designer with the necessary development skills; recommend design patterns that are both tested (on other Web sites or apps or desktop software) as well as appropriate to the software at hand; define A/B Split Testing studies to determine which variation of an interface is more engaging. In some companies, UX teams own an application instead of a designated “content owner” and can thus request changes from software developers directly as needed. This is not necessarily a strictly technical role, and is always a creative role that involves an understanding of user psychology. However, it can require technical skills, especially if combined with another role, such as front-end Web development or front-end mobile app development. At the least, an understanding what is and is not possible for a particular software platform is important. Salary range: $ 65-150K.