Buzz

Chat

Menu [toggle]

Online users

3 online users

Style: tikineat.css

Print

Software Development Beliefs

Related
About Me

In over 20 years as a programmer (since 1981), I have yet to become an expert in any single area. I am not a J2EE expert. I am not a .NET expert. I am a generalist who has strong practical experience who can swim to almost any level of detail.
Software Development in a Nutshell
No programmer should be an island. Developers should enjoy sharing their talent and knowlege.
Give and take creates strong relationships

Ask questions. What customers ask for is not necessarily what they want.
Create and verify use cases before coding

Search Open Source repositories for your idea before coding. Sometimes existing code can provide useful insights. Peer reviewed Open Source is better than starting from scratch. Even tangential projects can be enlightening.
Search for solutions. They probably exist.

Time is your enemy. The complexity of the task at hand isn't your biggest problem. Most problems can be solved quickly 80% well enough. You can't buy time. Your competitors are probably ahead of you already.
Your ability to save time is your greatest asset. Not your coding prowess.

Teams rarely have time to generate detailed design documents before writing code. Get something down on glass - a plan - initially. Let the code evolve as it insists. Code and design are not independent entities. "Write once, refactor many times" is essential and unavoidable.
Code evolves the design and vice versa

The following tools are essential: bug tracking (e.g., Jira), testing, wiki (e.g., Confluence), source control (CVS), blogs (wordpress), diagramming (Visio), IDE (Eclipse or Visual Studio), monitoring (Nagios).

Dynamic languages such as Perl and Python are fabulous but it's worthwhile to invest in Java and even C++ for long-term projects
Developers need great tools to do great work

Build and test often. Developers should have private sandboxes and common test beds.
  1. Code
  2. Test privately
  3. Copy to public staging area
  4. Check in
Always use Source Control, even if you're the only programmer
The process matters

Testing is more than half the effort. Test all scenarios including exceptions before releasing to QA.

Populate tables with millions of records of dummy data before releasing to QA.

Developers who check in broken code irresponsibly should get a warning, with termination as the consequence of the third offense.
Don't tolerate charlatans who can't test their own code

Features should not be held hostage by releases. Once Feature A is ready to go, let it go. Immediately. Feature B can wait.

Failure to release enhancements in a timely fashion results in locked doors. It may be a slow death, but death will come.
Release often

Troubleshooting problems in real time under pressure is a nightmare scenario. Create a wiki/knowledge base along the lines of:
  1. Problem
  2. Probing
    • What steps were used to troubleshoot the problem?
  3. Solution
Prepare for problems. They're going to happen.

There is no time to test everything. Leverage tools, such as Nagios, to monitor the system.

Pick a sesssion randomly every few minutes, logging queries and their durations. Review the logs periodically. Use Nagios to check for runaway queries.
Verify that problems aren't happening in production

There always comes a time when you have to sacrifice your personal life for a deadline. After making the deadline, do your best to rebuild your neglected life and body. Even learn some new tricks.
Sharpen the saw



Created by: terris. Last Modification: Saturday 23 of February, 2008 15:23:42 CST by terris.

Quick Edit a Wiki Page

Search Wiki PageName

Recently visited pages

RSS feed Wiki RSS feed Blogs
[ Execution time: 0.27 secs ]   [ Memory usage: 16.02MB ]   [ GZIP Disabled ]   [ Server load: 0.10 ]