Learning Programming Using Doc's
Tags: python, documentation, beginners
Published: 2022-03-29 20:03:48

## Things I wish I knew before being an Junior Dev: Learning

From my first post where I was sharing things I wish I knew before beginning my internship, I had expressed the 6 most important things a junior must know and use to scale their profile and grow their skill set as a developer.

Here we will discuss how to get around learning a tool or language while using the documentation or using a textbook.

## Learning how to learn:


![learning how to learn](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rvscv07jxibru0eqi9x9.jpg)

With this I want start by saying its important to check out the **four styles of learning** and also do self introspection to see  which one works best for you. So how about you look at your past learning achievements and see which process of learning you have done before that gave you best result or even how you can improve it.

- Create a flexible pattern of learning that you will use for grasping concepts and **understanding material effective** and **efficiently** but base it on your preferred learning style. 

- Make a habit of **setting miles stones** for your learning code. Look at the different subjects relating to that tool or language, the different uses & try to learn them individually and write summary of your understanding.

- Another achieve your milestones is to make small programs with what you have learnt or code along with your tutorial video or the documentation you looking at and we will discuss that later also. 

- If you don’t manage to finish a course or finish a tool tutorial, make a note to put book mark where you left off and come back to **finish it** off later, its a good habit to start and finish things.

## Have a reason to learn that tool:

![reason to learn](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8od2180vf83vhag04ryz.jpg)

Whatever tool you working on let it have value in the beginning of your learning, because learning it without a purpose you will burn out of boredom or you will waist your time gaining a skill you wont be happy working with.

- Look at your what your **employer needs**, or look at the projects you intend to build or the company you want work for and learn skills and technologies so that your target market sees value in you.

- A good example is, if I intend to work for Designative, I need to look at their LinkedIn and see what types of skills they need, then I will start learning those and staying up to date with who else needs those skills . Then when I start I know my goals are to **master this **tool enough to maintain the type of software Designative uses.

## Which resource do I use to learn? 
A huge part of learning is mostly you trusting the validity of what ever tool or method you use, So here I am just showing examples of the content which is available out there and i hope you can go out and search for the material that works for you or a content creator that resinates with you. 

