Current Articles | RSS Feed
Becoming a good programmer takes time. It also takes a lot of coding knowledge and practice. I am sure you have heard the saying writing ‘good code’ is an art and it must learn and practiced for a reason. I agree with this saying, good code is art with grace and beauty but what makes code ‘quality’ is that it’s easy to work with it and is developed to be reliable, maintainable and reduce development cost as well as time.
Read More
For as long as we’ve had programmable computers, people have been struggling with the problem of effectively developing software to utilize them. And as our computers have increased in capability, the problem of making effective use of them seems to have grown more pronounced, not less. So it’s no wonder that so much time and energy has been invested in trying to define ways of effectively capturing software requirements, and translating those requirements into reliable software solutions. From early ‘Structured Systems Analysis’ and waterfall methodologies, through Rapid Prototyping, through Unified Process, XP and Agile programming, academics and industry practitioners alike have struggled with the problem of translating end-user requirements into working software. Which raises the question ‘does development process affect software quality’? That is to say, are some methodologies better than others in managing that transition from user articulation of what they are looking for into a software solution that delivers the required features?
Software testing has come a long in the past ten years, but with all the testing that organizations do, 2012 has already have seen some colossal IT failures. Ask yourself, why is this still happening? I propose that some of the system crashing failures can be attributed to many organizations not having a “proper testing” model.
Cyclomatic Complexity is an underused, but powerful metric for assessing the complexity of a block of code – typically a method, function or procedure, depending on the development platform. Cyclomatic complexity can be loosely described as the number of different paths that can be taken from the start of a method to the end of the method. Empirical studies have indicated that lower complexity methods and functions (cyclomatic complexity < 15) are easier to understand, easier to test, easier to re-use and less likely to have undiscovered (but potentially serious) bugs.
The prevailing psyche on enterprise application code quality IT today is based on mythological constructs that project “everything is OK the way it is”. This platitude, being expressed by the very institutions which dominate the enterprise IT supply chain, while often patently and obviously false, will tend to communicate reassurances to project stakeholders until such a time as the project is undeniably in a state of crisis. Because poor software quality and late delivery is an endemic now, enterprises spend more on limiting liability and consequential damages than on eliminating poor code quality in the first place.
It is a cliché now to talk about how important software is to the world, and how enterprise software is the critical spinal cord in most companies – if you still need convincing, read this Forbes article, or this Economist piece. There is also quite a bit of discussion online about technical debt – the future cost of today’s short cuts and bad habits. Although this beautiful metaphor can be stretched too far, there is a lot to be said for introducing simple measures in development that will reduce technical debt without too much of a disruption in the software process. I am not talking about complex source code analysis tools or metrics. Just some simple, automatic quality governance methods that ensure that all developers and all development is consistent with well-known best practices. Developing software is hard enough – implementing governance will ensure consistent output from developers, and reduce the number of technical issues that are “caught” in QA.
The 2012 World Quality Report by Capgemini, Sogeti and HP is an excellent roundup of some findings in the financial sector around the challenges in a couple of hundred QA departments. ‘Quality Assurance (QA) organizations are clearly seeking to deliver value to the business, and are especially focused on cloud services to optimize costs and increase agility, on enriching customer experience by providing services on handheld devices, social media/networks, etc. and in general on achieving “more for less”'. The last one is a bit cliché, but nonetheless important!
If you’ve ever watched the Walking Dead, then the topic of what would you do if there was a zombie apocalypse usually comes up. And, how can a discussion of zombie apocalypse ever be complete these days without some mention of the pervasive use of software in our daily lives and how we would survive without it.
Bugs bug me. It seems these days’ bedbugs and software bugs are equally persistent annoyances. Turning up the heat can be effective in eliminating bedbugs. What will it take to eliminate bugs in software?
I have been an ABAP coder for quite some time, and I know the developers are increasingly accountable to deliver quality code under shorter development cycles. So as part of the ABAP coding best practices series, I want to convey the importance and difference of String & Xstring for the new programmers.