Software development comprises many roles beyond a programmer. In my article about programming, I talk about the various people I interact with each day. These are all roles in the development field. A few in brief:
- Product Manager - These are people that drive the product at the high-level. They know the features, how the users use it, and serve as a relay between several other development teams.
- Graphic and UX Designer - User experience (UX) is a significant part of developing apps. I’m grouping graphic and UX designer since this is a role that interacts the most with the software, as opposed to a dedicated artist who doesn’t do UX.
- Quality Control - Good teams, especially as they grow, will employ a dedicated team focused on checking the quality of the product, mainly via testing.
- Quality Assurance - This role is far more general than quality control and deals with the full lifecycle of issues, from all parties involved. It deals with ensuring the process of development is running smoothly. Unfortunately few companies have dedicated QA people.
- Community and Support - There are a lot of roles that deal with users of the software. In a good development system, these people should have a feedback loop with the programming and feature people to ensure the users’ needs are being met.
- Technical Writing - An effective technical writer is part of the development team. They’ll be involved in the planning and progression of the application and its features. They can provide valuable feedback about inconsistencies, and also work with the community to improve the software.
- Sales and Marketing - Somebody needs to sell the product. This requires knowing the product’s features, and how the user can apply them. Though not directly part of the development team, there needs to be a feedback loop as sales and marketing have good insight into customer needs and concerns.
Note that I’ve not included administration or “dev ops”. In a software company, these roles are integral parts of the programming team. It may be a different style of programming, but it’s still definitely programming.
An additional possibility is a journalist. You can review software, do reports on companies, or track the trends in the industry.
None of these roles is a programming job, however knowing something about programming is beneficial to all of them. You can’t expect to be good at your software job unless you understand the backbone of its development, which is the programming. The more you know, the better you can interact with that team, the better you can understand the decisions they make, and the better you can comprehend where the difficulties lie.
Adapted from my answer to the question Can I show an interest in software even if I don't know programming?