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.
There are various languages such as C ++, C #, Java, Python, Ruby, Swift, Kotlin, Rust, Go, etc. Let's go with C #.
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)
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.
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.
Understand and master the syntax of while, for, foreach. Also, let's understand the difference and usage of each.
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!
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!
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).
Master the syntax to learn in order. Let's understand the meaning and write the syntax in about 2 to 10 hours per piece.
class, struct accessor(public, private, internal, protected) property(getter, setter,Auto property, property initializer) method (static, overload, override, abstract)
Inheritance (virtual abstract) Interface try-catch-finally
Generics Nullable Partial Type Partial Method
Extension Method Lambda Expression Object Initializer Anonymous Type
LINQ null conditional operator
dynamic, reflection Partial method option parameter
async,await nameof exception filter
Tuple Type switch local function
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)
Master how to use a typical class library. Let's master each item in about 1 hour and use it anytime, anywhere.
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.
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.
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!
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.
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! !! !!
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.
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.
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.
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
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)
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.
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! !! !!
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)
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.
Understand OAuth authentication. Let's actually implement a WEB application that authenticates using OAuth authentication with APIs such as Facebook, Google, and Twitter.
Learn about email protocols, MIME, and FTP in two days. By touching various protocols, you will be able to understand what the protocols mean.
Learn about HTML. Learn all syntax and style in one day.
Master CSS selectors and various syntaxes in 2 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.
Master all TypeScript syntax in one day for more type-safe writing.
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.
We will practice so that you can build various applications.
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.
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.
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.).
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.
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.
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
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.
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
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.
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