Becoming a Professional Software Engineer Quickly–Even if You are a Beginner

I tried to develop a system. I was tired of doing small tasks. I was new. Like a toddler in the professional programming world.

As soon as I know the difference between a task and a project. A project is a collection of tasks resulting in a complete product. Something that you own.

I know that if I own a product in my company I will be able to gain benefits throughout my career. That will be my product. This will be a product attributed to me. And I will patent it

Do you have such dreams?

I started imagining that people are using my product and praising me. Such a dream that was.

I had experience of 1.5 years and I was thinking about, for example, building a new commercial airplane.

Naive! Hah.

Read More

The Perfect Storm of Design Patterns

I was assigned the first task of my life. Writing a small library to process data stored in a file. Some of the code was already written by a senior programmer in another programming language. My task was to write the similar code using C#. I was new. I learned object oriented programming and object […]

Read More

Put a Dinosaur in Zoo

If you have ever been to a zoo you will definitely want to see one animal and that is Lion. Why? It’s because a lion is the king of the jungle. It’s at the top of the food chain. I asked questions from my parents like: “can a lion kill an elephant or crocodile or […]

Read More


You hate comments? Kill Them (Period)

A while ago, I was searching about comments. Specifically, strategies to comment better. I found the following example:

  LOL. Who writes comments like that? Here is another one:

And so on. You will find funny comments when you try to search for how to write effective code comments. The reason I was […]

Read More

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:

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.

Read More