[JAVA] How to master programming in 3 months

at first

Become a full-fledged programmer in 3 months at a programming school! There is a promotion phrase like. Can you really master the program in about 3 months (100 days)? Let's think about the path.

Let's do our best seriously because we want to master the program. It's 100 days in a little over 3 months, so I'll do my best for 100 days x 10 hours because it's 10 hours every day without holidays.

  1. Understanding programming languages (20 days)
  2. Program design (3 days)
  3. Understanding DB (7 days)
  4. Understanding Network (10 days)
  5. WEB front end (10th)
  6. Each application (10 days)
  7. Understanding the cloud (20 days)
  8. Git (7th)
  9. DevOps (3 days)
  10. AI (10 days)

Master object-oriented programs

There are various languages such as C ++, C #, Java, Python, Ruby, Swift, Kotlin, Rust, Go, etc. Let's go with C #.

C # (20th)

You need to learn the basic concepts of programming and master various syntaxes. -Variables, conditionals, iterations, methods (1 day) ・ Memory (2 days) ・ Garbage collection (1 day) ・ Various syntax (10 days) ・ Understanding the library (1 day) ・ Regular expression (1 day) ・ Thread (4 days)

Variable, type (2 hours)

First, ask them to master variables. Create a console app and learn how to use variables. We will also increase our knowledge about types. Understand Boolean, Double, Decimal, DateTime, TimeSpan, Guid, starting with Int32, String.

Conditional branch (2 hours)

Learn about if and switch. If-else You will be able to use if-else and understand switch and break, default, throwing exceptions that you will learn later, and so on. Also Boolean type, various operators(&&,||Etc.) Understand how to use.

Repeat syntax (2 hours)

Understand and master the syntax of while, for, foreach. Also, let's understand the difference and usage of each.

Method (4 hours)

Master how to write a method. Let's be able to use method arguments and return values as well. You will also master how to use overloads, return tuples, and more. Variables, conditionals, iterative syntax and methods are masters in one day!

Stack memory, heap memory (2 days)

Understand how variables and class instances are using memory. How to use stack memory by variable declaration and method call, how to use reference type heap memory, invariance of String, layout in memory of each element of array, memory layout at class method table and inheritance, etc. Master It's quite difficult on the 3rd day of learning!

Garbage collection (1 day)

Get a better understanding of garbage collection. Understand the operation of memory management by generation, verification of references, LOH, finalizer, etc., and deepen your understanding so that you can build high-performance programs. I learned about the mechanism of memory by yesterday, so it should be easy to understand (laughs).

Various syntax (10 days)

Master the syntax to learn in order. Let's understand the meaning and write the syntax in about 2 to 10 hours per piece.

first day

class, struct accessor(public, private, internal, protected) property(getter, setter,Auto property, property initializer) method (static, overload, override, abstract)

the 2nd day

Inheritance (virtual abstract) Interface try-catch-finally

Third day

Generics Nullable Partial Type Partial Method

Day 4

Extension Method Lambda Expression Object Initializer Anonymous Type

Day 5

LINQ null conditional operator

Day 6

dynamic, reflection Partial method option parameter

Day 7

async,await nameof exception filter

Day 8

Tuple Type switch local function

Day 9

Expression Tree Span

Day 10

il code

There is a lot of syntax, but you will learn how to write it and learn how to use it. It's quite a devil schedule, but I'll do my best (laughs)

Understanding the library (1 day)

Master how to use a typical class library. Let's master each item in about 1 hour and use it anytime, anywhere. String,Int32,DateTime Dictionary<TKey, TValue>,List,Array SqlConnection,SqlCommand...Entity Framework Task ORMapper HttpClient HtmlAgilityPack,AngleSharp File Stream

Regular expression (1 day)

Master regular expressions using the Regex class. Make sure you understand all the regular expressions you use most often. Let's do our best to keep up.

Thread (4 days)

