What Makes a Great Software Engineer

Izenda project manager and integration engineer at workSo you want to be a better developer? Maybe you even ready my previous blog on how to be a successful developer. But that article came from the point of view of developers wanting to move up in the business world and not just focus on their code.

A coworker pointed out that being a better software engineer means something different. Here’s a few of his suggestions and requirements for anyone wanting to improve themselves:

Think like an engineer. Coders, developers and software engineers focus on different things.

Understand algorithms. Just knowing how to create an algorithm (or use somebody else’s work) isn’t good enough. Too many software developers have no idea how to analyze algorithms. So they’ll write fast algorithms that are horribly inefficient. No problem, you may say. My computer has 8GB of RAM, so it doesn’t matter as it will be fast anyhow. That’s bad coding which takes up too much memory in the system. Make sure you know how to do a specific type of sorting algorithm.

Think about ways you can parallelize a program, and understand that you can’t use that kind of shared states. If each of the parallel paths in the program use up half the system memory, it’s now down to zero percent memory available – that is not going to work.

Become a software craftsman (or woman). At the end of the day if you don’t care about your code, you won’t be wanted.

One of the problems with the people coming out of college is that many schools are so concerned with teaching programming languages that they don’t teach how to program in general.

A CS student who was about to graduate asked on Quora if it was hard to become a really great programmer. Many of those who answered had a few common suggestions, such as focusing on core skills, which may have been developed in the CS program.

Aniket Deshmukh, who calls himself a “Seasoned Amateur”, said that language agnostic learning is the only way to fit in any programming model. “Computing Basics, Related Math, Data Structures and Algorithms: these are things you need to be phenomenally good at, to be resultantly good at the derivatives,” he wrote on Quora.

A similar question that was asked on Quora, “What distinguishes a great software engineer from a good one?”, generated quite a few answers. Yelp co-founder Russell Simmons offered three qualities that he said aren’t seen enough in software engineers:

  • The ability to make masterful/quick/dirty hacks and elegant/refined/robust solutions, and the wisdom to choose which solution is appropriate for the current problem.
  • Dives right in to debug and bug fix their own code.
  • Skeptical of even their own code even if it appears to work before extensive testing.

Plenty of other software engineers supplied their own opinions on what makes a great software engineer, but what do you think is most important?

Request a live demo

Follow Izenda on social media for the latest on technology and business intelligence: LinkedInOUTLOOKFacebookOUTLOOKTwitterOUTLOOK