beanz Magazine

How to be a Lousy Programmer

Erich Ferdinand on Flickr

What makes a programmer lousy is a good way to identify what makes a programmer great.

Nobody grows up to be a lousy programmer. However, discussing what makes a programmer lousy is an excellent way to identify what makes a programmer great. Here are some thoughts found online about what makes programmers lousy. Hopefully none of them apply to you or your friends!

First, every programmer starts out lousy. No one is born knowing the right mix of programming languages, debugging skills, persistence, ability to ship code, and all the many details that make a good programmer.

When programmers start out, they first need to learn how to learn. Say you want to learn how to program a small game. Where would you begin? You could post a question online. But good programmers do their research first and see where it leads. Then post questions when they truly can’t find an answer.

For example, there’s a tradition that you should never ask for programming help online unless your question demonstrates that you have looked for help, that you have learned how to learn but reached a dead end. Asking, “how do I do this?” is very different from asking, “I want to do X. In looking online, I see Y and Z are possible solutions. However, in trying both solutions, I find A happens. What are some ways to get around A? What might be the best way(s) to accomplish X?” A lousy programmer often won’t do the research because they have not learned how to learn.

Not only is learning this way more fun, because you never know what you will find, but it also is more rewarding.

To be fair, learning to learn can be frustrating. You might spend weeks to learn something then find someone who shows you a shortcut that reveals you spent way too much time. Or points out a detail that negates what you’ve learned. But that’s okay. You know more than if you did not learn on your own.

Learning how to learn also has another good side effect: you quickly realize you don’t know everything. Nor do most people. Instead, you discover programming is a group activity. Everyone helps each other grow by sharing what they know.

Learning as you go also helps you gain a deep knowledge about programming languages and how to develop software. You also learn to ship software instead of tweak code to perfection. And you learn the full range of how code works, from the hardware all the way up to the application on your screen. The ability to discuss code at every level is one way to identify good and great programmers.

Which leads to another difference between lousy programmers and good ones. A good programmer realizes programming is more than languages. The fun in programming is in thinking, solving problems, working on algorithms (rules for doing things), math, and how data is structured and changed with code.

A lousy programmer also doesn’t respect standards created by a community. They’ll write code instead of use a library of code that’s been used and tested millions of times. Which code do you think will work better? In most cases, the library of code. Or they’ll set up their files and write code differently than programmers they’re working with. This makes maintaining their code more difficult. Plus it risks introducing bugs that could be prevented. Standards are simply ways to do things to save time and make work easier.

Don’t believe me? Who gets to jump in the pool faster, the person who sews their swimsuit from scratch, the person who at least uses a pattern to sew their swimsuit, or the person who pulls out of their dresser a swimsuit they bought? Standards work the same way: they let you get to the fun faster with less effort.

Another practical difference between good and lousy programmers are comments. A good programmer will take an extra minute to add a comment at key points in their code, for example, to show when state changes. Or describe the purpose of a function and its inputs/outputs. Whatever might be useful to people who will maintain the code, a good programmer tries to include that information in a comment.

Lousy programmers focus on how to create something with code. Good programmers try to figure out how their code might fail, to find and fix any bugs or bad design. Good programmers also challenge assumptions, from the requirements people tell them to every part of their coding process. Lousy coders also are more in love with perfection than good programmers who are happy to accept a simple quick solution that works well.

And one final thought about programmers and software developers, cooks and chefs.

Would you call a chef a cook? Software developers program with code as one of their tasks, the same way a chef cooks. But software developers use a range of design, problem solving, people, and other skills to do their jobs, the same way chefs learn about taste combinations, nutrition, ingredients, knives, stoves, and other key parts of their jobs. Software developers build software the way chefs create meals, as well-rounded experiences.

A good software developer is simply a person who realizes programming is one skill they practice but not the only skill. A lousy programmer doesn’t have that awareness. They’re not a software developer yet.

This article summarizes answers found on Quora.com as well as elsewhere on the internet. Links are below if you want to read and learn more.

Learn More

What do good programmers know or do that lousy programmers do not?

https://www.quora.com/What-do-good-programmers-know-or-do-that-lousy-programmers-do-not

When would someone be considered a bad programmer?

http://programmers.stackexchange.com/questions/3851/when-would-someone-be-considered-a-bad-programmer

10 Ways to be a Bad Programmer

https://www.getfilecloud.com/blog/10-ways-to-be-a-bad-programmer/

What Makes Bad Programmers Different?

http://www.drdobbs.com/architecture-and-design/what-makes-bad-programmers-different/240001941
http://www.drdobbs.com/architecture-and-design/what-makes-great-programmers-different/240001472

The Difference Between A Developer, A Programmer And A Computer Scientist

http://www.skorks.com/2010/03/the-difference-between-a-developer-a-programmer-and-a-computer-scientist/
https://en.wikipedia.org/wiki/Programmer
https://en.wikipedia.org/wiki/Software_developer
https://en.wikipedia.org/wiki/Computer_scientist

Teach Yourself Programming in 10 Years

http://norvig.com/21-days.html

Also In The October 2016 Issue

Virtual and augmented reality replace or add computing to our real world experience.

What would you build if you had 10 weeks and access to Microsoft HoloLens and HTC Vive equipment and developers?

With end of year holidays fast approaching, here are 35 of the more interesting ideas for holiday STEAM gifts that introduce STEAM concepts in fun ways.

If you work in a school or community library, or an after school group, STEAM events can be a way to offer technology events for kids.

A short history of virtual and augmented reality with lots of links to learn more.

One thing programmers do all day is imagine. When someone asks them to solve a problem with code, they start thinking and dreaming.

There are several key skills that I believe you need to have if you want to be a software programmer.

What makes a programmer lousy is a good way to identify what makes a programmer great.

Virtual reality has brought to the masses an old problem with flight simulators: what happens when our brain, ears, and eyes disagree?

The dots and lines used in graph theory can solve interesting problems.

Links from the bottom of all the October 2016 articles, collected in one place for you to print, share, or bookmark.

Interesting stories about computer science, software programming, and technology for October 2016.