Master multithreaded programming. -Monitor class, lock syntax ・ InterLocked class · System.Collections.Concurrent namespace ・ Consumer / Producer pattern ・ Join / Fork pattern ・ Worker Thread pattern Let's understand how it works about one per day and be able to actually write code. Multithreading is a difficult task, but let's do our best.

Design pattern (3 days)

For the time being, I will understand the GoF design pattern in 2 days. Strategy Template Method Factory Bridge Builder Singleton Observer Composite Iterator other

Learn about object-oriented and important design patterns. In about an hour and a half, you will be able to fully understand the concept and actually write the code. Encapsulation Single-responsibility principle Open / closed principle Liskov Substitution Principle Interface separation principle Principle of dependency reversal

Understanding these design patterns in 3 days requires a lot of headaches, but to master in 100 days you need to go at this speed. let's do our best!

DB (7 days)

From here, I will change the field and study DB. Understand each object of DB (Server, Database, Permission, Table, Column, View, StoredProcedure, StoredFunction, Constraint, PK, FK, Value), familiarize with SQL syntax, understand the concept of normalization, and design a table. Need to be able to.

Normalization (3 days)

Get a better understanding of the concept of normalization. ・ First normal form ・ Second normal form ・ Third regular form ・ BC (Voice Cod) regular form ・ 4th regular form ・ Fifth regular form ・ 6th regular form ・ Primary key Foreign key -Function dependency -Partial functional dependency ・ Transitive functional dependency

Let's be able to design a normalized table with EC sites, bulletin board sites, task management systems, auction sites, and Q & A sites as actual issues. Master in 3 days. It's a devil schedule, but I don't have time! Let's clench your teeth and keep up! !! !!

Transactions and lock tips (1 day)

Gain a better understanding of transactional concepts (atomic, coherence, independence, persistence). Understand the timing of lock hints, escalations, and unlocks, and deepen your knowledge so that appropriate transactions can be made.

Index (1 day)

Learn how indexes and query optimizers work, understand how JOINs work inside (Merge Join, Hash Join, Nested Loop), and help you design the best index.

Various syntax (2 days)

Master the SQL syntax for working with DB in 2 days. It is a breakdown of one day for DDL and one day for DML.

DDL (1 day)

Master Data Definition Language in one day. Table (Create,Alter,Drop) -- Column(PK,FK,Null,Constraint) Stored Procedure Stored Function Constraint(PK, FK...etc) View User Defined Types Table Value Parameter

DML (1 day)

Let's understand and write the following syntax for Data Manipulation Language in about an hour. insert,update,delete select where orderby group by, Max,Min,Avg,Count join union subquery CTE Row_Number,Lead,Lag,Rank,Dense_Rank, String manipulation functions Date manipulation function other

I think I can take a rest for these two days because I only learn how to write the syntax (Makoto)

Network (10 days)

Now that you've mastered DB, it's time to understand the basic concepts that make up network communications so that you can actually write code and analyze it with tools. Also, let's deepen the understanding of the specifications of typical protocols.

TCP / IP (2 days)

Purchase mastering TCP / IP and read through in one day. On the second day, actually analyze the communication with Fiddler or WireShark, see for yourself how the communication is done, and fully understand it. It's a devil schedule that you read through in one day and master the tool the next day, but I don't have time. let's do our best! !! !!

Request, Response (1 day)

In WEB applications, data is exchanged based on the concept of request and response. Let's actually code ourselves using C #'s Socket class and TcpListner class so that we can do server-side programming. If you can afford it, let's implement it so that the request received by the listener of the server can be processed in multiple threads. C # has been mastered and I've done multithreading, so it's easy (seriously)

DNS (1 day)

Understand name resolution for IP addresses. Let's write a program that implements the DNS protocol in C # and can actually communicate and get an IP address from the domain.

HTTP (3 days)

Understand HTTP. Understand headers and bodies, HTTP Method, response codes, cookies, authentication, AJAX with XMLHttpRequest, and more in 3 days, and be able to actually implement HTTP interactions in JavaScript and server-side languages.

OAuth (1 day)

