About Me
On the way to becoming a programmer, I hit roadblocks after roadblocks where each time I felt like maybe I’m just not cut out for coding.
Even today, I still hit roadblocks but I no longer despair since I have the systems and tools to overcome it.
Eventually with experience, you will be able to utilize tools from your toolkit to overcome any challenge.
Bookmark this blog to check out weekly posts covering the cognitive and human factors side of programming with tips on how to overcome difficult challenges and getting past the valley of despair.
Challenges
The first time you encounter a roadblock, you might not know where to begin. You might even think about giving up. But if you had moments of joy with programming, then don’t give up because it gets easier. Especially after you get through the rough edges.
Despite the challenges, I pushed through the lows because I enjoyed the highs. So don’t give up, if you think you enjoy coding then you can get through it too.
The Peak of “Mount Stupid”
By the time I graduated highschool, I felt like I was pretty good at programming. I made quick gains. Made a lot of progress going from hello world to creating text based games like Jeopardy and Connect Four. I was on top of the mountain but I would soon learn the harsh reality of my abilities after first year of University.
Valley Of Despair
My first roadblock came when I was forced to take a leave of absence from university due to low marks. At the time, it felt like the end of the world and my dreams of becoming a programmer was crushed.
In hindsight, everything worked out. But how did I end up there at that moment? Why did I fail? I was on a quest to find out. I read self help books like Getting Things Done. Tried a ton of note taking apps from Notepad to Evernote but nothing seemed to work. I ended up collecting rather than learning. All that collecting gave me a false sense that I was actually learning but in reality it was all busy work that was not significant at all. It did not move me forwards toward my goals.
That was part of the problem, I had no clarity on anything such as what my goals were or what I was trying to achieve. Part of it was just doing what society says you should do which is to enroll in University and then get a job. I was in zombie mode doing what everyone else was doing without even realizing it.
Finding new ground
In a sense I knew why I had failed but I didn’t put it together until much later in life. I failed because I didn’t have the right mindset.
My habits and routines were not conducive for successful studying. Most of my time was spent commuting to school, or walking around campus trying to find a spot to study. My study habits were poor, I read the textbook but never took proper notes. This all contributed to a false sense of learning.
I ended up enrolling at a community college, it was a lot less expensive and they had co-op opportunities to help prepare students for the job.
College was a much better fit for me. It had real practical applications compared to all the math and theory thrown at you in University. After hands on experience building things, I would later come to appreciate the math and theory behind computer science.
Learning theory first, however, just didn’t motivate me. Instead, by building things, a light sparked which eventually led me back to explore theory with a renewed understanding of it’s importance.
Trekking uphill
After college, I joined the workforce officially entering the rat race like everyone around me.
I worked at a boutique software consulting and management firm. I got to experience programming for a wide range of clients in many different sectors working on projects for both startups and large enterprises.
I slowly built up expertise in developing software and kept getting better through experience. I read a lot of books during my spare time and successfully incorporated what I learned into my workflow.
During the project, after the ramp up phase, things felt easy. The code would just flow and I didn’t even have to think. It was as if the code just wrote itself. Sometimes I would feel like the character in the show limitless especially after a cup of black coffee.
The problem? I noticed I would forget everything after the project was done. Was this normal?
Repeating Cycles
Once a new project came up, the cycle continued. The beginning phase of each new project came with a lot of anxiety. Not knowing where to begin or where to start especially when the platform has changed from an older established language to a new language.
But once the rampup phase passes, the flow comes back and you begin to find yourself become so immersed in coding that you end up forgetting space and time.
It’s that feeling of play that keeps me motivated despite the challenges of constantly learning and not knowing where to start. Or the dreaded feeling of starting again at the bottom when you realize you don’t know anything at all.
The hard learning curve is real, as other programmers and I have attested to. But if you push past the valley of despair then you will succeed. Programming can be fun but sometimes things can get really tough.
Learn from the past to improve the present
Why did I fail in the past? What can I do today to get better? What is working? How can I improve what is working by one percent everyday?
Through introspection and insight gained from books, I hope to add value to our toolkit so that we can improve a little bit each day.