The preface

Today I’m going to talk to you about how we can plan our own career as iOS developers, and hopefully that will help you a little bit. After a certain point in development = we will face the “transition”, whether to move into deeper technology or engineering management is worth pondering.

Included 丨The original address

Industry status quo

Although in recent years a large number of developers into the mobile terminal, various training institutions in the society more and more, but still few outstanding iOS developers in the industry, partly because many entrepreneurs, on the other hand, because the technology update quickly, and the development also needs a long time experience accumulation, WWDC congress in recent years, for example, IOS5 released in 2011 is a leapfrog update compared with iOS4. Although users may not feel it, developers have great pressure from the changes in SDK. IOS6 in 2012 brought new technologies like AutoLayout, CoreImage, and a host of new APIs like PassKit, CollectionView, and State Preservation. You can see the changes in iOS7, the UI changes often mean the end of the experience, you have to rethink the details; IOS8 is also arguably the biggest change, bringing new things like Extensions, Size Classes, Metal, Watch, Swift, and more.

There’s a lot to learn, but overall the prospects are good and you have the opportunity to overtake every year.

Work scene

Secondly, we need to have a product view in development. After all, if we want to stand out from hundreds of thousands of developers, we need to have passion for the product itself in addition to technology. It is absolutely not ok to work just as a class. Be able to do a good job in technical selection (skills needed in [Skills List] below) to ensure the stability of the system. The latter will have trouble, because the product does not know the code itself, for some possible problems is not clear, and the only developers most clearly, if developers do not say no one knows, this is the second requirement of project, namely the non-functional requirements, handle the 20% of the non-functional requirements are truly reflect the ability of a developer. So much, talk about the actual work content:

  • Demand analysis
  • Framework building and technology selection, such as the selection of localized storage scheme and network layer architecture design, can be used to introduce some useful third-party frameworks, such as FMDB, FLEX, AFNetworking, AsyncSocket and so on. This stage is very important. Because it takes longer to maintain code than it does to develop features, try to create resilient, maintainable systems
  • Docking with the background, there will occasionally be a “front-end and back-end fight” during the run-in
  • There may also be other preparatory work, such as establishing RSA/AES security schemes, internationalization policies, etc

Medium term:

  • Participate in product design
  • Fulfill functional requirements
  • Refactoring and optimization

The late:

  • Fix Bugs
  • GoTo the middle:
  • Change is the truism in software development that there is no end to it unless it is a program with only 10 lines of code

Don’t perfunctory their development of the product, otherwise it is a waste of their life.

partner

Direct objects:

  • product
  • UI
  • UX
  • test
  • The background
  • Other front end

Indirect objects:

  • Anyone directly or indirectly involved with the company.

If you think that you only want to “build up” 7 or 8 people related to the product, you are wrong, there may be hundreds of people behind the discussion group secretly involved, some of the products without integrity will be stubborn in front of you, the name of the grand, in front of the leadership of the “traitor”.

Skills list

Memory management does not require defensive programming, but the brain must be aware of the memory of the objects it is using. UIKit, proficiency, knowing what methods commonly used controls have and what they can do without looking at the documentation. KVO\KVC GCD delegate (not to be confused with proxy design mode) Block Notification APNs, Remote notification View state save… In fact, most of the problems in development are “temporary” encountered problems, only the usual accumulation of enough, can be easily solved. The above skills can only be used as a primer, more learning is mainly when you encounter problems or do not understand the knowledge point, every difficulty is wealth, is a learning opportunity, like CoreData, design patterns and other skills you do not learn? Interest and the entry point of the problem is very important, do not perfunctory yourself, read more books, the more books, the more will feel his ignorance.

Skills the also don’t put all your focus in on the iOS platform technology, make development must dine, sometimes you feel some aspect is relatively weak, such as “I is not memory”, actually gap is comprehensive, in the “learning resources” below I in addition to enumerate the iOS related resources, I’ll also list some books I’ve read that I think have been helpful in improving development.

How to become a master? Obviously a master is always produced by self-study.

Objective-c and Swift

I’m a staunch opponent of Swift today, which is actually different from when I started. Of course, as Swift is an official programming language recommended by Apple, this is definitely a trend, and we need to adapt to The Times.

Swift is currently unstable, even Xcode is not compatible with it, every time Swift has a slightly larger update it is like starting from scratch, and it is not possible to develop a project entirely using Swift, there are many objective-C and C based frameworks, IOS can’t be developed without C. OC can do a lot of things that Swift can’t do, such as associating objects with the runtime. This is not to say that Swift is not important, but it must be prioritized. I don’t think Swift will have much impact on Objective-C in the short term, so it would be better to learn OC well first

Learning resources

  • Official resources
  • Ray Wenderlich
  • objc.io
  • Mattt Thompson
  • Objective-c Basics tutorial
  • The Big Nerd Ranch The Big Nerd Ranch Objective C Programming The Big Nerd Ranch Guide 2nd Edition, iOS Programming – The Big Nerd Ranch Guide 4ed, available in Chinese.
  • Objective-c Advanced Programming: Multithreading and Memory Management for iOS and OS X is a must read for OC memory management and Block implementation
  • Effective Objective-C 2.0:52 Effective Ways to Write High Quality iOS and OS X code covers a lot of ground, but there are areas where you don’t go as far as you should
  • Head First Design Patterns, with a lower threshold and easier to digest than Gang of Four design Patterns, is a must-read for improving your modular design skills
  • “Complete Code”, this book is very thick, it is recommended to skip the part you are interested in, although there are few technical things, more theoretical, but when you want to promote some ideas in the team, you absolutely need to use the theoretical knowledge, otherwise it is difficult to promote or convince people
  • UML and Pattern Application, want to be an architect? Don’t know UML which line
  • Understanding Computer Systems in Depth
  • Communicating in the community, like Stackoverflow, GitHub, or some forums around the country, is always useful.

Book Download: Address