What does it take to become a great—or even just a good—software developer?
According to developer Michael O. Church’s posting on Quora (later posted on LifeHacker), developers who want to compete in a highly competitive industry should be unafraid to learn on the job; manage their careers aggressively; recognize under- and over-performance (and avoid both); know the politics of software development (which he refers to as “CS666”); avoid fighting other people’s battles; and physically exercise as often as possible.
That’s not all: Church feels that developers should also manage their hours (and avoid long days when feasible), learn as much as they can, and “never apologize for being autonomous or using your own time.”
Whether or not you subscribe to Church’s list, he makes another point that’s valuable to newbie and experienced developers alike: Recognize which technologies endure, and which will quickly fade from the scene. “Half of the ‘NoSQL’ databases and ‘big data’ technologies that are hot buzzwords won’t be around in 15 years,” he wrote. “On the other hand, a thorough working knowledge of linear algebra (and a lack of fear with respect to the topic!) will always suit you well.” While it’s good to know what’s popular, he added, “You shouldn’t spend too much time [on fads].” (Guessing which are fads, however, takes experience.)
Over at Salsita Software’s corporate blog, meanwhile, CEO and founder Matthew Gertner has a long blog post referencing Church’s article. His own conclusion: If you want to become a great programmer or developer, learn to slow down.
“If you create something with a solid foundation that is usable, maintainable and meets a real need, it will be as relevant when you finally bring it to market as it was when you came up with the idea, even if it took you much longer than you anticipated,” Gertner wrote. “In my experience, projects fail far more often because the software never really works properly than because they missed a tight market window.”
But that hasn’t stopped many developers from embracing the concept of speed, even if it means skipping over things like code reviews. “We need to work on tests and documentation as we go, not leave them to an elusive future Shangri-La when the stress to crank out features has subsided,” Gertner added. “We need to recognize that our job isn’t about producing more code in less time, it’s about creating software that is stable, performant [sic], maintainable and understandable.”
- The Highest-Paying States for Tech Pros
- How Software Developers Can Switch Industries
- For Software Developers, Key to Retention Isn’t Just Money