DEV Community

Discussion on: What are the least intuitive fundamentals and best practices in software development?

Collapse
 
eljayadobe profile image
Eljay-Adobe

Adding more people to a late project will make it later. "If one woman can make a baby in nine months, then nine men can make a baby in one month." If you want a project to get done earlier, then start sooner.

Taking the time to keeping the code clean makes development faster. As soon as keeping the code clean is set aside (ostensibly to go faster), the team will go slower. (q.v. Clean Code, by Robert Martin.)

Software development is better suited to an empirical approach, rather than a defined approach. As such, empowered self-organizing teams are more productive than command-and-control management and assembly line style organization.

Clever code is rarely good code. Code should be written with the thought-in-mind that code is read far more often than it is written, and should be written for the other programmers, not for the compiler. (Yes, yes, yes, once in a while some critical portion of code really does need to be written quite cleverly, and will be very dense and hard to comprehend. Comment heavily. That should be rare, not the norm.)

For most software developers, the majority of software development is interacting with other people. "How can you identify an extroverted software developer? An introverted software developer will look at his shoes. An extroverted software developer will look at your shoes." The soft skills: being nice to people, being considerate and polite, being friendly, able to contribute to a meeting, able to run a meeting, being able to listen (think twice; speak once), when presenting being very prepared so as not to waste other people's time... are all very important. Not just with other developers, but with management and customers and other departments that you will interact.

A majority of software development in the world is for line-of-business enterprise applications. Sure, starting out many of us were all excited to make the Next Great Game that will take the world by storm. But the reality is a lot of software development goes to less exciting things like business, science, military, government, and consulting. Some goes to high profile shrinkwrap software (well, these days release-to-web). Only a little bit goes to games and entertainment (and ironically, those subfields have a poor track record for software developer compensation).

As a cottage industry, some software developers have made successful one-dev businesses. But even if successful, the CEO and Chief Bottle Washer has to run a business... pay the bills, pay taxes, marketing, maybe advertising. When Subset Games set out to make a game, "FTL: Faster Than Light", they were surprised that in order to make a game, they first had to make a business. Making a business turned out to be hard. (I don't have the link handy where they were interviewed, but it was quite interesting.)