Author Archives: Ajitesh Kumar

Ajitesh Kumar

I have been recently working in the area of Data analytics including Data Science and Machine Learning / Deep Learning. I am also passionate about different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia, etc, and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data, etc. For latest updates and blogs, follow us on Twitter. I would love to connect with you on Linkedin. Check out my latest book titled as First Principles Thinking: Building winning products using first principles thinking

Tired of Paying Maintenance Cost? Get Assessed!

Are you one of those who is interacting with the software vendor in relation with changing the software that they developed? Are you the one who is told about the expensive change requests leading to ever increasing maintenance cost? Have you been thinking or wondering on how long would you pay the software maintenance cost and at what magnitude given the uncertain and ever changing business requirements? If the answer to above is yes, you may want to get your software accessed by internal or external vendor for examining overall architecture and measuring the software code quality aspects such as maintainability. Additionally, ask the assessor to make recommendations on how …

Continue reading

Posted in Application Assessment. Tagged with , .

Stay Single and Get Admired for Your Code

You might be wondering on the relationship between staying single, getting admired and coding! And, then, staying single forever 🙂 is something which may not be liked by most of us. So, what is this blog all about? Well, with “single, I am trying to point at “Single Responsibility Principle” and with “stay single”, I am pointing towards writing code based on “single responsibility principle”. Well, as the title of this blog goes, if you keep the “Single” responsibility principle (SRP) in mind while writing your code, there are high chances that you will end up with a great piece of code which will get liked by many including your …

Continue reading

Posted in Maintainability, Reusability, Software Quality. Tagged with , , , .

Learnt Agile Development Processes. Now, What’s Next?

The first step when an organization decides to adopt agile development methodology is to look out for a Agile coach who can train the team on agile development processes. For example, an organization either want to adopt extreme programming practices or SCRUM development practices; Once decided, agile coach take team through the specifics of the development processes. For instance, if one wants to go with SCRUM, one would be made aware of some of the following concepts/stages: Sprint Planning/Backlogs Estimation/Velocity Implementation Reterospectives Burn down charts Well, once the teams get aware of the above procedures as part of agile development process, they get down to adopting the process. However, in …

Continue reading

Posted in Agile Methodology, Software Engg, Software Quality. Tagged with .

What is the definition of Software Quality?

Even before we try and define what is software quality, it may be a good idea to understand what is meant by term quality? Quality means different to different people. One may call a product or high services of high quality if it serves their needs. Thus, for some people, a cell phone can be of high quality if it provides sound of great quality. However, for others, the ability to browse through social network can be criteria of judging a cellphone (also called as smartphone) quality. To standardize, software quality may be defined as a set of characteristics can be used to measure the following: Outcome of interaction with …

Continue reading

Posted in ISO Standards, Software Quality. Tagged with , .

How to Really Welcome Changing Requirements in Agile Environment

If you are one of those who is all set to start with agile development practices in your organization, check the following on how to deal with changing requirements which is one of the important specifications mentioned in Agile Manifesto. If you want your team to accept the idea of changing requirements (hard to digest in the beginning and so resistance) while they are developing the code, following are some of the things you would want to adopt/encourage as part of software development practices to really make team welcome the changing requirements: Training: Software quality with emphasis on how to write maintainable/easy-to-change code Object oriented design principles to ensure the …

Continue reading

Posted in Agile Methodology. Tagged with .

At Heart, I am a Software Engineer

We start our career most probably with Trainee and then, once confirmed, gets promoted to Associate Software Engineer or Software Engineer. Our primary job responsibilities include analyzing the requirement, designing and developing the solutions in terms of one or more applications. Until first year of our career, we enjoy our roles and responsibilities as a software engineer. Somewhere after a year or so, we start discovering that one or more of our friend got promoted to something such as “Senior Software Engineer” or “System Analyst”. Hmm! Now that’s what starts disturbing us from the point of view of career progression. This is inspite of the fact that we haven’t yet …

Continue reading

Posted in Software Engg. Tagged with .

Deliverables On-Time vis-a-vis Technical Debt Risk

When we are working under tough deadlines and there is mounted lot of pressure on software engineers to crank out features by features in a short time to meet business needs, there are high possibilities that software system end up getting high technical debt. Is it that delivery managers are not aware of above fact? Most of the times they are. However, they compromise on software quality against the need to take the product to the market. So far so good. However, they should make it a point to clear out some of those debt with a release just meant for that. These kind of releases are sometimes also called …

Continue reading

Posted in Software Quality. Tagged with .

What is a Workflow?

While having a discussion with one of my colleagues, I found his interpretation of workflow quite interesting. There are myths around workflow. Many people relate workflow with software requirement requiring decision making such as approval/rejection etc. However, this is how workroom and workflow was described: As part of my daily activities, I may need to get into a workroom and see all that needs to be achieved on that day. Each of the tasks can be called as “output” that needs to be achieved. The “output” will require a set of input and, a set of activities to be performed in order to be achieved. The set of activities can …

