Blog

My thoughts and ideas on technology, development, and more.

Never stop learning

For those who have graduated from whatever school or program, they’re attending, it's not unusual to see people take an extended break from the coursework they were once doing. After all, working day and night to meet deadlines for assignments, projects, etc to get a good grade, it would make sense to take a break after you've completed everything right? Wrong, doing this will be doing a great disservice to you if you’re planning on taking the field you’re trying to get in seriously. Because I am a software engineer I will be using getting a computer science degree and attending a Bootcamp as examples to help visualize why exactly the practice of continuous learning is the trick to become good at what you do. Photo by Windows on UnsplashFirstly, you need to understand how your brain works when it comes to learning new subjects. In your brain, you have billions and billions of neurons that fire off when your body is trying to do any kind of function just like the way electricity moves through a circuit when you plug it into something. The purpose of these neurons is to send information back and forth when you try to do an action like walking for example. Photo by Bret Kavanaugh on UnsplashMost people can't remember the first time they walked as a child but they definitely are able to walk on a day-to-day basis. The reason for this is when you learn something you have to continuously practice what you learned so that your brain doesn't forget it. Now to compare walking to finishing an assignment might not be the best example for some but it all boils down to how to brain works. When you learn anything at all, some important changes happen in the brain like the bond between your neurons becoming stronger. This is why when you continuously practice one thing, you're able to get better at it the more you practice. Photo by Zhang Kenny on UnsplashNow typically, while using software engineering as an example, many students first thought isn't to go back home and continue coding. Most of the time they want to take a break, which in itself isn't bad, but most of the time they become too comfortable and start to slack off. They have to remember that the brain loses over 50% of the content it learned in one hour alone! This is insane given that there are people who seem like geniuses without studying all day. Though this statistic is quite alarming luckily there is something we can do about it and it's right in our face, just continue to learn. Just like working out, initially, it might seem grueling and you'll want to give up. But there comes a point where you start to enjoy the soreness and you start to see the results of all of your hard work. This simple concept can be applied to anything and most importantly, it can be applied to the most important organ in your body, the brain. Photo by trail on UnsplashThe skill of learning how to learn is a lifelong journey so don't beat yourself up over not understanding something immediately, that's the beauty of being able to learn. In my software engineering Bootcamp experience, I was forced to learn many concepts in a short amount of time, some of which felt impossible. A few months later I can proudly say I am a graduate and though I may be a rookie, I feel like I've become very good at this amazing skill, and with hard work and PERSISTENCE, you can too.

The programming superpower

As a kid or even as an adult you’ve most likely heard of people with superhuman abilities like being able to hold your breath underwater for extended periods of time, being able to solve math questions at lightning speeds, super speed, and so on. These abilities are quite rare with less than 1% of the population being able to achieve some of these feats, but you probably didn't know the same can be said about programming. Out of approximately 7.2–7.6 billion people in the world in 2017, only 0.5% of these people possess the skill to program. To give an idea of how small this number is, there are probably more people attending Coachella or rolling loud than there are programmers in your current city. Some might disagree and give different reasons as to why they don't think coding is a superpower but it demands a particular mindset and logic which many people lack. Photo by Ross Sneddon on UnsplashTo a person with a programming mindset, something as simple as an “if” statement doesn't seem too hard to understand but the same cant be said about many others without this mindset. This is something we do subconsciously in our everyday life and being a programmer means you can communicate with the computer using a high level or a low-level programming language to make the machine do what you want it to do and that is something that requires a level of logic and problem-solving skills when you get to bigger projects. Programming should not be confused with coding as coding is only a part of programming. It is the part that deals with converting the language into commands that are readable for the machine as to where programming is the process of creating a program that performs a certain task. Programming also isn't just sitting in front of a computer writing code all day and programmers know this. Photo by LOGAN WEAVER on UnsplashIn some ways, the path to becoming a good developer can be compared with the path to become a star athlete. When you see them play on TV they make the thing they do look so easy even when playing at such a high skill level. The part you don't see is the endless hours of training day and night and the pain they had to endure in order to become great. The same can be said about programming when you have to read pages of documentation to use a new feature, keeping up to date with the latest technology, and debugging your code accurately and effectively to name a few. Photo by Fotis Fotopoulos on UnsplashNow, this shouldn't discourage anyone looking to learn how to program because there was a point in time where the majority of people didn't know how to read past an elementary school level. With practice and repetition, you can go from someone who knows nothing about code to a coding superhero.

The Dunning Kruger effect and programming

