by Charles Scheuer

What I’ve Learned from a year of coding

5SuUFpEOCwGUQWjGWLlBWM8NDxdSqG3FrrZ4
Photo by Alexandru Acea on Unsplash

In high school, I started learning about graphic design. I made various icons, logos, and Snapchat geofilters. I also developed an interest in websites and how they’re built. But while I thought they were cool, I assumed coding was not for me. This year, I decided to put that thought aside and try it out.

I’ve been amazed at the progress I have made in the past year. So I want to tell my story (so far) to help anyone who is unsure about whether to dive into coding with two feet.

In this post, I will tell you about some of the things that I wish I had known when I was starting out. And above all, I encourage anyone who is on the fence about coding to give it a try.

Thus, if this piece somehow helps you in your coding journey, I will have done my job in writing it. If you do have any questions, feel free to reach out. I will put my contact info at the bottom of the piece. I will also leave links to some of the resources that helped me the most.

8g1ik-BHydjvGJp78IbBD-jC4WOV3zdH37nv
Source: AbtruseGoose

How to get started

When starting out with coding, a lot of people set unreasonable goals for themselves. The problem with this is that nobody can expect to understand coding overnight.

Juggernauts like Bill Gates or Mark Zuckerberg did not wake up and know how to put Microsoft and Facebook together. They spent years curating their skills.

So, when I first started, I decided I wanted to take my time learning to program. I didn’t want to rush myself and get disappointed by my natural, human limitations.

If, however, you don’t agree with me, I encourage you to read Peter Norvig’s Teach Yourself Programming in Ten Years. This should help you realize the importance of learning in the long term. I believe steady progress is more effective for the majority of beginners.

If you were to see 1% increases in your programming abilities by the day, you would be twice as good in 72 days by simple compound interest. People can achieve success by appreciating incremental progress instead of assuming they’ll be superstars within a few weeks.

M5jkhz-H8-ayf1H0vxjHvGkibdTKK63kGdjR
Photo by Kevin on Unsplash

My Learning Process to this point

Last summer I began to casually read Y Combinator’s Hackernews. I also came across some of Paul Graham’s essays, which I recommend if you have any interest at all in startups.

I used his essays as motivation to do some research, and decided that I would try to learn HTML and CSS. Both of these seemed pretty easy for beginners. I started out with reading John Ducket’s book, HTML & CSS.

It was helpful, but if I had to start over again, I would use FreeCodeCamp. The resources on FreeCodeCamp are more detailed, and are at least as, if not more comprehensive, than those in Ducket’s book. They also won’t cost you anything except the time you invest in learning your new skills. FreeCodeCamp’s program allows you to learn by doing exercises for each new concept. I found this really useful when I used it to learn basic JavaScript.

Back to my story: after building a few static web pages using HTML, CSS, and Bootstrap, I decided to try learning JavaScript. JavaScript is really versatile. You can use it to make web apps, desktop apps (using electron), and now mobile apps with React Native. At this point, though, I started to struggle more.

There were definitely days where I wanted to bang my head into the computer screen. Luckily, this is when I found FreeCodeCamp. I used FreeCodeCamp’s basic JavaScript exercises from the front end certification. After that, I read You Don’t Know JavaScript. This resource was a difficult read, but it helped me understand ES6 and the this keyword. Because I started to get busy with school work, though, I didn’t make as much progress.

So, during the spring semester, I decided to take a class on the fundamentals of programming in Java. This helped me understand the basics of programming syntax. It was a really fun class and eased some of my frustrations with learning JavaScript. (If you want to watch the lectures, they’re online here. I found modules 2, 3, 5, 6, and 7 to be the most useful.)

This gave me a basic understanding of computer science. Having knowledge of methods and objects made it a lot easier for me to understand React.

a-Ht9Nb6sgZSbxhxoTaWm-jAaMIlq8nbxXSS
“A workplace with countless rows of desks.” by Alex Kotliarskyi on Unsplash

Where I am now

This brings us to my current goal: to get better at building apps with React Native. I am also taking this course on Udemy to learn more about back-end web development. The information in it is definitely worth the $10 sticker price, unlike most tutorials.

The problem with a lot of coding tutorials is that most of them let you watch someone else build an app. In contrast, FreeCodeCamp, Frontend Mentor, and the course I linked above force you to understand the code by having you write it yourself. And practice makes perfect, right?

Lessons learned

It takes time to really understand this stuff. When working on it daily, you don’t realize how much progress you are making. I didn’t really think I was making much progress until I thought about where I was a few months ago.

By looking back, I was able to appreciate my trajectory, even if it seemed stagnant at the moment. The world of programming is so vast, and there will always be stuff you don’t know. It is easy to feel like an imposter, but even professional developers use Google and Stack Overflow when they don’t know what to do. These tools exist for a reason, so consult them when necessary.

Regardless, I definitely learned the most when I built full websites (or programs with Java). Doing so forced me to put the things I learned into practice and face the challenge of completing parts of the project that were difficult.

My recommendation is to start working on projects after you have a basic understanding of a language’s syntax. This is also more fun, because it allows you to focus on building the things you want while practicing difficult concepts.

I only really started to notice this when I took the computer science class on Java. Before that I had been reading JavaScript books online, which didn’t help me understand things like methods or objects.

Another piece of advice is not to be afraid to spend money on a good tutorial. But before putting money down, make sure the tutorial you’re buying is worth its price. Many of them are just videos of somebody else coding.

So make sure you perform some due diligence when you are searching for the right tutorial. Check out the reviews and the responses to the teacher’s posts on Medium/ Twitter. I am really glad that I got the tutorial on Udemy. It has made a huge difference in my understanding of web development.

Some other resources I found useful:

  • Sacha Grief, founder of sidebar.io, wrote a plan to cure JavaScript fatigue. It gives a great plan for learning JavaScript and the react ecosystem.
  • How to become a hacker is another one that I found on Paul Graham’s blog. It gives you a good roadmap for becoming an expert developer.
  • Front end mentor is new, but has links to some great resources if you are new to HTML, CSS, and JS. The founder will do a free code review if you do the first project he posted and send it to him.
  • CodyHouse is a cool library of HTML, CSS, and JS nuggets.
  • CSS reference and HTML reference are good references for CSS and HTML
  • CSS Tricks has great CSS tutorials
  • Keyframers post cool videos on the type of CSS animation that gets posted on Codepen

Feel free to contact me if you have any questions!

bAY1qnO9qyXONjWQkjoMDlCDAUr5oTlx2lEZ
Photo by Ilya Orehov on Unsplash