Liver Debugging

As I learn to code, there are many times that I just cannot go on. I just cannot solve this error, sometimes for days. Sometimes when I stop to complain to somebody about why the code is not working, I finally understand the problem. By mouthing out loud the problems I was facing, I reached a higher understanding, or considered something I had not yet tried.

If I had a mentor of some sort, I suppose this would not be needed, as at that point I would have a knowledgeable person who can talk through the code with me. But if nobody near you understands code, It ends up being just the nearest friend who will listen. I will complain for hours to my friend James about what I cannot do, only to find out that it helped me find a solution. This is great, as long as you have a person who is willing to listen to nonsense they don’t understand and can’t reciprocate. Most people enjoy conversation, rather than being mindless reservoirs for code-complaints.

The Duck

It turns out that a living person is not even needed. I actually became more knowledgeable about the code i wrote, by explaining out loud what it is supposed to do, then reflecting on what it is actually doing. This has been recognized as an informal term called Rubber duck debugging.

Rubber duck debugging is an informal term used in software engineering for a method of debugging code. The name is a reference to a story in the book The Pragmatic Programmer in which a programmer would carry around a rubber duck and debug their code by forcing themselves to explain it, line-by-line, to the duck.

Continue reading “Liver Debugging”

When Climbing Mountains

As a student of web development, i often run into errors or new technology that seems insurmountable. I sit in front of my computer, and with my mouth gaping open, witness the overwhelming mass of confusion that is laid before me. I have no idea where to begin, and all i can see is how big and impossible this looks.

This exact feeling is what keeps many beginner developers from continuing on. It does seem insurmountable and you know it is going to take a big chunk of time and energy to figure it out. Some thoughts that might go through ones head: Do i even need to figure this out? Maybe i’ll just skip this and move on to something else. Maybe i should try a different career.

Comparison

10 Reasons Why Climbing Mountains Can Enrich Your Life explains ways that climbing mountains can affect your life in positive ways. Ill be the first one to tell you that there’s no way i’m going to try climbing an actual mountain in my current physical state, but I am going to use quotes from this article in relation to programming.
Continue reading “When Climbing Mountains”

When Enough Is Not Enough

There are times when every action you take doesn’t seem to do anything. When you’re huffing exhaustedly from effort on something in your life and every breath seems unnoticed. Places where you seem invisible despite screaming until your face is blue. When enough is not enough.

For this problem, i present the Dunning-Kruger Effect. It is a principle that states the highly skilled often underestimate their competence, and that the extremely confident can be unable to recognize their incompetence.

Relax

When you think you’re the only one who cares, or the only one working, maybe you are. But according to Dunning-Kruger, it also means you could be highly competent and are already over-achieving. You may be unable to recognize that you’ve gone farther than needed because you always think you haven’t done enough.
Continue reading “When Enough Is Not Enough”

Breathing Room

I know it seems ridiculous to tell you to do something you already do instinctively. I also am a human who was born to breathe. However you might be surprised how much stopping and actually focusing on breathing can make things easier.

Break The Stride

Very often, in a job which requires much thought and much pressure, things can get very tense. You are being paid to come up with a solution. you are on the clock to troubleshoot this problem today. There is not time to stop and take a break, these clients need consoling, this issue needs to be wrapped up, etc.

But a “break” does not necessarily need to mean stopping what you are doing, leaving the room, taking a walk or getting refreshments. You can take an internal break in your body and mind. You can teach yourself to transcend above the stress and give your mind a small but needed rest in less than 5 minutes.
Continue reading “Breathing Room”

Skill Shifting

As a person who has worked as a hardware/electronics technician for many years, I am often wondering what skills do i already have which will be useful in web development. I have worked many jobs in the last 25 years, and built up a pretty good skill set based on making mistakes and learning from them. I’m going to brainstorm a little bit here and see if i can’t find some common ground.

Comparison

in The 4 Most Important Skills for a Software Developer, Simple Programmer says the four skills of a good software developer are:

  1. Solving Problems
  2. Teaching Yourself
  3. Naming
  4. Dealing with People

Based on this list, it seems that the job of a programmer, language skills aside, are somewhat the same as that of a mechanic, or hardware technician who repairs objects.
Continue reading “Skill Shifting”

Structure and Object Orientation

As a beginner and student of programming languages, there are many new concepts to learn and understand. Many of these concepts are designed to make things clearer, not only to learn, but to put into action. It seems like one of the most important aspects of good code is clear and understandable architecture.

Structure

Everything is better off with a solid structure. Buildings, cars, people, politics; all of these are stronger as a result of an organized structure. So, as we go into coding, it should also be important to recognize this common idea and be able to understand it to a functional level.

Object-oriented programming (OOP) is a programming paradigm based on the concept of “objects”, which are data structures that contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods. A distinguishing feature of objects is that an object’s procedures can access and often modify the data fields of the object with which they are associated.
Wikipedia

So, we create objects that can be reused and altered as needed to perform repeated tasks. I play the drums. When i pick up a stick to attack the drum head, my mind thinks to hit the drum in a certain way that correlates to the music i am trying to emulate. I do not think about how my heart is pumping blood to my fingers. I do not think about where my elbow is positioned, and i do not think about the actions of my muscles and nerves in my hand. The hand, elbow, and heart are all objects. The do not need to be brought up front in my mind every time i hit a drum, it has become a fluid motion. This way, i can play faster and with less energy use. This also applies to programming.
Continue reading “Structure and Object Orientation”

Professionalism Redefined

A professional is a member of a profession. The term also describes the standards of education and training that prepare members of the profession with the particular knowledge and skills necessary to perform the role of that profession.
Wikipedia.com

What this quote from Wikipedia is saying is true, a professional is basically a person playing a structured role in a profession, but for my first post on this blog, i want to describe it as something more.

Redefining

For me, a role or part in a structured theme is only part of the picture. The professional needs to be me. I need to be a major player personally, in the world i choose to stake my claim in. There should be very little difference between who i am personally and how i approach my work.
Continue reading “Professionalism Redefined”