How to be a software engineer without coding
In an earlier post, I mentioned that there is a bevy of non-coding jobs involved in software development. According to Money Magazine, software engineering is #1 on their list of the best jobs in America. Their description of software engineering is as follows:
Computer software engineers apply the principles and techniques of computer science, engineering, and mathematical analysis to the design, development, testing, and evaluation of the software and systems that enable computers to perform their many applications.
But what are all of those options? This is how I answered the question when it was posed to me by a high school student this week.
User assistance : There are many different titles that this job takes, including technical writer and information developer. This is the person who writes the online help or written manual (if one exists). A strong understanding of software concepts is useful. You have to be a really good writer for this. There are several technical writing programmes at many universities, and some people recommend dual-majoring in technical writing and something else: computer science if you want to do software, biology/chemistry if you want to do medical writing, etc. According to Money Magazine, this is #13 on the aforementioned list of best jobs in America and #19 on the list is editor (which includes technical editing, so I include it here).
User experience research : This is obviously a topic that is near and dear to my heart. User experience researchers (sometimes called usability engineers, user research engineers, or human factors engineers) determine what users actually want their software to do, and figure out how to do it easier. This job includes conducting usability studies, ethnographic studies (where you go to visit the user in their home environment and observe them for an extended period of time, usually at least a day), surveys, and simply going out and talking to users at events like Macworld Expo and WWDC. There are several degree programmes that cover human-computer interaction, user experience, or user interface design.
Program manager : These people design the features that the developers code. This requires a good understanding of a lot of technologies and the ability to figure out how these technologies should fit into your software. An important part of being a PM is not getting caught up in what's possible or what's not possible, but in figuring out what is the best way to meet your customer's needs.
Software testing : These people are good at breaking things, and figuring out what
they've done to break things. This is a great way to go if you like solving problems. You have to be detail-oriented.
Product design : These guys make the software look good. This ranges from designing the individual icons to the whole window that you see when you open the app. Designers tend to have art degrees instead of CS degrees, but they also have a strong understanding of how users use their software. Designers are hugely important -- if your icons are indecipherable, or if the individual elements in the window aren't laid out in a way that users can figure out how to do what they want to do, your software isn't going to be successful.
System administration : These are the guys who keep the computers and the network running. They might also assist the other people listed here in doing their job. If you like putting together your own computer or if you're always the guy that your friends ask to help when their network goes down, this might be a good job for you.
Technical support : This is, in my opinion, one of the hardest jobs in CS. You have to have a deep understanding of whatever you're supporting. You have to be able to explain things well to all kinds of people, from complete novices to experts who have run into a problem. You have to be really good at dealing with people who are unhappy (after all, if they're calling tech support, they're probably frustrated). You have to be able to crawl into their head and figure out what the problem is. You wouldn't believe how many times someone calls tech support and says, 'my computer isn't working'. There are bad tech support people out there, but the ones who are really good are worth their weight in gold.
Localisation : These guys make the software work in other languages and cultures. Some of this is simple translation (English to German, Japanese, French, ... ), but a lot of it is understanding how to make software work well for other cultures. For example, they help us choose graphics that won't be offensive to other cultures. They have a strong understanding of international users, which a lot of American software developers are missing.
I'm sure that I've missed some, so feel free to add your non-coding software job in the comments ...
Comments
Anonymous
February 16, 2007
And for an added benefit, definition of the Program Manager role (PM), check out Steve Sinofsky's definition of a PM: http://blogs.msdn.com/techtalk/archive/2005/12/16/504872.aspx One interesting tidbit, the role of PM was first defined during the Excel for Macintosh project!Anonymous
February 16, 2007
Don't know about the MacBU, but in the other parts of Microsoft, there is a discipline called User Experience Design which is the design counterpart to UX Research. And unlike the description of product designer above, we do more than just make the product look good. Many times we are making the product work the way the users need it to. While PMs are mostly concerned with shipping, shipping with some features and managing the development process, the Ux Designer is narrowly focused on the end-user. Brian G.Anonymous
February 16, 2007
Oh goodness, I'm beyond embarrassed that I missed that. I was going to correct it, but I can't find UXD on the external careers website. Of course, UXR is still listed as Usability Engineer, so the external website hasn't picked up on the latest title changes. I thought that the list of career paths on the external website was supposed to be comprehensive.Anonymous
February 18, 2007
how can I get a position in the macbu as a mac platform evangelist? :DAnonymous
February 18, 2007
cesar - I think that all of us in MacBU are Mac platform evangelists. Come talk to us at the next MWSF and you'll see what I mean. :) If you want to come to work for MacBU, we do have a handful of positions open. According the Microsoft careers website, there's currently two developer, one marketing, and one usability position open. So you could apply for that last one and be my counterpart! The Microsoft careers website is http://www.microsoft.com/careers/ On there, select 'MAC Office' (yes, I know that the capitalisation is embarrassingly wrong) and you'll see the four postions that are available as of this very instant.Anonymous
April 05, 2007
The comment has been removed