You are here

7 bad habits of highly ineffective software engineers

John P. Mello Jr., Freelance writer

Software engineers want to be as effective as they can be, but some aren't hitting the mark. Many engineers develop some bad habits over their years of forging code. Here are seven career-breakers software engineers need to ditch.

[ Get Report: Gartner: Use Adaptive Release Governance to Remove DevOps Constraints ]

1. Lacks passion

It's cliché, but true. People who enjoy their jobs never do a day of work in their lives. After years of producing code, software engineers may lose that passion. Worse than this, it rubs off on those around them. "Even when you're coding all day, you have to be passionate enough to talk about it during lunch and after work as well," says Liz Eggleston, cofounder of Course Report, an online resource for people considering coding schools. Lack of passion leads to laziness. Laziness leads to mistakes on the job. Software engineers need to find a way to rediscover their passion.

2. Dislikes testing code

Software engineers used to think that testing code was below them—the coding equivalent of washing dishes. That's not the case today. Ineffective software engineers who believe this is still the case are either uninformed or delusional. "Testing isn't a nice-to-have, it's a must-have," says D.J. Charles, CTO of Invaluable, an online auction marketplace.

"Don't be embarrassed by bugs—good quality assurance engineering is a terrific safety net," he advises. "No one individual can identify every single test case and outcome. A bug found as a result of QA is much better than a bug in production.

"An ineffective engineer doesn't embrace the awesomeness of testing," he adds. "Top performers are the ones clamoring for test time and test automation. They do that out of experience. They've learned the hard way the importance of that."

[ Get Report: The Top 20 Continuous Application Performance Management Companies ]

3. Believes usability is a four-letter word

Ineffective software engineers believe their role is to deliver applications that get a job done, not to hand-hold users who use those applications to get their jobs done. They don't think of users as customers; they think of them as sources of aggravation. "It's hard to bridge an engineer's mindset into the physical world sometimes," Invaluable's Charles explains. "The ineffective engineer will incorrectly characterize a user experience issue as someone else's problem."

Unfortunately, there appear to be a lot of software engineers with that attitude, which is why companies are looking for code warriors with empathy and knowledge of other people's problems. "Employers are struggling to find people who have technical skills and domain knowledge around fundamental business problems," says Matt Sigelman, CEO of Burning Glass Technologies, a job market analytics company.

"Even good programmers will say they're not interested in understanding the business need they're trying to solve," he continues. "They'll say, 'Give me a spec. I'll write to the spec.' That's ineffective programming, and it makes it hard to even get a job."

4. Likes to say "no"

Ineffective software engineers lack "that vision thing." Because of this, they're more likely to say 'no' to a project or become a steaming pile of negativity in its path. "When presented with a challenge, a positive attitude will allow all potential possibilities to remain open," explains Charles.

"Saying 'no' closes the door on the creative process," he continues. "Whether you have an immediate idea about a solution or not, you've got to remain open-minded for inspiration to strike."

Another reason ineffective software engineers are quick to say 'no' is that once they have something working, they don't want to mess with it for fear of breaking it. "Nobody's perfect and fear of breaking things leads to safe and non-innovative choices," Charles says. "Engineers need to have the freedom to try new things. What once started as a seemingly 'crazy' path can lead to innovative and groundbreaking solutions."

5. Dislikes learning and avoids curiosity

Ineffective software engineers are reluctant learners who are resistant to new ideas. Those attitudes are costly for all occupations, but they're career-ending for software engineers. "You have to have curiosity to continue learning because programming is a lifelong learning process," Course Report's Eggleston says.

"You need to reach out to other people in the community and stay up to date on on-demand technologies because technology is constantly changing," she recommends.

Research and development conferences, online seminars, and weekly "brown-bag lunches" with peers are all learning exercises for software engineers who want to avoid being ineffective, notes Charles.

"Good software engineers have an innate need to learn, a craving at their core," he says.

6. Doesn't play well with others

Ineffective software engineers aren't team players. That can be a real problem in today's development world where teamwork is a necessity. "Software projects are increasingly complex," says BurningGlass's Sigelman. "Gone are the days where you can be a lone wolf and knock out a program on your own."

Charles points out that while ineffective software engineers may not be team players, they're still dependent on other team members. "Always remember that there are potential dependencies on what it is that you're coding—and that what you're coding has dependencies on other things that are changing," he says.

He adds that pride can contribute to an ineffective software engineer's ability to be a team player. "It's okay to get stuck now and then. Knowing when and how to get on track is a fundamental key to success. Don't let pride get in the way."

Poor communication skills can also contribute to the ineffectiveness of a software engineer in a team setting. That's especially true when the ineffective engineer has to communicate with people outside the team. "Developers who are poor communicators with non-technical team members are usually less successful," observes Eggleston.

When it comes to communication within the team, however, the ineffective engineer may need to be cut some slack, Charles notes. "Chances are you're going to find more than half an engineering team trending on the side of introversion."

"Not being able to work with someone else can be more of a personality trait and less of a conscious decision," he continues. "Getting developers into circles with other business units and getting their communications skills polished—even though it's not something they want to do—is a good way to combat that."

7. Doesn't care about security

This can be a bad habit of both effective and ineffective software engineers. In many development shops, security is just bolted on to a finished product, which isn't the best way to do it. "Developers need to put security first when they're coding," says Stephen Newman, CTO of Damballa, a cyber threat detection company.

That can be a problem, though, because even software engineers with computer science degrees aren't getting the training they need to become more than inefficient in this area. "How to construct secure software isn't even a requirement at most universities," Newman observes.

"When we're dealing with the world that we're dealing with right now, when there are so many attacks going on, you have to put security first," he adds. "A really good coder considers that in their design and their architecture and everything they do in their code."

Bad habits make employees in all occupations ineffective. For software engineers, bad habits such as showing no interest in projects and refusing to be a team player can disrupt entire teams. Many ineffective software engineers didn't start out that way, nor do they have to stay that way. With periodic self-assessments, bad habits can be identified and purged so an ineffective software engineer can become effective once more. Do you work with highly effective software engineers? What would you add to the list?

[ Get Report: Buyer’s Guide to Software Test Automation Tools ]