Random software development tips
From Nick Jenkins
- Always single-step through each line of code in your software in a debugger, at least once.
- Doing this will turn up errors and inefficiencies that you would otherwise not realise that you had.
- With web apps, errors after deployment come in two categories:
- Run time errors that get trapped and logged by the software on your server.
- Errors noticed by users.
- Rigorously and aggressively fix both types of errors.
- However you should be very conservative about adding new features to your web app, unless there is a good business case for doing so.
- Do this, and you won't regret it - the errors will drop to near zero over time, which means you've got a stable, well-functioning, very-low-maintenance app - this is definitely what you and your customers want!
- Static code analysis is a beautiful thing.
- It will find unused variables, unreachable code, unused function arguments, and other types of errors that your compiler or interpreter doesn't find.
- These are very powerful tools. Run them on new code before you test it, and they'll help eliminate errors. Run them on already-deployed code, and they'll help streamline and clean your code.
- The value in software is in the apps, and in services. User's don't see the value in the O/S per se.
- Apps: These let end users do something useful, so by definition they are what make computers productive and useful tools. They are the actually productive and useful parts, whereas Operating systems by themselves are not.
- Services are valuable if they're hard for others to replicate. There is also value in your relationship with the customer, if it is a good relationship.
- Apps and Services are how to make money. That's part of the reason why IBM's market valuation is such an enormous amount more than Red Hat's - because Red Hat is primarily seen as an O/S company, that also provides support services on just the O/S (I'm not saying that's all they do, I'm saying that's what they're seen as doing). IBM is seen more as an application and services company.