Expertain

A daily source for the latest news in technology, health and so much more
Menu
  • Technology
  • Science
  • Lifestyle
  • Travel
  • Health
  • Miscellaneous
  • Privacy Policy

Lorem ipsum dolor sit amet, consectetur adipiscing elit

Join Us Now For Free
Home
Technology
How to go from a beginner to an intermediate programmer
Technology

How to go from a beginner to an intermediate programmer

Margarita R. Cave July 22, 2020

The path you should take to go from a beginner to an intermediate programmer can be confusing, and I’ll try to make it easier for you.

I’m now finishing my degree in Mathematics – the majority of my programming knowledge is self-taught. I’ve interned at IBM, and a startup backed by Sequoia Capital (top 3 venture capital in the valley). I was going to intern at FAANG this summer but my offer, unfortunately, was rescinded. I don’t consider myself an intermediate in the real world. However, if you tell me to build a Trello/amazon/Instagram/twitter clone, I can do it.

The advice I’m going to give you is what I wish I received when I started coding. I strongly believe people can get to my level in half the time I took. Consistency and intensity >>> years of experience. As a non-coding example, I recently picked up a new hobby, dancing, and freestyling hip-hop/urban. I was able to catch up to dancers who danced for a few years because I was consistent, had intensity, and practiced deliberately.




You can do the same with coding, programming, and software development.

I started coding at 16 years old, and am 21 now. For the first 4 years, I was stuck in tutorial land. Doing basic HTML/CSS/Javascript, never pushing myself to harder resources. I literally read this HTML&CSS book front to back TWICE. I would follow tutorials that I knew how to do because they made me feel good about myself. The problem is that I wasn’t learning. Don’t do what I did.

The DEFINITION of learning is to move from a state of understanding less to understand more. In order to learn, there NEEDS to be an inequality in understanding. If there’s no inequality and you’re agreeing with everything you’re reading/listening/watching to then you’re not learning. So don’t be discouraged if you’re struggling to understand more intermediate resources. That just means you’re learning.

You might also like: How to find ideas for first projects

After you know your basic variables, control flow (if statements, loops), functions, gtfo out of the tutorials, and start moving to intermediate concepts. You will 100% struggle, and you might find gaps in your knowledge and foundation. That’s a good thing. You caught it early. Go back to the basics and make sure there are no gaps or false confidence in your understandings.

Don’t make the mistake I did. Move to more complex tutorials, and challenge yourself. Struggle with the material.

Now, the path I’m going to talk about relates to classical engineering and computer science concepts. On top of web/mobile development, it’s important for developers to become comfortable with concepts like object-oriented programming (OOP) and data structures/algorithms (DSA). They round you out as a software engineer.

If you’re curious about social media, here’s 7 less known Instagram tips everyone must try.

There is a long journey before knowing how to go from a beginner to an intermediate programmer

OOP/DSA concept




You can learn OOP/DSA concept while you’re learning web/mobile dev. They supplement your learning. You’ll also realize that these patterns and algorithms are used in frameworks/libraries like React, Vue, Express, etc. Also, big companies like FAANG interview you on OOP/DSA. These big companies pay big money. Whoever said no to money?

However, if you need learning paths for web development, you can check out these two resources. Save this post for later. These two videos were created by whatsoever. He went through something similar to my experience (dabbling around for 5 years before he got serious). These two videos are some amazing stuff.

frontend roadmap

backend roadmap

If you’re ready to learn about OOP and DSA (data structures and algorithms) I have a channel that will be teaching all these concepts, but more on that later.

Here is the path you should take when learning OOP. I can also create a post that outlines the path for DSA is people are interested.

Here’s how to go from a beginner to an intermediate programmer:

  1. Pick your language
  2. Learn basic OOP principles
  3. Learn CLEAN and S.O.L.I.D code
  4. Know about Design Patterns
  5. Learn about Domain-Driven Design

Pick your weapon of choice

