Software engineering is often a part of a much larger process. Bringing a product to market requires user research, design, management, marketing and many other skill sets, frequently split between different roles or even teams. But that doesn't mean they have to be. This post discusses how you can use different skills to amplify your impact as a software developer and make your work even more valuable if you get just a bit tired of programming.
One of the more exciting and obviously useful skills for a software developer is design. In a world of web and mobile applications, good UI/UX is absolutely essential for your project's success. Making games is an opportunity to exercise many design-related disciplines at once.
Early stage startups will tear your hands off while trying to recruit you if you can build well designed websites, Android or iOS apps on your own. But you can also be a freelancer and make them for clients or to sell them directly on the App/Play stores. The design and development feedback loop is in your head, letting you move fast and iterate quicker.
Whether it's visual, interaction, product or game design, there's a lot to learn. But you can start right now, by picking up a few books, taking a course, checking out a few videos on YouTube and start practising. Open source projects are always on the look for designers and even if your work won't be world class from the start, chances are it will be better than no design at all.
2. Hardware and electronics
With so many online services and open source projects freely available, people aren't as keen to pay for software as they used to be. This leads companies to seek alternative forms of revenue to support their business and one of them is specialised hardware. Products that works closely with an app on your computer or phone are increasingly more common and buzzwords like Wearables and internet of things have been around for quite some time now.
Being well versed in both hardware and software engineering is a great combination. You can build prototypes and proof-of-concept devices using just a micro controller, bunch of resistors and C compiler, opening a whole new dimension for innovation for yourself and whomever will require your services.
Needless to say, electronics is tough. But it's never been easier to just start doing it. You can join hack spaces in your area to get help and participate in open hardware projects.
3. Data Science
"What you don't measure, you can't manage" or "Let's make a dashboard" are phrases no serious senior management meeting goes without. Leaving out whether that makes any sense, companies gather awful lot of data about their users these days. But watching their every move, click or tap, and even reading their mind won't be to much use without making sense of the data and interpreting it correctly. And that's where data science comes in.
Because most of the data are electronic, tucked away in dusty databases, software engineers make great data scientists. If you enjoyed statistics at uni, this is a great way to make use of it at work.
Being able to process huge amounts of data and distil them into insights about the business can be immensely valuable for any company and a great set of skills for your career. Your work could be providing basis for major strategical decisions of the executives and having a tremendous impact on whole corporations.
Again, there are many excellent resources available online. The internet is also home to lots of free data sets to practice your skills on. Just take the front pages of all major newspapers and get some useful insights off them.
Marketing probably wouldn't make it into the TOP3 highest regarded professions amongst the software engineering crowd; maybe not even TOP250. And so it may seem a bit odd to offer it here as a good secondary skill. But if you think about it, being able to build things and spread the word about them on your own can be an extremely valuable combo.
Selling stuff online has never been easier. Using one of the App/Play stores, services like Stripe or platforms like PayPal or Gumroad, let you take money off people's hands with historically low amount of hassle.
The difficult thing is making people want to give them to you, which is usually done by solving some of their problems. And there are lots of problems that can be solved by writing software. It doesn't have to be big or insanely complicated, just solve someone's problem. Check out what Justin Jackson have been doing. He's also working on a book called Marketing for Developers that should be out later this year.
Being a developer and good marketer also makes you a great fit with companies that actually need to market to developers. Cloud service providers and generally anyone who offers an API has use for dev evangelists and community managers. Engineers are a merciless crowd and being one of them gives you much higher chances of being heard.
5. Management and corporate
Moving into management is a path many senior developers take in bigger companies. In larger teams, programming is as much about people as it is about code and creating a good work environment is really important.
Recruiting good engineers is expensive and losing them even more so. Good managers and team leaders are essential to achieving high employee retention. Being a programmer yourself will help you better understand your team and create an environment where things get done and people are happy.
Management skills are difficult to learn on your own. While there may be plenty of resources, becoming a good manager without actually having anybody to manage is tricky. Most people move into it gradually by sticking with one company for long enough and being proactive in the organisation.
Helping people perform well, grow in their profession and enjoy their work is a no small feat and can be incredibly rewarding too.
And if programming is all you want to do all the time? That's fine too! In fact, it's a path chosen by many. Computing is such a wide industry and there's always more to learn. Go deep, overspecialise and become better than everyone else in your niche. You'll be able to tackle the most difficult of problems and solve what everybody else gets stuck on. Just pick a stack that you like and stick with it for a while.
The size of the internet nowadays requires companies to run their services at unprecedented scales, dealing with problems that demand the highest expertise. With the right amount of dedication, you can be the lead solutions architect that turns the wildest dreams into reality.
Specialised skill sets are often much more sought after by large companies than early stage startups. The problem isn't that they wouldn't want someone that good, it's that they can't justify the expense yet.
These were a few possible combinations of software development with other skills, but the list is far from being exhaustive. Software is just a solution, a means to an end and by learning about the things that come before or after and about the problems the software is solving, your work can have much bigger impact than you ever thought possible.
Did I miss an obvious one? Let me know by posting a comment below or tweeting @radekpazdera.