Whenever I sit with my boss I often hear these lines: Can you compress this time schedule? Why do you need an extra day? Haven’t you done it before and this time it should be easy to do? Can you compress the schedule by working late hours? You try to answer these questions and you […]
Category: Software Design Principles
3 object oriented programming resources that can fail you–may be they already have
I tried to learn good programming skills. I tried learning object oriented programming, design, and principles because I wanted to be a good software engineer. For a small period of time, I was thinking that I know all about modularity, testability, readability, reliability and other ‘jibberish’ I used to talk about. Until I faced the […]
Get Serious About Your Programming Skills
Have you ever feel the pain of being a beginner? Remember the time when you started your first job as a developer and people treated you like a noobie. You know you are good but they don’t know. You have done some good project in your undergraduate studies or in your personal time. You know […]
A Process Slightly Greater than the NATURAL Software Development Process Model
The goal of this post is to discuss a simple software development process model. Hmmm let’s see. A simple software development process. There are many software development process models. And I will be discussing the difference between agile processes and waterfall Process…. Naaaah! Not that old crap. Yeah I know agile/iterative is good and waterfall […]
You hate comments? Kill Them (Period)
A while ago, I was searching about comments. Specifically, strategies to comment better. I found the following example: // // Dear maintainer: // Once you are done trying to ‘optimize’ this routine, // and have realized what a terrible mistake that was, // please increment the following counter as a warning // to the next […]
S.O.L.I.D, GRASP And Other Basic Principles of Object Oriented Design
I will start with a cliché
A software code should depict following qualities:
Maintainability
Extensibility
Modularity
etc
You may find yourself in a difficult situation when you ask a question about whether any particular code depicts above quality features or not.
A technique that helps is by looking at the development timeline of any software. If the software code remains easier to maintain, extend and modular over its lifetime then it means that the code has above quality features.
I have written difficult to read, hard to extend and rotten software code. I only knew this after six months into the development when a change happens. Hence development timeline is important in understanding quality factors.