[RUBY] How to organize information to make programming learning more efficient

1.First of all

Hi, I'm new to programming. ** I'm in despair right now **.

When learning programming, consider the following.

"I can't move forward than I expected." "Because there is a huge amount of learning. Moreover, it seems that technological progress is so fast that the knowledge learned three years ago becomes obsolete." "How much should I learn !!!?" "Where am I now !? What are you learning!?!?" "Which field is this technology !? Which field is this word !?" "What are the benefits of this technology? How do you use it?" !? "

Confusion next to confusion. Mental illness, desperation, overwhelming excitement. I scream and crawl around the night road today. Insanity.

I want morphine. Move in morphine. Stop this me who was dominated by madness.

And this is the situation. help me.

It's okay to step into the IT industry, but I'm studying every day with the above thoughts in mind. Then, as I went along, I realized that ** "Isn't it easier to see if a huge amount of technical information is sorted in this way?" **. Right now, I have transcended Renho and evolved into the current god. Worship, people.

This article is for "beginners" and "people who want to get rid of beginners like me but are sluggish", and is an article that provides one answer ** on how to organize information. It's time to go.

2. Organizing information means "having a compass and a map."

As the title says. ** Organizing information means "having a compass and a map". ** **

What is a compass? What is a map?

First of all, what is "compass and map" in this article? Indicates.

As I said earlier, "I'll give you one answer about how to organize information," this article is aimed at ** "organizing information" ** in your mind. ..

And earlier

"I can't move forward than I expected." "Because there is a huge amount of learning. Moreover, it seems that technological progress is so fast that the knowledge learned three years ago becomes obsolete." "How much should I learn !!!?" "Where am I now !? What are you learning!?!?" "Which field is this technology !? What field is this word !?" "What are the benefits of this technology? How to use it?" of!?"

Remarks

** ① "Because there is a huge amount of learning, I do not know where I am and what I am learning." "Specifically, the skills and words to learn are the skills and words in which field I don't know. Ambiguous. "**

** ② "Advantages of technology, how to use" **

It can be sorted into such contents. ** "I want to organize information, but I don't know where I am and what I am learning because of the enormous amount of learning." ** The current situation is.

As a method to solve the problem, I presented a solution called "Have a compass and a map". All you need is a compass and a map ** "By organizing your information, you can understand where you are and what you are learning" **. (merit) In other words, ** "compass and map" refers to "a concept of thinking that allows you to organize information so that you can understand where you are and what you are learning" **. I will. (Definition)

To put it bluntly, ** you need an easy-to-understand roadmap when learning! ** That is.

A long time ago, a high school math teacher said this when he started the number II unit. "First look at the table of contents. First of all, get an overall picture of what field you are studying and what enemies you should defeat to reach the goal of taking the exam. Then you will be passive in the dark clouds. You don't have to study hard, you can feel that you are moving forward, you can keep your motivation, and you can see that the map in your head fills up more and more, which makes studying more and more fun. "

** Isn't programming the same? ** **

Except for the genius who was fascinated by programming, I don't think most people can keep their motivation for programming 24 hours a day. And beginners, who tend to take a huge list of technical terms and English words as just symbols, tend to be late in noticing their appeal.

When a mediocre or untalented person who can't keep that motivation for 24 hours, or a programming beginner still wants to move forward, ** instead of just walking the world in the dark clouds, a "compass" to organize information Isn't it important to have a "map" **?

Next, I will introduce a concrete example of information organization using ** "Compass and Map" ** for organizing information.

3. Overall bird's-eye view

This section introduces specific examples of information organization using "Compass and Map".

Contents

(1) Presentation of an overall bird's-eye view (large heading) of information technology (2) Presentation of an overall bird's-eye view (middle heading) of information technology ③ How to organize information in practice using the above

It has become.

The simplest thing to do from now on is "create a table of contents and create your own dictionary."

Expressed as an image, it creates something like the image below.

https___qiita-image-store.s3.amazonaws.com_0_7465_cbc50a23-db31-8cde-21eb-b5c20365bdca.jpeg IMG_4552.JPG bft_infra05_02.png challenge-for-statups-cto-from-big-company-nagaaki-hoshi-19-638.jpg

3.1 Overall bird's-eye view of information technology (big heading)

First, I will present an overall bird's-eye view (big heading) of information technology.

