It has been almost two years now since I started to take coding seriously. I have learnt so much within these few years yet I am sure I know absolutely nothing compared to the heavyweights in the industry. That being said, I find the process of coding to be quite intriguing. It involves a lot of problem solving and logic therefore sometimes you really have to think about how you could go about solving a particular issue. It is all fun when it works like you planned, but it is also hell when it does not. One of the widely practiced ( from what I have been told) ways of preventing issues from arriving is planning, particularly diagramming when it comes to software development.
During this module that I had this semester, I have learnt so many diagrams: Use case, Activity, Class, Sequence, Finite State, Component, Communication and so much more. The hard part is when it comes to making actual systems, where all the diagrams should be interrelated to each other. It should provide an overview of how the system should work both conceptually as well as technically. When it came to my assignment for the module, I had drawn more than 40 diagrams! After burning the midnight oil on countless occasions, I had thought to myself, is this really necessary?
My thoughts wandered far and wide. At first I thought about coding itself. Do I really need all these if I am to make a system? Surely I have gotten by making other software’s without this already. New methodologies that involve less documentation such as extreme programming, Spiral or even Scrum have been proven to be successful in the workplace environment.
One thought after another lead me to think about life itself. So many people plan out how they want their lives to be. Yet life throws a barrage of punches right to your face. Is it really worth it to spend so much time on the planning when you could have been enjoying the present for what it was? Even if it is a bad situation, would it not be more important to do something now than planning to do it later?
Yet it also has its advantages. I remember making a system in my first year. It was a car rental system using C#. Me and my teammates decided we would get right into coding. We started of with ease but as time passed we were faced with hurdles one after another. I found myself backtracking and updating my code every day. We were almost getting nowhere with our work. Though the assignment did say we would require diagrams, I convinced my team that we could “reverse engineer” them later. I regret making that decision.
Through some miracle, we were able to submit our assignment, I think exactly a minute for it was due. I would not call it a successful system by any means. Sure we were able to get the main functionalities working, but a huge portion of our additional features were incomplete. In retrospect, if we had conceptualized our work using diagramming it would have been easier. Rather than think of it as instructions, I like to think of them as guide lines. They show you the map, it is your duty to carve your own path.
Same with life I assume. Planning is somewhat necessary. Having a goal to reach can help make me a better person. That does not mean that I will remain adamant to a failing situation. That does not mean I will look forward only for the future. Whether it be tough times or good times, I am here now, might as well do what I can right now while remaining mindful about the future to come.
via Daily Prompt: Craft
P.S. If anyone is new to complex diagramming and find Microsoft Visio unyielding, give draw.io a try. I started using it and haven’t looked back.