Even though software engineers seem to be in demand these days, I see a lot of young folks struggling with the path to get there. Some are having academic trouble in school. Some are at a loss for direction. Some have the fresh degree but have no idea how to get a job.
Fortunately, software development (and to an only slightly lesser degree, electronics design) has a number of attributes that can be quite helpful. First, it’s important to know that there are so many distinct categories once out in the real world. With software, there’s everything from basic website coding, desktop application coding, real-time control, and many other specialties. You can have zero aptitude in one or more areas and still excel in others. You can have zero aptitude in some of the degree requirements and still be a great programmer.
In hardware, there’s digital electronics, analog, RF, industrial control, robotics, and others. Much electronics design these days crosses over disciplines. Digital is often so high speed, that analog and RF knowledge are helpful. Analog tends to feed into digital electronics. Control, real-time, and robotics tend to require software, or at least an understanding of software.
The single most important task while in school for a software degree is to learn how to learn. Learn how to teach yourself new languages and concepts. Learn how to dig through and decipher language documentation. Learn how to ask for help – learn how to legitimately ask for help without just asking someone to do your homework for you.
One of the unique advantages to the software career world is that you can do a lot on your own that will help in the job market. I’ve hired software developers in the past and what they’ve done outside of the classroom is every bit as important as in. A lot of other fields don’t have that. You can’t very well build a half mile-long cable-stay bridge in your spare time.
While working on the degree, you should do some software projects on your own. Build a personal website. Write a simple iPhone or Android app. All of the tools are available for free. Start with something easy and work toward more complexity.
If you’re more interested in electronics, buy an Arduino or mbed development board. They cost some money, but not much, and the software tools are free. The Arduino is a bit easier, but the mbed is a bit more respected in the professional world. Still build the website and use it to talk about your projects.
You will find out pretty quick if this is where you want to make your career. If it still is, you will be developing real-world skills. You may even be able to get some paid work doing it. A lot of people discount web development as not being real software, but it’s easy to get into and not terribly difficult to make a few bucks at. And, having an online presence that showcases your projects will help you get a long-term job.
These days, you can take a similar approach with an electronics engineering degree. You can download free, or nearly free, CAD tools. You can get development boards like the Arduino, mbed or Papilio (FPGA development) for a very good price. There’s never been more electronics information more accessible than today. Build stuff.
The degree is important, but what matters most in the long-run is a willingness to learn outside of school. It’s okay to struggle, fail, be discouraged, be down, or to lose confidence. Just don’t let those things stop you.