Understand OAuth authentication. Let's actually implement a WEB application that authenticates using OAuth authentication with APIs such as Facebook, Google, and Twitter.

SMTP, POP3, IMAP, MIME, FTP (2 days)

Learn about email protocols, MIME, and FTP in two days. By touching various protocols, you will be able to understand what the protocols mean.

WEB front end (10th)

Next is the front desk. Master HTML, CSS, JavaScript, TypeScript, and front frameworks in 10 days.

HTML (1 day)

Learn about HTML. Learn all syntax and style in one day.

CSS (2 days)

Master CSS selectors and various syntaxes in 2 days.

JavaScript (3 days)

Based on your understanding of C #, you will master the basic syntax in one day, master how to handle AJAX and DOM in the second day, and master the trendy front-end framework in the third day.

TypeScript (1 day)

Master all TypeScript syntax in one day for more type-safe writing.

Vue.js (3 days)

Master Binding, Routing, Template, etc. in 3 days and become familiar with it.

The last 10 days are mainly about learning and using the syntax, so it's like a short break. I will save my energy and prepare for this.

Application (10 days)

We will practice so that you can build various applications.

Console (1 day)

Let's build a console application. Learn the skills to build applications that can interact with users by making full use of Console.ReadLine and Console.WriteLine. If necessary, acquire knowledge so that you can also link with HttpClient, AngleSharp, and DB.

WPF (3 days)

Understand Xaml. You will be able to deepen your understanding and mastery of Binding, Converter, ObservableCollection, PropertyChanged, etc. Master the MVVM pattern and be able to build high quality WPF applications.

Web application (3 days)

Understand MVC patterns. You will be able to display the page by returning HTML in Razor view for a normal GET request. Also, let's be able to create APIs for API calls from JavaScript.

Mobile app (3 days)

You will be able to study Xamarin and create iOS and Android apps. You will master the basic Xaml writing method and mobile-specific Xaml, and acquire the knowledge to master the terminal-specific functions (GPS, camera, etc.).

Cloud (20th)

Since the times are the cloud, let's understand the outline of each cloud service and be able to actually use it. I don't have many days anymore. Let's understand and use all the functions at a pace of once a day.

App Service (1 day)

Let's be able to build a website. Understand and master features such as deploying from DevOps, slots, and auto-scale-up.

Azure Function Understand the benefits of serverless and be able to actually write code. Let's deepen your understanding of Durable Functions and become able to use it in advanced ways.

SQL Database Build your SQL database to gain a better understanding of index recommendations, automatic scale-up, redundancy, backups, elastic pools, and more to get the most out of it.

BigQuery Let's understand the difference from SQL and master it so that it can be used properly.

Notification Hubs Let's be able to notify mobile.

Redis Let's design and utilize the cache to build high-performance applications.

SignalR Let's deepen our understanding of two-way communication using WebSocket and become able to actually implement server-side and client-side.

Git (7th)

Master source code control Git in 7 days. Let's understand the concept one by one a day and become able to use it properly. ・ Commit, Push, Pull ・ Branch ・ Merge ・ Repository ・ Sync ・ Fork, Pull Request -Other commands such as Stash

DevOps (3 days)

Learn about DevOps for continuous service evolution. We will master typical services once a day.

CI/CD Get to know and master GitHub Actions in a day.

Swap Get to know and take advantage of how blue-green deployment works.

Selenium Leverage the UI testing framework to create automated tests and develop the skills to perform regression testing to prevent degradation during updates.

AI (10 days)

Understand AI in 7 days. Let's master Python in one day, understand typical AI methods one by one a day, and be able to actually write code in Python. ・ Python ・ Machine Learning ・ Deep Learning ・ Image / video recognition ・ Language analysis ・ Classification / clustering ・ Regression and prediction ・ Abnormality detection ・ Reinforcement learning

Summary

How was it? I've been programming for over 10 years, but honestly, if I was asked to understand at this pace ...

