HomePostsOct 13, 2008

Considering a career in software engineering or digital design?

I have a friend who works as a recruiter for Microsoft and, though I’ve never actually worked side-by-side with him, I know his work ethic, his commitment, and his intelligence well enough to respect anything he has to say about all things employment related.

I’m at a crossroads between several different career paths and, though I know, for the most part, what I want to do and what I don’t want to do, the state of the job market and the industries themselves have to play a part in my decision. On my own, I can only know about career opportunities by what I read in blogs and what I experience myself so, at time like these, it’s good to have someone to talk to that can put it all into perspective.

Microsoft’s perfect developer job description

I asked my friend to tell me what kind of trends he is seeing in online design/development (if any). Where does he think things are moving? More importantly, where is the money? Is it worth it to learn a language or use your people skills?

Here’s what he had to say (verbatim but broken down):

I think that the online design/development world is currently going through some major changes. This is both product wise as well as company/business wise. Over the past year there have been a lot of changes around Adobe, Corel, Apple and even here at MS. Check out Expression, if you haven’t, to see some of the things that we are starting to do. I think a large trend is moving from overall design to building experience that are truly media rich (video, interactive, etc).

I just started working with Expression Blend 2 to design a Windows user interface for a developing piece of software. This software allows you to draw things in completely scalable format and then see the XAML code that was created. I liken this to being able to draw vector graphics in Adobe Illustrator and then seeing the equations that are needed to make the artwork.

The application also lets you manage the “code behind” files (created in a language that I don’t understand like C# [“see-sharp”]) which creates an interesting “generalist” situation where I can have a hand in both the aesthetic design and the application code itself.

The implications behind this situation is that versatility is poised to become a skill in and of itself. There will always be a need for a specicalist but the Henry Ford style production line scenario, in software design at least, is going the way of the dinosaurs. If you’re taking computer science classes, it might behoove you to also pick up a few art classes or a digital design minor if it is available.

Taking this idea a step further, picking up two (or more) different disciplines at the same time means that you’re going to sacrifice something: sleep, your life, or absolute mastery of either. In order to be the best at something, it takes lots of practice which stems from complete commitment. It would be impossible (or, at least, undesirable) to put in the work to become the best, say, formula one driver AND the best short story writer; one of the two must suffer. But, if your intention was to simply blend the two as best you could and become really good in both, this is possible. You could probably become a world-ranked driver and someone who wrote great short stories (about racing, likely).

How do you build skills that are needed? Branch out.

To become a great designer and a great software developer, you would need to bring the two together. I would say that web development does this very easily. As a rule, if you’re writing usable, good-looking web pages on your own then you’re going to need a solid sense of layout and style as well as a good eye for syntax and, if you’re using Javascript or PHP, some idea of functions, variables, and good programming practices. Bringing it all together successfully means that you’ve learned all of this and practice it on a regular basis. There is just no way to be the top technology blogger with an award-winning blog that you designed and built yourself along with custom sidebar widgets implemented by you. Show me this guy or gal and I’ll show you my resignation from the field. You can, however, understand search engines, have a polished writing style, know how to construct themes, know enough PHP to not ruin anything, have a sense of design, and put it all together on-line. Understanding each of these skills and also knowing your resources well enough not to memorize everything is key.

This idea of versatility was echoed by another person at Microsoft I talked to recently. He works for the MSN team and has a background in journalism. He said (paraphrased):

There are amazing developers out there. These people can write code that works well all day long. There are also great graphic designers out there. But the person with great development skill and a strong sense of aesthetics is the one I’m hiring on the spot.

Versatility is key and there is nothing better to convey versatility than to actually SHOW versatility. Learn Blend and create something in it. Create something in Illustrator, modify it in Photoshop, then start a blog and post it on the web. It’s one thing to read the books and it’s a whole other to use the skills, hone them, practice them, and put yourself out there.

Answering my money question, the Microsoft recruiter said:

The money is in all of these areas, especially if you are using the latest products and are well versed in the product offerings that are out there. If you already have some language knowledge, or know how to work with managed code such as Java or C#, etc. and have people skills, then you are in a good position. If you look at the .NET Developer Platform and Visual Studio as well as other developer tools, more time is spent on creating a rich experience (application, UI or whatever) and less on overall coding. That is why companies like MS make these tools for developers. So, basically, if you can master the use of these and code ad hoc, then, IMO you are set up fairly well.

I’m the type of picky person who wants a career doing things I enjoy AND I want to get paid well doing it. Am I asking for too much? I don’t think so.

Should you learn a new programming language? The answer is yes.

There are hundreds of programming languages currently in use around the world so knowing one language perfectly is probably to your detriment. If, however, you understand the concepts of syntax, systems architecture, and variables very well and are able to use several different languages, you are set up well for progressing in the future. When you start a new job or gain a new client, there is a variable learning curve based on information related to that job. If, for example, you learned Adobe Flash and Actionscript perfectly, you might have a hard time picking up the Javascript that is necessary for one job. Being knowledgeable and able in several different disciplines shows that you are flexible and able to pick up new skills. It also becomes more likely that you’ll find a job that requires one of your existing skills.

The other part in that paragraph that it’s easy to breeze over is the comment about having people skills. I’ve worked in several different industries and, let me tell you, there is no substitute for a positive attitude and an open mind. In my own experience, there are more people that think that their skills excuse them from getting along with others than those who put their people skills first and their productive skills, robust as they may be, second. Especially in the sciences, being personable and likable goes a long way.

Last but not least, my recruiter friend makes a very astute observation about the tools available to people these days. While I choose to write HTML in a notepad, there are tools out there like Dreamweaver that are making it easier and easier to create great content without being a ten year veteran of a certain piece of software or coding language. This speaks directly to my mission statement, helping people do more with the technology available to them. You might want to get into design or upholstery or personal training but don’t know where to start or how to manage everything that needs to be done. Through Google, blogs, free software, and a plan, you can do a lot more with your time than you ever thought possible.

The relics of the past clinging to old processes, dusty and stagnant tradition, and archaic methods are finally beginning to see some competition from people who know how to manage their time and are smart enough and brave enough to see past the status quo and blaze a new path. The people clinging on to the “same old same old” are getting surpassed, naturally, by those who have an open mind. Maybe the old way to do things is a way that’s going to be around for a while (think about books and the Amazon Kindle) but if you’re not at least looking at other options then you’re going to be blindsided when change happens.

Just think of all the industries, products, and companies that seemed like they would be around forever – newspapers, fax machines, radio, any of the number of collapsed financial institutions. When you assume nothing is going to change and when you take it for granted that the way things are is the way they will continue (and the way they should be without question), you put on the figurative blinders. Learning new tools, new techniques, new pieces of software, meeting new people, trying new things… these all either lead to great new innovations and change they way everything is done for the better OR they reinforce what is already in place which is just as good. Nothing has replaced HTML as a web presentation language (unless you count XHTML which I guess you could) because there isn’t anything better right now. What did affect HTML was CSS and now that’s the standard. Sadly, there are still people coding exclusively in HTML but this won’t go on forever.

So, there’s a bit of job advice from a guy in the know and a little analysis from the guy who breaks it all down. If you think you match what they’re looking for up there in Redmond, feel free to send me your resume and I’ll pass it on!

< Take Action >

Suggest changes on GitHub ›

Comment via:

Email › GitHub ›

Subscribe via:
RSS › Twitter › GitHub ›

< Read More >

Software Engineering Personal Development