...
But at the Open Source Convention (OSCON) in 2006 I heard Six Apart's Anil Dash present Trying to Suck Less: Making Web 2.0 Mean Something. I was floored. It wasn't so much his take on web development, as good as it was. It was the frank admission that what we do as software developers so often sucks. And that's okay, just the nature of the beast, and it's okay as long as we continually try to suck less.
I came away with a whole new perspective on my work as a software developer. I've written code that I'm proud of, and code that should never have seen the light of day. Some of my best code from years ago really really really sucks. But it was the best code I knew how to write then.
The real question is, how do I improve my code right now, using the best practices that are available?
The reality is thereThere's a whole lot room for improvement in the Clarion world. Yes, we have a great tool that can <insert your favorite rant about Clarion's magnificence here> .That doesn't mean flies to a frogbetter than anything on the planet.
Big deal. Your customers either don't or shouldn't care about what tool you use. They care that you can deliver reliable code that does what they need it to do, at a price they can afford. Similarly you care (or should care) that you can create the required functionality with the highest reliability and the lowest total cost.
Clarion's code generation technology provides a huge assist; you get rapid production of highly reliable code, easily maintained and extended within the AppGen environment. But what happens when you want your app to do something the AppGen and its many templates can't handle?
That's when you start writing your own code. And that's when you really start taking responsibility for the quality of your own applications.
...
The golden age of the standalone desktop app running on just one platform is coming to an end. That doesn't mean the end for Clarion, but it does mean that Clarion's role is beginning to change. A system might have a desktop component, a web component, a mobile component and any number of services. Think about how you can extract functionality from your code base. Perhaps you have code that a mobile app might need to call, using JSON as the data format. Or there's a web app somewhere that needs to call your code via a web service.
Align procedure and method return values with ABC
It took my years to get comfortable with ABC's standard for return values, but I'm fully on board now.
Exchange your routines for local procedures
Break long processes down into Hanson Loops
What's a Hanson Loop? It's a construct Mike Hanson once provided for me in a procedure I wrote, and which I liked so much I've used it many times since. Plus I think the name Hanson Loop sounds cool. It's also a great example of the benefits of turning routines into local procedures. Read more...
Use bug tracking software
...