7 Lessons From 1 Year of Coding

Shane McGrath
CodeX
Published in
8 min readJan 28, 2022

--

Photo by Marvin Meyer on Unsplash

Did you know that the famous ancient Chinese military strategist Sun Tzu once spoke about the challenges of learning web development? He said:

“Do not repeat the tactics which have gained you one victory, but let your methods be regulated by the infinite variety of circumstances.”

Okay you caught me. Sun Tzu was really riffing on the topic of war, not code. But his quote does remind me of taking the software developer’s journey.

I am roughly one year into learning to code. I enrolled in an online web academy and I’ve built up some decent proficiency with HTML, CSS, some JavaScript, and will be preparing to learn React soon.

Like the quote says, there are a wide variety of scenarios to face as you learn to code. The process of learning is challenging and rewarding. I work a full-time job and must squeeze in my learning on evenings and weekends, but the simple act of learning code has rejuvenated my long-term career outlook.

Before you get your hands on the keyboard, here are seven lessons I have learned from my own programming journey, roughly one year in.

1. What I learned about picking a programming language

Photo by Vladislav Babienko on Unsplash

You might be wondering which programming language to learn. After a year in, I can give you some pointers to help you make this decision so you can get to coding.

First, don’t let this overwhelm you but turns out it’s not just about picking a single language to learn. In practice, you will end up learning a handful of technologies no matter which primary language you work with.

Second, what you are choosing up front is a path. Here’s an approach to chart your course and my personal decision process I used for extra perspective.

For starters, ask yourself what your primary goal is. Are you doing it for fun or for career? Do you have a particular problem you are looking to solve? Spend a bit of time to think through these questions. Once you have answers, you can start to research some career paths or talk to professional software engineers for additional perspective.

For me, I started with Python but decided to set that aside and pursue web development as a first step. At first learning to code was a mild curiosity but once I realized it was the single best thing I could do to develop professionally at this point in time, I switched to a full stack web development track.

One thing I have enjoyed about learning web development is the momentum you gain because of the order of technologies you learn. Starting with basic HTML and CSS was much easier to pick up than JavaScript, so you build some confidence working up to it.

It doesn’t take very long at all to learn a little HTML, render a simple page in the browser, and see some quick fruit for your labor.

If I was learning to code for pure fun or education, I would have stuck with Python for its wide variety of applications. The basic syntax is intuitive and there are tons of special packages you can bring into your projects to extend functionality.

Additionally, if I was looking to dive deeper into data science, data analysis, or looking to apply it in a data or finance role, I would also choose Python personally because of Pythons’ ability to manipulate excel files and visualize data.

There are of course many other languages and technologies you can pick up that I have not had as much exposure to.

If my experience doesn’t resonate with you, worry not. Spend an afternoon reading up on alternatives and you can get a good taste of what else is out there and additional learning paths you may want to take.

2. Don’t impose a learn to code deadline on yourself

There are a lot of people promising that you can learn to code in 6 months. The relatively short time frame to reap the benefits of this high opportunity skill is no doubt attractive to many new developers.

With a lot of discipline, time investment, and consistency I believe 6 months is possible to establish basic proficiency. In theory, you can learn just enough, switch to building projects and massively accelerate your progress. This person needs an iron will and temperament to make this happen, and I would consider this type of person somewhat rare.

For the rest of us, I recommend that you set absolutely no deadline where you consider yourself finished with the learning journey. Instead set the expectation with yourself that you will learn when you learn, and you’ll be ready when you’re ready.

Here’s why.

Putting a timeframe expectation on yourself can be extremely discouraging. You may have some bad feelings when the 6 months arrived, and you are still re-reading documents and watching tutorials. Learning to code is a challenging skillset and the timeframe just puts additional pressure on the whole operation.

Unless you have some special time-sensitive reason to learn fast, I say take your time and ease into the journey and lose the timeline.

3. Handwrite a daily coding plan each morning

My best coding days typically start in the morning when I use a notepad to write down what I am going to specifically work on that day. I can’t explain why, but there is something about describing the work on a notepad that sets a tone to put in genuine effort.

It’s much better than reciting in your head that you “need to code” today, which feels like what I say to myself when I need to take out the trash.