The Dunning Kruger effect for programmers The Dunning Kruger effect refers to a chart that explains the relationship between a person's confidence in their ability and actual expertise/knowledge in a particular field. In psychology, put into simple terms, basically states that people with limited knowledge or competence in a given field or intellectual domain tend to overestimate their own knowledge and/or ability. Though this chart has many applications, I believe it shows a really good example of what the journey between going from a junior developer to a senior developer looks like. Peak of “Mount Stupid” First I will go over what exactly the peak of “Mount Stupid” is which is where a lot of junior developers are. When you first learn something a lot of the time you become highly confident because you don't actually know just how much you don't know which is especially true when it comes to programming. Coming from my own experience, an example of this was when I first learned ruby. I felt the syntax was easy to read, the program was easy to use, and I wouldn't have a lot of things to worry about until I was introduced to ruby on rails which opened a whole new window of things I can do with this language and revealed I had a lot more to learn. Many people who get to this point believe they know it all and sometimes even stop learning because they don't do any deeper research and are just too confident. Valley of despair As you continue learning you realize there is actually a lot more that you need to learn which brings you to the point in the chart labeled “valley of despair” which is where you start to see a lot of programmers who aren't prepared go through a depressive state. A good example of this is when new programmers go through impostor syndrome when learning how to code. This leads to a lot of self-doubts and your confidence starts to really take a hit. This is also another point where some people tend to quit because they feel like they’ve learned nothing and the hill to greatness is just too far out of their reach but this couldn't be further from the truth. Photo by Jonathan Klok on UnsplashSlope of Enlightenment If you haven't given up learning once you're in the valley of despair, congratulate yourself because you've already gone past the hardest part of the learning curve that a lot of people don't reach. When you get to the “slope of enlightenment” part of the curve you've come to accept that you don't know everything and it's impossible to know everything but you continue to learn to continue to become better at what you do. This is where most of your “real” learning begins because you’ve gone from a mediocre programmer to a decent one because you now know what it takes to become a senior. Now, this isn't saying that there aren't junior developers who don't know what it takes to become a senior developer but when you’re first getting started it's almost like running a race without knowing where the finish line is. Photo by Vlad Sargu on UnsplashPlateau of sustainability Lastly, we have the final part of the chart, the “plateau of sustainability” which is where you’ll find most senior developers and people who happen to be really good at what they do. Though it is very similar to the “slope of enlightenment” part of the curve this is where you understand the limits of your knowledge and you actively and precisely work to improve your knowledge. This can be clearly seen if you ask a junior dev and a senior dev the same question when it comes to a bug in a program. A junior dev might tell you something along the lines of “how about we try this and see if it works” with no actual basis on why they want to try their given solution. In the same situation, a senior dev might tell you “I don't know, let's search it up and see if we can find this problem through the documentation” which shows that even though the senior dev doesn't know the answer to the problem right on the top of his/her head, they know what to do to find the answer.

Productivity tips and tools for new developers

Take notes as you learn Though it may seem basic, taking notes is a very useful way to remember important concepts you may forget. In my personal experience, I've learned that taking notes and reviewing them after a study sesh helps me solidify everything I just learned. Make sure not to make your notes too wordy and write down the most important points. A tool I like to use to take my notes on Windows is Microsoft OneNote because of its simple interface and ease of use. There are other sites like Evernote and the notes app if you’re on Mac. Photo by Cathryn Lavery on UnsplashMake sure to take advantage of plugins in your IDE or text editor Using plugins is a great way to improve productivity while coding. There are many plugins online that help you do some of the repetitive tasks like setting up your index page in HTML to giving you a live view of what you’re working on within a dedicated browser. A good example of this is the Emmet plugin in Visual Studio Code which automatically completes the whole suggestion instead of just a single word when you enter the Emmet abbreviation. These are powerful tools and this one only barely scratches the surface of just how many things you can do with plugins. Documentation is your friend Documentation sites may seem daunting to a beginner programmer at first glance but you quickly realize that it is an incredibly useful tool that improves the workflow when used correctly. Photo by Sigmund on UnsplashThis is especially important because new developers will try to cram everything about the language when all you need is just an understanding of the concept so you can refer back to your notes or docs to help you implement it into your code. Some useful sites to find various documentation on different languages you might be using are: https://www.w3schools.com/ MDN Web Docs These are sites I use personally for web development and they are a great help when you don't remember the particular syntax for a function or other questions that may arise. They can also help with useful features you might not know about and they do a good job of staying up to date with any latest updates to the language. Photo by Jenny Hill on UnsplashLastly, remember to take breaks and EXERCISE It's easy to get carried away when you see just how much you have to learn once getting into a new programming language. I struggled with this myself, staying up late nights trying to learn as much as I can but getting nowhere and only burning myself out in the end. You have to remember that coding is a marathon, not a sprint. Meaning, keeping a steady pace that you’re comfortable with instead of burning all your energy in the first few laps will greatly help you in terms of learning and productivity. Speaking of running, don't forget to exercise regularly. As a programmer/developer, you are spending a lot of time sitting down in one spot with occasional stretches but you should make it a goal to at least go for a walk or jog every day for your health.

Life lessons learned through my software engineering journey

In my life, there have been many failures and different times where I feel like life is just too challenging or overwhelming. I keep making mistakes and I'm constantly being introduced to new problems every day which many people can probably relate to. After starting my coding boot camp it felt like many of my problems would become worse but thanks to the awesome community and friends I've made it has helped me look at life challenges in a different light. Photo by Clint Patterson on UnsplashOut of all the things I've learned at this boot camp so far, the most important thing was to think like a programmer. What this means is to really think about what you're doing inside and out. A good programmer doesn't go into a new project or starts debugging without a plan or a general idea of the outcome they want first. When faced with a lot of errors, the first step isn't to rush in head first and get to solving right away as this might confuse you or make things more complicated which can be said about life too. Photo by Rich Tervet on UnsplashAnother lesson I've learned through this journey is that because choosing software engineering as the pathway I've decided to take career-wise, I will be learning for the rest of my life and an important skill I had to learn early on was how to “learn” and fast. Most people think they know how to learn, myself included, but the fast-paced curriculum has shown me I'm not as good as a learner as I thought I was. Over time I became more comfortable with not knowing and understand as a software engineer I can't know everything but everything can be learned. Knowing this has brought me more peace and makes the learning process fun instead of grueling.