As a level of comprehension ・ Understand the concept ・ You can write while checking ・ You can write without looking at anything (it takes some time) ・ You can write without looking at anything ・ You can teach others on the whiteboard without looking at anything There is a stage called. I think it will take more time to be able to explain each knowledge of this article to others. Perhaps it will take about 10 times as long, and if you spend that much time and actually move your hands many times, you will be able to actually write code in a short time instead of investigating, and you will be able to understand the appropriate usage. There is a feeling.

100 days x 10 hours = 1000 hours, multiplied by 10 gives 10,000 hours. I felt that the "law of 10,000 hours", which is often said in the world of sports, is not a mistake. https://www.gqjapan.jp/culture/sports/20160803/the-truth-of-the-10000-hour-rule It is not enough to write 10,000 hours, and 10,000 hours of study is required with a slight load. It will be important to spend 10,000 hours aiming for a higher level of understanding of each knowledge. It's 3 months x 10 times, so for about 3 years, I take a break once a week for about 10 hours every day, and if I spend about 10,000 hours on the program, I think that if I do that much, I'll be in the top 5%. !!

If your boss says that you don't understand well, such as "The training period is long! Can you make it a little shorter?" Or "If you can do it on the WEB, the network looks similar? It's the same IT." let me see. A little may be useful.

bonus

In this article, I wrote the basics, but I also wrote articles for intermediate and advanced users. Please take a look here if you like. I tried to create task management-tools and services to improve from beginner level- Basic knowledge of computer science and its practice that you should know for improving performance Technology and knowledge you need to know to improve the performance of web applications I made the world's fastest Mapper library in C # (3 to 10 times faster than AutoMapper etc.) Functional UI design for programmers Advanced technical articles for becoming a world-class engineer

Recommended Posts

How to master programming in 3 months
How to find May'n in XPath
How to hide scrollbars in WebView
How to run JUnit in Eclipse
[Rails] How to write in Japanese
How to run Ant in Gradle
How to learn JAVA in 7 days
How to get parameters in Spark
How to install Bootstrap in Ruby
How to use InjectorHolder in OpenAM
How to introduce jQuery in Rails 6
How to use classes in Java?
How to name variables in Java
How to set Lombok in Eclipse
How to concatenate strings in java
How to install Swiper in Rails
Understand how functional programming was introduced to Java in one shot
[swift5] How to specify color in hexadecimal
How to implement search functionality in Rails
How to implement date calculation in Java
How to implement Kalman filter in Java
Multilingual Locale in Java How to use Locale
How to change app name in rails
How to get date data in Ruby
How to use custom helpers in rails
How to reflect seeds.rb in production environment
How to use named volume in docker-compose.yml
How to filter JUnit Test in Gradle
How to insert a video in Rails
How to standardize header footer in Thymeleaf
How to include Spring Tool in Eclipse 4.6.3?
How to add jar file in ScalaIDE
How to do base conversion in Java
[Swift] How to fix Label in UIPickerView
How to have params in link_to method
How to use Docker in VSCode DevContainer
How to use MySQL in Rails tutorial
How to fix system date in JUnit
How to implement coding conventions in Java
How to embed Janus Graph in Java
[rails] How to configure routing in resources
How to map tsrange type in Hibernate
How to get the date in java
How to implement ranking functionality in Rails
How to use environment variables in RubyOnRails
How to implement asynchronous processing in Outsystems
How to publish a library in jCenter
How to specify id attribute in JSF
Summarized how to climb the programming stairs
Understand in 5 minutes !! How to use Docker
How to overwrite Firebase data in Swift
How to use credentials.yml.enc introduced in Rails 5.2
How to assemble JSON directly in Jackson
How to execute multiple commands in docker-compose.yml
[For beginners] How to debug in Eclipse
How to use ExpandableListView in Android Studio
How to display error messages in Japanese
How to deploy
Summary of how to select elements in Selenium
[JavaFX] How to write Eclipse permissions in build.gradle
(Memo) How to solve dummy output in Ubuntu 20.04