Life Lessons Learned As a Programmer
When I was little, I wasn’t groomed by my parents to become a programmer. Rather, they wanted me to go to medical school. Because I was intensely extroverted, I ended up in business school as a compromise. I was majoring in marketing when I met a group of computer science students. After spending time with them, I decided to pick up a second major in Information Systems. At the time, I was working at the intersection of graphics, poetry, and photography through my extracurricular activities. Before I knew it, I started to program, learning HTML and CGI. This was the start of the internet boom. Everyone I knew wanted to make it big on Wallstreet. Programming was reserved for the “weird” and the “eclectic” friends of mine.
The wierd part was that the artistic part of me was drawn to programming from the beginning.
After I spent all-nighters going through programming books, I decided that this was the type of work I wanted to do for my career. I was lucky, I ended up in Corporate IT jobs on wall street. I worked there my whole career before I diverged.
When people ask me whether I will teach my son programming, I often tell them that I don’t know. It all depends on if my son has an interest in it. However, the truth is that I am teaching him “programming” concepts every day without even knowing it. Because that’s how my mind operates now. I didn’t realize it until I thought about the origin of my son’s skills that he’s picked up.
My son’s only a toddler. But, I imagine, even if I don’t try, by the time my son is a teenager, he will have learned some life lessons from me. A lot of these life lessons will come from my time as a programmer. Just like I picked up certain life lessons from my scientist parents, our identity, the skills we identify with every day, are imparted onto the next generation naturally whether we want them to or not.
If you have a child who is interested in programming, unleash their curiosity, let them dabble, create, and learn. Through the experience of programming, your child will learn many life lessons. It doesn’t matter if your child has an analytical mind or not.
The elegance of structure, order, and chaos.
In programming, there’s a sense of order. Everything has its place: variables, data structures, functions, etc.. At the start of a project, you can imagine all of your raw materials in a pile on the ground. Then, you pick up these pieces, through designing, building, and testing, you create a structure. The inherent logic is always structured in some way. The beauty is seeing that order among the initial chaos. Chaos is always at the start of the project. At each step, there’s a kind of chaos of the mind when your thoughts are coming together. But, once your thoughts come together and the order is elegant, you marvel at the beauty.
No matter what kind of background you come from: liberal arts, STEM, history, etc, when you program, it somehow ties together all the skills from your prior background.
You learn to appreciate both the chaos and order that go into creating solutions.
Open-mindedness and reflection.
Programming is a process. In that process, there’s constant revision. One of the first things I learned while programming is that, “Your code is bad. It smells. It’s Spaghetti.”
When you’ve spent hours on your code and then some mentor comes along and tells you that, it’s discouraging. But, the truth is that it leads to creativity and learning. You go back, you read a book to do things better. You not only revise, but you reflect on what you did wrong. You reflect on all the wrong ways of doing things.
After a while, Your mind opens up just a bit the next time someone tells you that they have a better idea. Programming always brings up those “This is weird. It’s too simple. But, this is brilliant.” ideas. They are more than just Ah-ha moments.
They are moments of true acceptance. They are moments of trust.
Functional is just the beginning.
When I first started to program, I focused on functionality. I remember scrutinizing what functions my buttons called in the UI. But, all of that seems trivial now. As the functionalities are implemented, you start to see other tools that you can use to optimize the code.
As always, I start with function. Then, I move on to patterns, interactions, and optimizations. There are many choices to be made both in the beginning and during the process of programming. These choices are the interesting part of programming.
Implementing a function that works is simply the start.
Persistence is a given. It’s not a destination.
People talk about persistence as something that you acquire. With practice, comes persistence. But, in truth, if you program long enough, it becomes a part of you.
You become a person who simply never quits.
It’s not about programming. You don’t quit investigating anything in life.
After the first few years, I realized that persistence has become such a part of my life that I had to learn to not persist on things that don’t matter. Persistence is also not a destination. You don’t program to learn how to persist at tasks. Instead, the act of programming calls for persistence. If you want to get it done, you simply have to be persistent. There’s no negotiation.
The art of learning. The art of how to learn.
Before finding programming, I already loved learning many subjects. I was a science kid who was curious about science and loved the theories. But, I wasn’t a math kid. Through programming, I learned the pathways of learning. I have a formula for myself to learn many new skills. I have applied this formula successfully to learning about many skills.
Everyone’s pathway is different. This is why programming is an exercise to help you come up with your plan of learning.
The origins of creative thinking.
It’s not enough to think creatively. I have encountered many difficult hurdles in programming. Many times, I had ah-ha moments thinking about my problems while I went about my day-to-day activities. Quickly, you learn where inspiration, motivation, and creativity comes from in dealing with difficult problems.
You appreciate those difficult problems that allows you to journey the path of creative thinking.
The process of problem-solving.
Programming is inherently problem-solving. Sometimes, there isn’t one way to solve the problem. But, the process is important. You start with what you need to implement. You design your first draft of implementation. You implement. Then, you revise. Once you are done, you test.
The process is very clear for solving all your problems. You simply have to follow through.
After programming for a while, I start to see myself doing this with the problems I encounter in life.
The art of how to think.
Steve Jobs said that programming teaches you how to think. It’s very true. Programming is composed of asking questions, creating solutions, try and fail, and try again to reach a kind of orderly beauty in your implementations. The process and the questions that you ask along the way inform the way that you think about objects, storage, functions, and expressions.
When your program stares back at you after you’ve thought about the problem thoroughly, it’s the greatest feeling.
It’s as if you’ve created a painting. The painting is a reflection of your thoughts. So, is the program.
To me, programming is the process of gaining invaluable life skills. When you step away from the functionality, the code bits, and look at your entire programming journey, you can see all the life lessons that you’ve learned. As a young adult, having learned programming early in my life helped me with the business skills I gained later. It also helped me navigate my personal life. In a sense, through programming, you discover parts of yourself that you apply to all aspects of life.
What are you waiting for?
About the Author
Jun Wu is a Content Writer for Technology, AI, Data Science, Psychology, and Parenting. She has a background in programming and statistics. On her spare time, she writes poetry and blogs on her website.