[Swift] Skill map from inexperienced to practical (roadmap)

** Many beginners are using too much input **

I was the same, "How much study should I get into practice?" "What should I study?" I don't understand well, I touch various languages (2 digits) shallowly, I wasted a lot of time, so for other inexperienced people I would like to leave a roadmap here so that it does not happen.

In programming, if you try to cover everything, there is no end to it, so I'm focusing on what I use at least in practice and what I use a lot.

Also, because the skill must be proved, You need to make a deep app.

Skill Map

Basic syntax To start a new thing, you must first know the minimum language and grammar Below is the checklist.

** Level 1 **: Practice is tough

·Calculation(+, -, *, /, %)
・ What is an instance?
・ What is a property?
・ What is a method?
・ Comparison operator(==, !=)
-Variable var
・ Constant let
・ Escape processing "\()」
・ If statement
・ Switch statement
・ For statement
・ Structure: struct
・ Function func
・ Type cast

** Level 2 **: If you hit a few, you might get somewhere

・ Type inference
・ Understand optional
・ If let
・ Optional chain
・ Images can be used
・ Storyboard/Drawing by coding
 View、TableView、CollectionView、Switch、SegmentedControl
Custom cell implementation in TableView and CollectionView,
Other various parts
·Screen transition(segue, navigationController,etc)
・ Pass by reference,Pass by value
・ Alert UIAlertController,UIAlertAction
・ SVProgress HUD can be used at the right time
・ NavigationController can be used

** Level 3 **: If you hit a few, you might get somewhere

・ UIView.Animation can be implemented with animate
 ->It is good to be aware of the life cycle
If you can do this, the UI will be polished, so it is good to select
・ You can see the reuse of cells and operate them properly.
 ->Without understanding reuse(Especially initialization), Side effects tend to occur
・ Know when you don't need it when you add self

** Level 4 **: Increasing probability of entering

・ Asynchronous processing(Use Web API)->Use DispatchQueue and closures
 (Closures would be nice to use here)
·Library(Install and use external files with Cocoapods)
Charts, FSCalendar, SwiftyJSON, etc. looks good
・ Delegate can be put to practical use
・ Notification Center can be used
・ Github can be used
・ SourceTree can be used

The following articles are the easiest to understand for Delegate https://qiita.com/Sossiii/items/6c8916f96176991f19aa

** Level 5 **: Self-study is no longer efficient, so get into practice right now

・ Firestore and Realm Swift can be used
By putting the information saved on the server into the local DB,
You don't have to pull data from the Firestore many times(Communication is reduced)
Realm Swift saves in memory, so task kills erase data and don't bloat
・ Chat can be implemented
Library-> MessageKit
・ A certain amount of UI can be designed
Gugu on Pinterest

Pinterest(https://tinyurl.com/yyjaansd)

** Level 6 **: Immediate force

・ RxSwift,Alamofire、SwiftyJSON、Moya, RxCocoa, RxDataSources
You can code based on the MVVM architecture using libraries such as
・ Understanding existing code and coding that does not break it(Maintenance)

** Level X **: Maybe the most important

・ Gourmet power
・ Can self-solve some errors
・ I gave up on the difficult problem and said, "I didn't know what I was doing, I looked it up, but I didn't understand it.
You can ask a question in the form of "I want to know this kind of thing"
・ You can actively study by yourself
・ I like programming

Finally create a portfolio

If you can manage to reach the level you have decided Now it's time to build an app and proceed to the interview.

Portfolio is insisted

Sometimes people say, "I don't need a portfolio," I am a "necessary" choice The easiest way to hire inexperienced people with unknown skill levels Since the index is "portfolio" It is almost always necessary.

However, the educational resources are solid, and we are focusing on training inexperienced people. If you are a company, there are places where you can enter even if you are empty.

Therefore, it is not a wide and shallow portfolio, Anyway, I recommend you to make an app that is ** narrow and deep ** conscious.

From content design (UX) to design (UI), If you incorporate the technology up to level 4 and 5, All you have to do is apply

If you are preparing for coding selection

Paiza choice (https://paiza.jp/challenges)

What is important other than skill

When asked if I only needed skills, it was actually No. Specifically, we need an axis as a person. "Why do you want to be an engineer?" "Why are you studying?" "What kind of person are you?" "Can you continue as if you were in business?" "What do you like?" When a clear answer comes out to this question, I think there is no particular problem in the interview.

Meet your corporate needs!

"** I am such a person! Please accept! **" "What? Companies are not parents." The company is a place to achieve results, It's not a place to train you. It trains you for the sake of results, and works for sales.

If you want to increase the probability of passing the selection, grasp the corporate needs It ’s very important to match it. ・ What skills are you welcome? ・ What kind of vision does the company have? ・ What kind of human resources do you want? It is better to understand and incorporate it into your portfolio and interviews.

in conclusion

Personally, I would like to apply at levels 4 and 5. I'm glad if you can use it as a reference. Also, ** I've been studying for months, but I can't do it at all! ** ** Good news for those who say, but it's quick if you can get to the starting line in a year. Frustration is a catalyst for growth, and each time you overcome it, you take one step at a time. The difference with the person who does nothing will open up.

Recommended Posts

[Swift] Skill map from inexperienced to practical (roadmap)
How to call Swift 5.3 code from Objective-C
[For beginners] Complete roadmap for learning WEB programming [From MacBook purchase to practical level]
Convert from C String pointer to Swift String type
[Swift, ARKit] Migrate from deprecated hitTest to raycastQuery
[Swift] How to play songs from your music library
Record at DMM WEB CAMP (from inexperienced to employment)
Generate models from JSON to Swift, PHP, C #, JAVA