I've been teaching at SAIT again this week. Generally before every class gets going in the morning I like to do a little 'blurb' on concepts or thoughts that aren't covered in the course the students get. One of the things I find is that the vast majority of students (and the population at large for that matter) don't realize how many different career paths there are in just the software side of IT. Guaranteed there are some students in the course that I teach who, by the time I get the chance to teach them, are very concerned they made the wrong decision by getting into software programming. They don't feel like they are cut out for programming. I try to put their fears at rest by suggesting that there are other opportunities for them - careers that can utilize the coding experience that they are getting, but allow them to use talents that they are more comfortable with. Here's a list (by no means exhaustive) of some other opportunities in the software field.
- Project Management. Project managers who have coding experience or at least a technical background are a step ahead of PM's who aren't techies. I myself have considered taking some project management courses or getting my PMP, but thought the better of it after seriously thinking about what I like to do at work. PMs need to have a great soft-skill set. While I don't think I'd have a problem with that, I would missing troubleshooting/solving problems. They also have to be politically savvy and have patience for meetings.
- Business Analyst. BA's also need to have a great soft-skill set, as they need to be talking with everyone (the business, the developers, and the PM) and writing down the requirements. It also helps if they are technically competent, and they enjoy documenting/writing. For some reason in Calgary right now, there have been a lot of postings for BAs over the past 6 months. I just found out today that a variety of institutions offer certificates/diplomas for a Business Analyst career path. (NAIT and Mount Royal University are two local options)
- Quality Assurance. This field has been growing a lot over the past 8 - 10 years, and frankly I don't think projects that I've been on over the past 5 years would have been successful without our QA teams. QA experts need to have a penchant for detail and process. They need to be able to understand the business and relevant business rules well. Most of the QA people I've worked with haven't had a certification, but you apparently can get more info on a software QA certification here.
- Release Management. This is what I (like to think I) specialize in. We ensure that teams are using a continuous integration server and QA has the builds they need for testing where and when then need them. We have two main goals: 1. Keep downtime in production to a minimum and 2. Keep lost man days in QA to a minimum. I like release engineering because I get to see the whole picture - I have to understand the code and it's dependencies, I need to understand the infrastructure, and I'm responsible for the product getting through all the environments to production. For me (being a bit proactive), this has also lead to automating deployments of database objects and datascripts, server configurations, and code, as well as installing monitoring tools to ensure that every environment is ready to 'rock'.
- Security Analyst. These dudes make sure the good people have access to everything they need access to, and the bad people are locked out. They spend a lot of time combing though logs and configuring IPSec rules. They also perform software audits on code, all kinds of different tests on web sites, and network audits. I wouldn't mind moving my career this direction in the future as they also need to have a pretty good idea of the whole system/infrastructure/architecture. Great web sites for more resources on these types of positions are here and here.
Even more specialized positions:
- GIS (Geographic Information System) developer or architect or analyst. Working with digital 2d and 3d mapping systems. Having some limited experience with this at the ERCB (deploying mapping systems that display reservoirs,etc in Alberta) I think this is pretty cool stuff.
- Search Engineer (Search Engine Optimization specialist) I've dabbled in this off and on for my clients. You definitely need to be on top of your game and know how the search algorithms are changing.
- Business Process Specialist - there's lots of software to specialize in here. Tibco, Agile Point, SAP, JDEdwards, etc.
- Document Management Specialist - Sharepoint, Edocs, Documentum, etc. This involves the automated management of documents - not the writing of them, but their storage. Government bodies and law firms definitely have a need for these kinds of systems.