It’s a small bit of effort to write your plan down, but it is also a small win and helps build momentum.

It’s popular advice in self-development to write down your big goals, but I like the tactical focus a daily goal brings too. After all, aren’t big goals often just a stack of successful daily wins?

4. Diversify learning sources and add variety to what you work on

Over the past few days, I’ve been working on a project and reading through associated documentation. I haven’t been learning anything new or practicing my existing skills outside of the scope of the project. I was feeling a little stuck.

To work myself out of a rut, I decided to mix things up and work through a random set of three shorter HTML/CSS code along style tutorials. Each tutorial was from a different source, selected at random off of YouTube.

Then, I decided to spend an hour exploring the web and looking at websites which make creative use of CSS. The more creative applications of CSS are extensive and fascinating by the way.

Days like these that have a lot of variety make for great experiences.

While some days you want to focus on a specific activity such as a certain block of code, building in variety can help keep you on your toes and in a learning oriented mindset.

Coding is pretty multi-faceted and is actually a broad set of skills and activities you need to work on, and it’s easy to become imbalanced and only focus on one dimension of skill.

For example, sometimes its beneficial to set aside a video tutorial, and add extensions to your coding environment to enhance your workflow, practice writing some code, or learning some new keyboard shortcuts to improve your efficiency.

It’s also helpful to set aside time to think about designs, come up with project ideas, think about a singular coding problem, read code written by other developers, or look at websites for inspiration (if you are on a web development track).

5. Spend extra time on the basic concepts

There are several seemingly simple concepts you will encounter as you begin to code, such as learning how to write a variable.

You may be tempted to rush through some of these concepts and feel the satisfaction of progress on your journey, but I would encourage you to spend more time on the basics than you think you need.

That’s because the basic concepts build on each other as you are exposed to more advanced topics. Sometimes the basic concepts get recombined in surprising and challenging ways.

Learning HTML, CSS, JavaScript, and soon React, it is astounding how much interconnection there is between the concepts. You learn enough to make basic static HTML pages, only to find out you can generate HTML with JavaScript mostly independent of the HTML file. Old concepts return frequently, so it makes life easier to ensure you are familiarized with them.

Objects and functions in JavaScript also come to mind, because they show up frequently in various contexts and in most if not all projects.

6. Practice Kaizen

What is Kaizen?

Kaizen originated in Japan and is the practice of making small incremental improvements over time. The practice can be applied to a wide variety of domains, from how you do a weekly meal plan to automobile manufacturing (where it originated).

Coming from an operations career background, I have embraced a Kaizen practice in my tasks, aiming to make very tiny and gradual improvements over time. There is often a significant amount of upside to how much a process or task can be improved over time.

Kaizen is easily applied to a coding practice when you consider that it requires the need to continuously learn and apply new concepts, embrace new technologies, and manage the ongoing updates to existing technologies. Kaizen gives the individual a way to tackle the imperatives at hand without feeling overwhelmed.

Kaizen takes a change in mindset, one where you shrug off the idea that anything ceases the need to be improved upon. As people, we like to feel the certainty and closure of being done, but if we embrace the abundant opportunity to develop our processes and skills, it can lead to some very rewarding and interesting outcomes.

If you are interested in learning more about Kaizen as it relates to coding, check out this article:

7. Practice meditation

If you want to go deeper on the topic of meditation and coding, you can check out this article:

Meditation pairs very well with a coding practice.

It can help sharpen concentration, train focus, and recalibrate the mind. I have noticed whenever I meditate, my coding sessions tend to go better.

I’ve meditated for years and didn’t intend to use the practice intentionally for my coding practice. I started coding one afternoon after a meditation session and noticed the work was moving along with a little more ease. Anything that makes work easier and more productive is a win, and seems to be a consistent byproduct when I meditate.

Try it out and see what you think.

Conclusion

My hope is that when you step into your coding journey, you may consider adopting at least a few of these practices. Or, if you are already learning a programming language, you may find some useful perspective in these lessons.

Learning to code is a rewarding journey, especially if you experiment with your approach and process of learning and working.

--

--

Shane McGrath
CodeX
Writer for

I help technical/creative professionals master productivity and deep work to build prosperous and rewarding careers