That’s a bold question to ask. But I’ve been thinking about it.

As a member of the iOS developer community, I see people interested in learning how to create iOS apps almost every day.

I’m a member of various Facebook groups dedicated to share tips and tricks for iOS development, or just asking simple questions to the community. It hurts a little when I see someone new to this world asking, for instance, how to download an image from the network and set it to an UIImageView, and all the responses just tell them to “install this pod,” or “download this library.” You can translate that example to almost every common problem new developers face when first starting to learn iOS Development.

Why it hurts? Because these youngsters are never going to learn all the details behind doing what they can so easily accomplish with a pod install.

I often respond with “it’s not that hard, and you don’t really need all of Alamofire to do that.” And that’s true. To download an image from the network and assign it to a image view you, at most, need 30 lines of code.

The open source community makes it so easy to add code that a) maybe you don’t need, b) maybe you don’t fully understand, that I fear the new generations won’t really know how the system works, but will know really well how CocoaPods or Carthage works. (Remember left-pad?)

If you’re someone starting in this trade, I urge you to spend some time learning what the ecosystem you’re trying to start developing for is really like, it being iOS, Rails, the week's popular JavaScript framework, whatever.

Spend some time learning what it’s really like inside the frameworks you’re going to be using for the next years. Learn their tricks. Hack them. 

Don’t get me wrong: using third party code can be (and is) a really easy solution to get things done. But in my experience, the actual learning happens when I get in there and mess things up. Don’t be afraid to mess things up.

The next time you’re trying to figure out how to do something specific, try to come up with a solution, and only then, look at what everyone else is doing. Rinse, repeat. That’s how you get good at something, not just blindly using someone else’s code.

Look for mentors that don’t show you the easy way, but that guide you through the rough way.