Books 'my fave!!' - [PDFDrive](https://www.pdfdrive.com/)

Online courses for programming like [Udemy](https://www.udemy.com/?utm_source=adwords-brand&utm_medium=udemyads&utm_campaign=Brand-Udemy_la.EN_cc.ROW&utm_term=_._ag_80315195513_._ad_535757779892_._de_c_._dm__._pl__._ti_kwd-310556426868_._li_1028712_._pd__._&utm_term=_._pd__._kw_udemy_._&matchtype=e) & [Sololearn](https://www.sololearn.com/) 

Coding games - [Codewars](https://www.codewars.com/) & [codearena](https://assessment.hackerearth.com/challenges/college/ietcodearena/)

You tube videos - [WebDevSimplify](https://www.youtube.com/watch?v=YaONowiQKW8)

Blogs - [Dev.to](https://dev.to/) & [Github Blog](https://github.blog/)
- These are just examples of good blogs, video creators and also games that will help you learn and grow.
Challenges - [Geek4Geeks](https://practice.geeksforgeeks.org/courses/competitive-programming-live/?utm_source=geeksforgeeks&utm_medium=subment&utm_campaign=GFG_Submenu_CP)
## How do you learn code:

- So what's important when learning a library, framework or a programming language is to be able to use it and also **understand the fundamentals** of how it works and how you can use it on a high level.

- So you want to be able to be efficient with your learning process and also effective with your information consumption. This means you have to learn to understand the tool and within that same go you aim at being able to use it effectively after your learning process.

- You also want to **practice** the different design patterns and tools available there to see how it behaves and the bugs that are possible with your logic and consumption.

- You also want to have something to satisfy yourself after learning, and so if you create something while you learn you will have something to be happy **you achieved**, something more or less tangible.

## Example of using documentation:

We have a very good example on the video I explain using the python documentation to learn how to use the [tkinter](https://docs.python.org/3/library/tkinter.html) library

- So in this [video](https://youtu.be/EAD_kYizR5o) I show how following the instruction in the documentation and also see how you will get stuck and start debugging.
Link the video
- When using the docs to learn something you want to first install it properly and set up your environment. 

- Some times you have to download the tool or library like bootstrap and you will use it on your machine.

![bootstrap page with download button showing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kcz3klisrycvq6nf1dpi.jpg) 

But then if you don’t intend to use it locally you can also used the CDN like the following image, So you copy that link to the CSS online and paste it in your project or your html.
 
This image shows the download for the node installer.

![downloading node installer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/of5hftra725vtvqsgr33.jpg)

- For situations where you have a package manager line node js already installed, you would have to use the `npm install` command to install things, for example installing a tailwind library: 
In this following image we see installation of the tailwind css cli,

![tailwind css installation](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/61090sbcnqxwdc515imd.jpg)

In this instance we see how to install using postcss

![installing tailwindcss with postcss](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vmdkhydhb0xczhquw5d5.jpg)

In this instance we can see how to install bootstrap instead of downloading it.


![installing bootstrap](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mghtnhvpwwc39igxgfj.jpg)

In the following image we can see what's possible, we can see more guidance on how to config your environment for using the tool and also how to start out, and so you can see the docs will help you get started.

![Getting started with programming](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwb5ngaszg838dls31un.jpg)
- So the docs are out there for you to use, go get it friend!!

## How to stay at the top of your game:

![https://unsplash.com/@prince_perry?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyTex](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8d0ewn23r43t4fo8fevq.jpg)
- Creating code alone or just for your own pleasure can get uninspiring and boring, I suggest you involve other developers in your growth. Try learning the tool together, do some buddy programming, or even build the same thing using different logic.
 
- Talk to your senior and hear what they think about what you have done thus far and how you could improve your work or your code.

- This way you can also have code review to see how much your understand and how you can apply some standards in your projects.

- Also describe the bugs you facing and ask for possible fixes for the problem you facing, this can greatly expose you to different problem solving methods.

- Ask for chance to work on projects that relate to what you have learnt so your skills can be tested and can grow.

- Don’t be satisfied by building hello world program with each tool you learn then forget about it, go deeper, understand all 
the fundamentals, check how they are applied in different instances, solve problems for other people on that tool. You Have To Be Pro Active.

## Example of using documentation:

We have a very good example on the video I explain using the python documentation to learn how to use the tkinter library
- So in this video I show how following the instruction in the documentation and also see how you will get stuck and start debugging.
> Check out how [python Documentation ](https://youtu.be/EAD_kYizR5o)

## The Goal of learning:

![path to sowewhere](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cp6e0915p0bdi5ge9eop.jpg)
- Its smart to practice iterative learning, learning to reach a small goal, then set a bigger or much in-depth one then do it again, then keep iterating till your goal becomes mastering.

- Firstly its always import to be clear that you learning to understand and be effective when using a tool, to be able to read someone’s code or create a beginning project that works. 

- Second you want to learn to use best practices and understand higher level concepts or patterns above the fundamentals and practice those on your beginning project. 

- Third you want to build learn some of the concepts or design patterns used for different  scenarios with that tool and understand those and their bugs.

- I know you have an app idea lol, I suggest you take this time to build that project and apply those fundamentals and their high level counterparts.

- We can also use other channels of learning like this [react docs](https://youtu.be/QFaFIcGhPoM?list=PLC3y8-rFHvwgg3vaYJgHGnModB54rxOk3) video where you have a collection of videos with good quality information which is like a translation of the documentation as a video.

Let me hear your ideas on how we can improve this process for better learning. I am ready to learn more.

Follow me on LinkedIn and lets connect - [vukani](https://www.linkedin.com/in/nqubeko-gcabashe/)

Follow me on Instagram because I will create content -[vukani](https://www.instagram.com/nqubekogcabashe/)