Things I wish I knew as a newbie
Tags: javascript, webdev, beginners, programming
Published: 2022-07-25 15:56:52

**TLDR;**

- Learn the basics of computer programming
- Research and choose a programming language and learn its fundamental concepts 
- Break down each concept
- Google and ask questions on the complex concepts
- Practice the concepts many times
- Understand the concept before moving to another one
- Learn to use a problem-solving technique
- Try not to memorize code solutions
- Avoid tutorial hell
- Get a mentor

  _Disclaimer:_ I am a self-taught developer, there is a high chance that you may not relate to every aspect of this write-up if you went through a boot camp. Nevertheless, I hope you find this article helpful either way.

  Finding a straightforward path in tech could be stressful at times. The guide below is a collation of some of my experiences I believe may be of great help to the reader.

  First off, one needs to ask some questions like; what industry do you intend to work in, what are your salary expectations, how long will it take to learn the nitty gritty of this field to land your first job, and many more questions need to be answered before proceeding to start your journey in tech, without further ado, let's dive into it.

**1. Learn the basics of computer programming:** This is probably the first action to take after one might have developed an interest in programming. This will help give answers to questions like; what is programming, why we need to write programs, and what manner of approach can we use to achieve these. As you will agree, this will present a clearer picture of what one is getting into.

>“writing a set of instructions (code) to initiate action or series of actions by a computer could be described as programming. Actions like displaying user interfaces, storing data, linking two or more devices to communicate, placing an order for groceries, etc.”

**2. Research and choose a language:** Human beings communicate with one another by using a common means that involves giving commands, that eventually cause events to take place as a result of the information that has been relayed.

Machines are no exception, but in its case, it understands machines' codes i.e. series of zeros and ones. Do we get to write the machine's codes ourselves? A BIG NO! We have a medium where we can use our day-to-day plain English language syntax to communicate with the computer. This medium/language is known as the programming language.

>“A programming language is any set of rules that converts instructions, most time written as strings into machine codes to process, store, retrieve or cause an event to occur”

We currently have a lot of programming languages available in the tech ecosystem that may tend to confuse a newbie on the right one to choose. The super-secret is, that every programming language can solve every programming problem BUT at varying efficiency, convenience, and speed.

Some important criteria to consider while choosing a language as a newbie includes but are not limited to:
·         How easy is it to understand?
·         The strength of its ecosystem
·         Is it predominantly used in the industry you intend to work in? etc.

  In the twitter space, JavaScript is littered almost everywhere there is a tech discussion or so, is it the only language? No, is it the most powerful? No, but it is among the most used within the tech developer circle. There are other honorable mentions like Python, C#, Java, Kotlin, C++, Carbon, etc. that are so powerful in their own making.

  Make research on the language that is prevalent in your desired industry and stick with it for a while to get the flow.

**3. Break down concepts:** Learning new things can sometimes seem daunting and intimidating by all the jargon that is being thrown at you as you explore. This should be expected as first as you are being introduced to something somewhat unfamiliar at first.

  The crack here is to extract the aspect that is posing a challenge, then minimize it to smaller parts that you can easily understand, check for definition of terms, use cases, and application patterns, then voila! try to connect the dots to its original context.

  Don't be too hard on yourself, understand the basics at first, and as you keep on learning, the concept will be clearer, and the why will be made glaringly obvious.

**4. Learn to use Google:** Google has been saving developers' lives since time memorial. Amongst its plethora of services is its ability to serve as a pointer to thousands of references where your present and future questions have been answered a million times. 
Google search engine will be of great help, as you start out learning to program. But it's easy to get frustrated in trying to sieve out the exact information you need. Take some time out to learn how to use keywords, and patterns to get what you need quickly.

**5. Practice:** It is not enough to have theoretical knowledge about something, but harnessing the practical aspect of it is essential. Having both in your arsenal will help you when faced with challenges. The idea here is to learn about a concept in programming, practice the examples given, understand the flow, and find ways to apply them repeatedly in other cases.

  For instance, if you were learning about loops in programming. The fundamental purpose of a loop is to repeat a block of code with respect to the number of steps that have been set in the condition. That solves the problem of repeating the same body of code some number of n-times.

  Then, we look at the types of loops; for…, do…while, and while loop. Knowing the concept around why they exist will enable one to apply them appropriately.