Continue reading

Posted in BPM. Tagged with .

How to Create Software Quality Metrics For Your Project

Well, if you are a software development partner for one or more of your customers, and you are looking forward for some of the following, you may want to adopt software quality metrics: Provide customers with software quality trending on various different software quality characteristic Monitor one or more projects for software quality What are various different things that you could measure for quantifying software quality? Defects Density (Functional Suitability): There are different data points you can use to measure defects density. Defects density can be defined to be one of the following: Number of defects divided by total lines of code written per sprint/release Number of defects divided by …

Continue reading

Posted in Metrics, Software Quality. Tagged with .

How to Write Good Doc Comments for a Class/Method?

Well, software engineers love to jump to the code (minus document) once design is completed. Majority of them do not write the help text around the class or methods. Some of them do write but they do not provide enough information. There are various reasons for the lack of enough comments within a class. Some of them are lack of time, lack of writing/articulation skills etc. Following are some of the questions which would you like to answer as part of comments for method or a class: Functionality: What does the class or the method do? You may want to provide information regarding the business requirement that the component fulfills. …

Continue reading

Posted in Operability, Software Quality. Tagged with , .

How to Write a Winner Design Document for Agile User Stories

When the development is based on agile methodology such as SCRUM and especially, distributed SCRUM, at some point, the need for design document becomes key to success of sprint delivery with as lesser technical debt as possible. In that regard, there has been questions around whether to have something such as design document at all. Many of those practicing agile as a developer just hate the idea of writing design documents and relate it with waterfall development model. They give the argument that a) in agile development, design have to change as we develop and b) thus, the design document may go obsolete in no time. To a great extent, I …

Continue reading

Posted in Architecture, Design. Tagged with , .

A Quick Way to Identify Code with Low Testability

Following is a quick way to identify code with low testability and hence low maintainability: Take any specific public method of the class Count for number of decision points such as following: – If – For – While – Switch – Inline ifs If the number of decision points in a method is more than 15 or so, it could be taken as indication that it may get difficult to write unit tests covering all possible flows. Thus, the code will have lower testability. The number of decision points in a method is also used to define/measure cyclomatic complexity of the method, or more specifically, McCabe Cyclomatic Complexity. Thus, mathematically …

Continue reading

Posted in Maintainability, Software Quality, Unit Testing. Tagged with .

5 Things to Consider while Gathering Requirements from your Customers

Most of the time, software engineers are primarily interested in understanding requirements only from functionality perspective or, more simply speaking, understanding the stated needs. However, many a times, the delighting experience is missed due to absence of one or more of following 5 software quality characteristics in software coding stage: Efficiency: This is also termed as “performance requirements” at the time of requirement analysis stage. This goes unspecified as customers are also not very much knowledgeable about how to specify efficiency requirements. Efficiency requirements include consideration of time and memory usage associated with the requirement. Security: Most of the times, software engineers are not very aware of various different security …

Continue reading

Posted in Software Quality.

How to Write Re-usable Code

In my software quality sessions, one of my favorite questions had been “how to write re-usable code”. The most common answer has been following: Once one identified the re-usable components based on the functionality, once can write the components accordingly such that it can be reused. However, this argument required one to identify the reusable components at the design time. The question still remained. How would one write a code that can be termed as re-usable even if the component is not required to be reused at the moment? Another question that I ask is if it is possible to look at the code and say if this is a …

Continue reading

Posted in Maintainability, Reusability, Software Quality. Tagged with .

Top 5 Software Code Quality Concerns Your Customers May Have

If you want to delight your customer with great software code quality or avoid software code quality concerns of your customer, following are top 5 areas you may want to take care of: Functionality Suitability: Following are three different areas your software code should address: Correctness Completeness Appropriateness Out of above, correctness and completeness can directly be monitored and measured using bug tracking mechanisms. And, it is responsibility of both, developers and testers to make sure that these sub characteristics are complied. Developers achieve it by writing good unit tests, and test engineers achieve it by doing various different form of testing. From metrics perspectives, defect density is the area …

Continue reading

Posted in Software Quality. Tagged with .

Software Quality Review – Scribe OAuth Library

Scribe OAuth Library helps you do quick OAuth based integration with some of the following web applications: Google Facebook Twitter LinkedIn and many more. You could find further details on following page on github. Following will present information on different perspectives: Structure   Maintainability The duplication percentage isn’t very high. Duplication is one of the key criteria that reflects on the maintainability of the code. Higher the duplication, difficult is the code to maintain. Duplication is also considered as one of the code smells. Also, due to unavailability of unit tests in the source code bundle, I could not find the test coverage. Otherwise, test coverage depicts the testability of …

Continue reading

Posted in Maintainability, Metrics, Operability, Review, Software Quality. Tagged with .