[Overview of information technology](https://ja.wikipedia.org/wiki/Basic Information Technology Engineer Examination)

This URL is Wikipedia for the Fundamental Information Technology Engineer Examination. The heading ** "Question Range" ** is the ** Information Technology Table of Contents ** that we will learn in the future.

"I don't know where I am and what I am learning because of the enormous amount of learning." "Specifically, what fields of technology and words are the techniques and words to learn?" I don't know. Ambiguous. "

It is a ** rough answer ** to the conflict / question.

3.2 Details of the overall bird's-eye view of information technology (middle heading)

In 3.1, we created a table of contents for an overall bird's-eye view of information technology.

However, the table of contents created earlier is just a ** heading ** in the table of contents. In terms of law, it is just a rough division of constitution, education law, social law, civil law, and criminal law. In the manner of 3.1, we must now create ** middle heading subheadings ** such as the Code of Civil Procedure, the Code of Arbitration, the Civil Enforcement Law, and the Civil Conservation Law.

In 3.2, the whole information technology of Ruby and Rails is derived from the basic theory of [URL above](https://ja.wikipedia.org/wiki/Basic Information Technology Engineer Examination)> Algorithms and Programming> Program Languages. Let's make a bird's-eye view by referring to the article by @jnchito.

Ruby language

** Object-oriented programming ** Classes & modules Attributes & methods Inherit & mixin

** Functional programming ** block Proc & Lambda

Flow control Sequential processing Conditional branch repetition

** REPL (Interactive Evaluation Environment) & Debugging **

** Metaprogramming **

Ruby gems RVM&rbenv Gem file organization Open source etiquette Bundler & Dependency Management

Rails framework

MVC Asset Pipeline & Preprocessor UJS(jquery-ujs) performance Surveillance Cache & Pagination Background tasks

REST routing API JSON&XML Hypermedia Nested resources & namespaces

** ORM (Object-Relational Mapping) ** Relational schema migration Normalization Foreign key index Document store (document database) Relation Dependencies Eager loading Validation & callback

** User management ** Authorization Authentication Multi-tenant function

** Terms & Best Practices ** I18n (internationalization) & time zone ActiveSupport Security & default settings

** CLI (Character User Interface) ** Rails console Rails generator Rake task

By doing this, you can get a bird's eye view of what technical elements you are learning in a programming language.

Therefore,

"I don't know where I am and what I am learning because of the enormous amount of learning." "Specifically, what fields of technology and words are the techniques and words to learn?" I don't know. Ambiguous. "

You can solve the problem.

And even in the subheadings, the granularity of information is probably larger, so https://gihyo.jp/book/2017/978-4-7741-8883-6 https://www.amazon.co.jp/dp/toc/4774193976/ref=dp_toc?_encoding=UTF8&n=465392 Let's fill in a fine-grained overall bird's-eye view through practice using books such as.

3.3 How to organize information in practice using the above bird's-eye view

In 3.2, we created middle-heading subheadings such as the Code of Civil Procedure, the Code of Arbitration, the Civil Enforcement Law, and the Civil Conservation Law. Finally, I will describe how to make details such as Article 5.125 in the Code of Civil Procedure.

The overall bird's-eye view is created to "organize a large amount of information so that you can understand where you are and remember what you have done once." Therefore, in practice, I would like to use it like a reverse lookup dictionary.

For specific information organization procedures

① While studying, look up technical terms, services, error messages, etc. that you do not understand

② After checking, paste the technical information and the URL of the article into a memo pad.

Organize information according to the procedure in.

And

The specific method of organizing is as follows.

** ORM, DB system ** ** I want to change the [Rails] column name ** https://qiita.com/libertyu/items/93acd8733e34b1d0a63c ** [Rails] Make a seed ** https://qiita.com/takehanKosuke/items/79a66751fe95010ea5ee https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-sample_users https://teratail.com/questions/73713 ** [Rails] Delete migration file ** https://qiita.com/tanaka-t/items/cd6aa0526725e88f5024 . . .

This is organized by pasting the URL that solves the problem of "I want to delete the migration file!".

As a benefit of doing this

** It is possible to prevent time loss when "I did the same content / error before, but I can't remember which web page I referred to" **,

** Because information is accumulated in the overall bird's-eye view, it is possible to cultivate a sense of psychological security in long-term technical acquisition **

Can be mentioned.

(Added on 2020/07/26) I used the method in this article to organize the contents of the Rails Tutorial. Rails Tutorial Cheat Sheet

4 Summary

This concludes our talk on how to organize everyday information using the big picture.

In summary,

** "Being able to understand where you are and what you are learning" is one of the important factors in improving work efficiency. However, in the conventional case, "I want to organize information, but I don't know where I am and what I am learning because of the huge amount of learning." ** **

** You can organize information by having your own "compass and map". As a concrete method, paste the Wikipedia heading of basic information or the middle heading of Ruby or Rails into Notepad if you are a Ruby learner, and create your own dictionary table of contents. This is very important as a method of "understanding the position of technology in organizing and learning information". ** **

** Create your own reverse lookup dictionary by pasting specific questions and articles that solve them in the table of contents below. As a result, it is possible to prevent a time loss of re-examining the contents once done from the beginning, and to cultivate a psychological sense of security in long-term skill acquisition. ** **

It became the content.

This saves you from hitting morphine eight times a week. See you next time in the duel edition. goodbye.

Recommended Posts

How to organize information to make programming learning more efficient
How to make duplicate check logic more readable
How to make shaded-jar
[Rails] How to make seed
Learning Ruby with AtCoder 13 How to make a two-dimensional array
Introduction to Programming for College Students: Make Straight Lines More Attractive
[rails] How to display db information
How to make a Java container
How to master programming in 3 months
How to make a JDBC driver
How to make a splash screen
How to make a Jenkins plugin
How to make a Maven project
How to make a Java array
[Android] How to make Dialog Fragment
Programming learning record 89-Fahrenheit temperature to Celsius temperature-
How to make a Discord bot (Java)
Let's migrate to make Java more comfortable
How to make asynchronous pagenations using Kaminari
Summarized how to climb the programming stairs
How to add application version information to Sentry information
How to make Spring Boot Docker Image smaller
How to create a class that inherits class information
How to make a lightweight JRE for distribution
How to make Unity Native Plugin (Android version)
How to make a follow function in Rails
How to make an crazy Android music player
[Java] How to make multiple for loops single