**6. Don’t be in a hurry:** Yeah, it’s quite understandable that you may want to complete a  whole programming course in a day, but doing that will definitely lead to burn-outs and frustrations. 
The concepts in programming compounds, starting from basic variable declarations to very complex patterns, the knowledge gained from the previous concept serves as a prerequisite to understanding the next one. 

  Therefore,  it is necessary to consume a programming course diligently as the knowledge garnered in one is easily transferable to the next one. 

  Take a deep breath, try to understand the basics and you will be so happy you took the time to find your way around. Don’t beat yourself when a concept seems so difficult to understand, most times using it in practice will help you see the bigger picture.

**7. Problem-solving:** Many times, it is tempting to open a code editor to start writing programs with the delusion that we already understand the scope of the programming task, then some minutes later we find ourselves stuck in a state of confusion and frustration, mirroring oneself as an imposter or the dumbest person in tech.

  The issue most times is not the programming task or code syntax or maybe the computer is stupid but that we jump too quickly into writing codes instead of understanding the problem statement first.

What we could do instead is:

- Go through the problem statement multiple times
- Extract some key pointers in the problem statement
- If the problem statement is too complex, break it into smaller parts
- Look back into your toolbox, and find the concepts you have learned which could be applied to any segment of the problem.
- Apply your solution in parts, then combine the whole solution into one.

  Remember, to always read to understand what you are up against; find simple means to solve it and optimize your solution later.

**8. Do not try to memorize code solutions:** It may be tempting to try to memorize code solutions that we ever come across. Though, that may serve its purpose in solving the current problem but would be detrimental in the long run because programming problems are dynamic and there is no one cap fits all, kind of solution.

  The best approach to use is to understand the flow of operation in code solutions, and why and when we use certain methods. This way, we could possibly extract the part of the solution we need and make some readjustments to the current problem being faced.

  In a nutshell, there is no need to memorize. Programming problems are dynamic, try to understand the concept to apply later on.

**9. Avoid tutorial hell:** What is tutorial hell? 
Tutorial hell could refer to a process where one continuously watches videos in order to gain mastery but is practically unable to implement solutions thereafter.

  It is so easy to get caught up in the illusion that you are actually understanding the concepts and solution patterns being demonstrated in the videos, because the brain is actually tricking you that you could implement it, until its time to do such, and then voila, you realize that after watching the video for n-number of hours you could barely implement some lines of codes accurately.

  Realistically, these tutorial videos do not give the fundamental knowledge required to solve a programming problem from scratch. Don’t get me wrong, tutorial videos are great, there are specifically made to introduce a concept for quick referencing.
 
  And there is no need to see yourself as dumb when you can’t immediately implement what you have watched from a tutorial video. Certain factors may have contributed to it; lack of solid foundation of programming concepts, and the fact that tutorial videos are well planned out before being shot, and could take a day or two to have a  5 hour of the tutorial video after final edits.

  Always try to read the documentation on how to use the technology well.

**10. Get a mentor: **
	>“If I have seen further it is by standing on the shoulders of Giants” - Isaac Newton

  In every aspect of endeavor, getting a mentor is important. If you want to be good; go alone, but if you want to be great; get a mentor. A mentor could be someone who is ahead of you in experience and can contribute immensely to your developer's journey.

  Yeah, I know, you are just starting out. How can you get a mentor? Mentors shouldn’t be limited to persons which we can see physically, it could be someone you admire their work online and have learned from their wealth of resources shared, maybe in a blog post, articles, open source projects, etc. They have gone through the stage you are currently in and could share valuable insights on how to navigate the sphere of programming faster.

You can essentially be mentored without the person’s physical presence. You can also reach out to the person, who knows, you could eventually get yourself a mentor.

  If you read up to this point, congratulations. A developer’s journey is a marathon, not a sprint. It's filled with ups and downs, periods where you will feel like a dummy, and other times like a superstar. But, in all these transitions I hope you believe in yourself to always come out great.