My 12 Step Guide to Becoming an iOS Developer

First: Learn Swift and iOS Development. Use iTunes U and watch the Stanford courses. Casually mention to friends you’re learning online in a Stanford course. Don’t use traditional courses.


Second: Buy a MacBook Pro for $4000 and an iPhone X for $2000. It’s ridiculous, but you tell yourself and your partner “its for work”


Third:  Start a blog. Write posts with examples of the swift language guidelines.  Call Core plus your name. If your name is one syllable, or usually shortened it, lengthen it until at least two syllables appear. Use a .app or .me top level domain name. 


Fourth:  Get on twitter. Follow these people* (and me :P) and start replying to them. For your bio, say you are the principle iOS lead at a small agency.

Screen Shot 2018-08-28 at 10.24.35 AM-467.png

Fifth: Start a small agency. Use “boutique” to describe yourself and get a desk at WeWork. Build websites with Squarespace until you know how to build apps. Write an app for large company with your agency. Convince them to enter it in in an obscure award in their field. Win that award. 


Sixth: Start a iOS development podcast. Form a panel of yourself and other iOS developer developers to discuss iOS development. As for a name, go with a horrible code reference to Cocoa, like Conversation.shared or iOSDevTips:atIndexPath:. Discuss your favourite open source projects by reading the first paragraph of their GitHub READMEs. The trick here is to make it about yourself, and add no value to your 7 listeners. Advertise mattresses. 


Seventh: Form an opinion on these things. The stronger the better. You’re an engineer, and that means going around with solutions already decided, ignoring the problem.

Screen Shot 2018-09-11 at 9.09.50 PM.png

Eighth: Pitch talks and go to conferences. Ask people what they do, even though you know its iOS development. Ask if they’re using Swift yet. Humble brag about using swift for so long with a phrase like “Oh, man, I remember it from the early days” or “Its been great to watch swift to change over the years”. Remember, the more you learned and then had to unlearn, the better iOS developer you are. Casually enquire if they use Fastlane.


Ninth: Join reddit and stack overflow Gain karma and rep by posting questions from r/iOSPrograming to stack overflow and questions from r/iOSprogramming to stack overflow. Follow up with cross posting answers. 

Screen Shot 2018-08-28 at 10.40.56 AM-712.png

Tenth: Start a newsletter. Make sure “Weekly” is in the name. Subscribe to other iOS newsletters and write a script to take a link from each of them for your newsletter. Email it to your 58 subscribers on Fridays. Advertise mattresses.

Screen Shot 2018-09-11 at 9.10.04 PM.png

Eleventh: Worry about your career. Are you creating a meaningful experience for potentially millions of people or are you just putting JSON on a screen? Why don’t you get to solve fun problems like worrying about auto-scaling clusters, message queues, no-sql databases and cloud services? Have a career crisis. Watch App: The Human Story. Feel better. 


Twelfth: Buy a 2007 WWDC Jacket off Ebay. Wear it. You were there. And people should know it. 

…And that is how you become an iOS Developer!  

*And some underrepresented folk too please.

This was a lightning talk given at /dev/world/ 2018, and you can find the recording here. If you’d like more geeky and niche comedy, follow me over on my twitter account - @samjarman. Talk inspired by Struthless.

Announcing: Preach!

The other day a colleague showed me a tweet about how tweets 👏 like 👏 these 👏 were👏 so👏  hard 👏 .  I later thought it would make a great Chrome extension. I had a real urge to ship something, so later that week I coded it up live over on my Twitch Channel and thus, Preach! was born.


It joins my other great, totally serious projects such as DogeKit and InspireKit. It's free on the Chrome Web Store... so go download it!



Chrome Extension Development: Lessons Learned

 I recently took an evening to make basic Chrome extension, and streamed the whole thing on my Twitch Coding Channel while I did it.

I made Preach! — A simple extension to help you get 👏 your 👏 point 👏 across👏.

Here are some things I learned along the way, that seemed non-obvious to a reasonably novice JavaScript developer. Enjoy.

You can debug extensions

It’s actually possible to debug extensions by using the “background page”. To do this, use the same Extensions page as you are for loading your extension, and simply click background page.

Once that’s open, you have the full Chrome inspector to find that semicolon you definitely didn’t forget.

Only content scripts can modify the DOM

This totally makes sense, and it’s reasonably easy to do this. Simply add the permissions to your extension manifest. This will define what pages these run on, what file to embed in the page and when to run the JS associated

Use JS message passing to pass the message from one to another

So how do I make DOM changes from my background.js or popout.js to the page DOM? Use JavaScript Messaging. This technique lets you publish messages in contexts and have them received in other context. For my extension, I wanted to receive the modified text the extension generates and display an alert on the screen (modifying the DOM).

The success dialog of Preach!

Here’s an example of how it works in Preach!

Chrome Web Store listings aren’t free

Nope. Joining the Google developer programme is $5 USD. Not surprising really, and a lot cheaper than say, the Apple developer Programme. I suspect the $5 fee helps remove spam and low quality extensions. Didn’t stop me though 😏😅.

Chrome Extension listing is easy

Seriously, the whole listing process for an extension is super easy. Excluding making the Chrome Web Store assets (3 images), the whole process for listing a free extension (preaching is free) is really easy.

Chrome Extension stats take a while

The statistics on Chrome extensions (if you don’t use Google Analytics) can take a few days to come through and they’ll remain on a similar delay. It’s annoying. I’d recommend GA if you really do care about the speed of these.

Overall, Chrome extension dev is really fun. If you’re new to coding, it’s a great way to get something small written, publish it to many countries, up to 1 billion people and see who likes it. If you’re an old hat, it’s a great and easy way to scratch that “I want to ship something” itch. Sure was for me.

Watch me code on Twitch here — You can also follow me on Twitter — @samjarman

Finally, thanks to Ben and Jacob for their help with this one. Couldn’t have done it without you.