I’m on my way home from another excellent iOSDevUK conference in Aberystwyth. This is the 5th time I have attended and every year it delivers new insights to new techniques and technologies used by everyone from independent developers to huge corporations.
This year I’ve been trying to take away some thoughts that stretch over all of the great talks I’ve seen and I thought I’d try to write them down and share.
Everyone has bad code
Simon Whitaker rounded off the conference with a hilarious and eye-opening look at how Facebook does iOS development. If you haven’t seen it yet there was an article written a few weeks ago asking “How on Earth is the Facebook iOS Application so large” It discovered a list of over 18,000 classes bundled into the Facebook app.
Simon expanded on this to show us what happens when a large number of developers maintain the same code base. It isn't pretty but it's something that anyone working as part of a large team can relate to.
Richard Turton showed us how to deal with large code bases in a short but funny lightning talk called “What happens when I touch this”. Which is something I have asked myself several times over various projects. Giving us a brief screenshot showing an app delegate with 2,800 lines of code.
I have worked with code bases in the past that have got me down. I look at the Massive View Controllers thinking “How did anyone let it get to this point?!”, AppDelegates that contains several thousands of lines of code going against everything I’ve learned about what the AppDelegate should do. Thinking that it must be the worst and that other projects must be immaculate.
This week has shown me that I am not alone. No matter how bad your code may seem to you don’t think that yours is the only one. Someone out there will have gone through worse and recovered stronger from it. Learn from how and why it got that way. Remember it for future projects and keep improving.
Everyone is doing it wrong
Amy Worrall gave an excellent talk introducing us to ComponentKit and React Native. Two excellent UI frameworks created by Facebook and in use throughout the Facebook and Facebook Messenger app.
Kristina Thai and Shawn Welch showed us how their companies Intuit and Square Inc are creating some awesome reusable components and frameworks that can make app development a breeze by selecting required modules and connecting them to each other with awesome fluid transitions.
It seems that wherever you look there are best practices established that go against the practices of everyone else. Everyone has a better or easier way of doing it. At the same time they are all successful and none of them are struggling.
If you have a set of tools, code snippets or methods that you have learned works well for you then don’t worry too much if there seems to be something better or different. Use what works for you. When something new comes along it is definitely worth learning about. It might be the perfect addition to your toolset. If not, it might teach you something that you didn’t know about before.
Done is better than perfect
Another quick quote from Facebook (actually from a poster on a wall somewhere in Facebook offices). “Done is better than perfect”.
I have agonised over personal projects in the past and got to the point where I’ve given up in the final stretch because something wasn’t perfect. I know that I need to improve my ability to finish my personal work and I’ll be holding this in the back of my head when I get there in the future. It’s much better to ship a product than to not ship one at all. Get it “done”, you can always work on improvements after the release.
Daniel Tull showed us how and why it has taken 5 years to get his Issues app to the place he wanted it to be. It’s generic, flexible, powerful and, from what I can tell, he’s almost happy with it (I’m sure there will be more changes to it in the future 😀). The app looks incredible and is written so it can integrate with GitHub and BitBucket issue tracking and it it now flexible enough to work with other issue tracking tools. It’s on the AppStore now but has gone through several iterations and start-overs before it even got to version 1.0.
Get to know your toolkit
Chris Ross demoed some awesome features of the AppCode IDE in his lightning talk. Refactoring like a boss. “Make it rain money! 💸💸”
Helen McManus’ talk “Turning Xcode into Knowncode” showed us how to delve into some of the less well documented parts of Xcode to make it work for you.
Whichever tools you use get to know what you can do with them. Don’t treat Xcode like a fancy text editor. It can do so much more that can help improve your workflow and make your life easier.
Go your own way
Everyone has a “way” that they work and every “way” is different. Don’t get bogged down if you hear about how another developer does something in a different way to you and you think you’re missing out. They are almost definitely thinking the same about you too.
Speaking of which, the way that Francesco Frison presented his lightning talk about Sprite Kit was very unexpected and blew me away. The production that went in to developing that talk was astounding and what’s more i you can get hold of it on his github page. You’ll need Xcode to run it (yes, it’s an app) but I recommend that you do.
You can watch Francesco presenting his lightning talk here.
Never stop learning
One of the most mind-blowing facts that I learned was when Chris Ross showed us that you could tap the arrow when taking a panoramic shot to change the direction?! I’ve taken countless panoramic photos on various iPhones and thought I knew all about it. To the point where I had to check that he wasn’t trolling us.
Gwendolyn Weston taught me things about NSURLSession and making it work in the background that I had always thought were a minefield settings and poor documentation and something I’ve always shied away from trying to get working. I will be making all my downloads background compatible from now on.
No matter how much you think you know about something there is always something new or unexpected that you can learn. Never think you know it all. Never stop failing. Never stop learning. Part of the job of being a developer is constant learning.
Someone can learn from what you know
The corollary of the above is that there is always someone who can learn from something you know. Don’t be afraid to get up and talk or to blog about something you found interesting or cool. You may think that everyone knows about it already but that’s not the case.
Natasha Murashev has been an advocate of Swift since the very beginning and has blogged her learning at every step of the way. I’ve learned from a lot of the blogs and so has she. People have commented to improve her code as well as learning from it themselves. She has inspired me to blog more about what I learn in the future.
You’re not alone
Possibly my main take-away was the fact that whatever you struggle with or whatever hurdles you come across you are not alone as an iOS developer. If something is stopping you and you feel helpless, reach out to Twitter (or the rest of the Internet) and you will find help. I’d recommend following the people I’ve mentioned (links in the article). As well as giving awesome talks they also post new content and blogs to Twitter. I guarantee that they have all struggled with something in the past and asked for help.
I will be back again next year. Already looking forward to it.