You can choose any language that has support for OOP, it’s your choice. Just make sure to stick with it. Java, C++, Python, Typescript. My advice would be to choose the language you’re creating applications in. If you’re creating web apps with python/flask, choose python.

I’m guessing that since you’re on this subreddit, you’re writing web apps in React, Vue, Node/Express. So choose Typescript. (My channel is focused on Typescript for example because I’m a full-stack javascript developer). This is a crucial part of knowing how to go from a beginner to an intermediate programmer.

You might also like: Git and GitHub for beginners

Basic OOP principles

You need to have a solid foundation of OOP principles before you jump into the advanced concepts.

Learn these concepts

    • encapsulation




  • abstraction

  • inheritance

  • polymorphism

Books:

  • Head First Java: A Brain-Friendly Guide (to learn basics)

  • Object-Design Style Guide (optional – this teaches best practices you can always come back to this one)

Learn CLEAN and S.O.L.I.D code

Learning how to write clean and SOLID code is important no matter what paradigm you program in OOP or functional

Clean code

    • being consistent

    • meaningful variable names

    • writing pure functions




SOLID CODE Taken from this post

S for the Single Responsibility Principle(SRP), which guides you in creating classes that are responsible for one, and only one actor.

O for the Open/Closed Principle(OCP), which makes your code easy to extend by ensuring that it stays open for extension but closed for modification (this might be the most important of all 5)

L for the Liskov Substitution Principle(LSP), which keeps semantic consistency in complex inheritance hierarchies, making your classes easier to understand and use.

I for the Interface Segregation Principle(ISP), which protects objects from depending on the behavior they don’t really need.

D for the Dependency Inversion Principle(DIP), which controls the direction of dependencies in your code, ensuring that it always flows in the direction of more abstract entities.

Books:

  • Clean Code

  • SOLID principles: Clean Architecture

Design Patterns

This is the bread and butter of object-oriented programming. Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.

Books:

  • Headfirst Design Patterns (classic)

  • Design Patterns Refactoring Guru Website (They also made a great book, learn more on their website)

  • Game Programming Patterns

When I read, I want to truly understand. I get the best books and read them at the same time (concurrently) instead of a linear fashion. For example, if there’s a chapter about topic X, I will read each book’s chapter X. This way you understand the topic from different perspectives and examples. (IMO take this technique with you in your programming career no matter where you go). You can also go ahead and just pick 1 if you don’t have time, you’ll still be fine.




You might also like: The misconceptions about a programmer’s life

Domain-Driven Design

Apply everything you know back to modern-day web application development with domain-driven design. Domain-Driven Design is the idea that your code is structured, architected, and modeled according to how your business operates, making communication between stakeholders and engineers much cleaner.

The book that everyone recommends is the “Blue Book”.

However, this is getting a bit outdated and hard to read.

I recommend you to read Implementing Domain-Driven Design instead.

There are more advanced concepts, but I haven’t got there myself. Check out this post by Khalil Stemmler for more information.

Conclusion This is going to take a LOT of time to learn. Just because you can read the path/outline in a few minutes doesn’t mean it’s going to be easy. It’s going to take a lot of hard work, and grit. But there is a light at the end of the tunnel. Trust me.

Share
Tweet
Email
Prev Article
Next Article

Related Articles

How to Automate Retail- Tools and Strategies
According to a McKinsey report, 45% of current paid activities …

Retail Automation: Tools and Strategies

The switch had been proclaimed for a few times, currently, Apple is serious. The United …

Apple introduces computers with their own chip

About The Author

Margarita R. Cave

Leave a Reply

Cancel reply

Find us on Facebook

Expertain

A daily source for the latest news in technology, health and so much more
Copyright © 2021 Expertain
Theme by MyThemeShop.com

Ad Blocker Detected

Our website is made possible by displaying online advertisements to our visitors. Please consider supporting us by disabling your ad blocker.

Refresh
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non-necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.