How to be a software engineer without coding

Started by thiruvasagamani, Jul 17, 2008, 06:14 PM

Previous topic - Next topic

thiruvasagamani


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.
Thiruvasakamani Karnan