A beginners guide to learning Swift and iOS development: Edition 2.2

Swift_logo.svg

Some of the first posts I did on this site were on what I thought were, at the time, the best online resources for learning Swift. Since then I have come across new material, and talked to other people who are just starting to learn Swift and iOS development. It has given me a lot more insight to what makes some resources better then others, beyond some of the obvious qualities. Because of these insights and with new material being released all the time I wanted to revisit this beginners guide to Swift and iOS development resources, and do a complete update to it.

This guide will not be broken down into several different posts. Instead, everything will be in one mega-post which will make it much easier to use as a reference. Part 1 will briefly talk about the different approaches you can take in order to learn Swift, from highly structured, to completely free form.. Part 2 will be broken down into multiple sections that will list the various books, courses, tutorials, and other reference materials, that are available, along with a brief summary of each and in some cases a link to a much more detailed review I have done. Part 3 will offer suggestions on which resources might be the best choices for you, and why, for those that are looking for some advice on where to start. So let’s jump in! Read More

Book review: Objective-C for Swift Developers by Paul Hudson

A few months ago I was on Twitter talking about the frustrations I was having with trying to get an Objective-C based API, that had no Swift documentation or source code examples, to work properly in my all Swift project. Having only learned Swift trying to figure out Objective-C and all it’s quirks was proving to be a long, tedious exercise. During the chat that ensued I made a comment to the author of Objective-C for Swift Developers, Paul Hudson, that he should write a book that would help those people who only knew Swift and wanted a guide on how to work with Objective-C at a basic level. I also requested that if he could find a way to make Objective-C simply disappear altogether that would be even better.

Fast forward to the present. Objective-C still lives on, but Paul did write Objective-C for Swift Developers, available in digital form for US$20, which has just been released into the wild a few days ago (as of May 13 to be exact). While I have no immediate need for the book I picked it up straight away because I still want to know some of the fundamentals of Objective-C and I was really curious to see if this would serve as a the crash course book I wanted a few months ago. Read More

Playgrounds…they aren’t just for kids

When Apple announced Swift back in the summer of ’14 they also made quite the fuss about Xcode’s new playground feature. This was going to be a live coding environment where you could work through simple expressions and functions and see the results in real-time. It was charming, and you could see this being a great tool for beginners, but I had a hard time seeing how a developer working on a project would gain much value from it.

Fast forward a year and a half later and now I get it. Today I find myself using playgrounds in my projects, not just for testing out quick little code blocks, but for organizing and keeping a detailed reference of code and other assets relevant to the project. It can actually be a valuable tool for managing your work and being more efficient!

Because playgrounds don’t get much attention I wanted to put together a quick post that highlighted as many of the best resources that I could find to help beginners, and people of all levels for that matter, get an idea of what playgrounds can do. I end the article with some examples of how I have starting using playgrounds in my own workflow, hopefully sparking some people to think about how playgrounds could work for them. It is not a big time investment so this is an ideal subject for a quiet weekend, or over the course of a few evenings. Read More

iOS Developer conference video resources

Conferences are a big part of many indie iOS developers career track. Aside from the standard networking that takes place at these events, it can be an opportunity to further your education in coding, design or marketing, do some self promotion, and perhaps even give a talk of your own one day (just as I get to do for the first time at NSNorth this year!)

Of course everyone knows about WWDC, the developer conference that Apple holds every year in June, but there are quite a few independent conferences all across the world. The range of topics between the different conferences is wide so how much is relevant at any particular event will depend on the person. Though the original purpose of this post was solely to put together a collection of links to the videos that have been put up for the talks presented, there is an added side benefit. If you are thinking of attending a conference then watching some of the videos can give you a better idea of which ones might be the right fit for you and help make sure you are using your time and money efficiently!

Read More

A patronage and crowd funding hybrid revenue model for indie developers.

One of the biggest challenges indie developers face is how to break away from the race to the bottom when its comes to the pricing of apps. Free and freemium apps seem to have won out and changed consumers expectations of what they should or should not have to pay for. And when new alternatives are suggested, or attempted, I am always fascinated to see what they might offer to developers. Two of these in particular, patronage, and crowd funding seemed like they could have offered some help. But both seem to have offered little to indie mobile developer, and have several key flaws holding them back.

By examining and understanding the flaws of these two models it then becomes possible to see how a hybrid between the two could potentially create a new revenue model for app developers. It is this hybrid model that I want to lay out and send into the ether of the internet. Hopefully it will further discussions already under way and spark some peoples imaginations on what new, alternative, revenue models may exist for indie developers. Read More

Swift books for your reading enjoyment

Despite all the great videos and tutorials you have easy access too thanks to the magic of the internet,  books are still hard to beat when it comes to learning. In the early days Swift books were tough to find, mostly because it took time for people to learn the language well enough too then write a book on it! Now this is changing quickly and each week it seems like there is a new book, be it beginner or advanced, being released on Swift.

The ones I have picked below are either based on my experience using them, overwhelming regard for it by the Swift community, the authors reputation and previous experience, or a combination of all three. So without further ado here they are.

Swift Programming: The Big Nerd Ranch Guide by Matthew Mathias and John Gallagher

Big Nerd Ranch is a bit of a juggernaut when it comes to books on helping you learn iOS, Swift, Cocoa for OSX and probably much more that I haven’t even seen yet. While I did not read this book, it consistently gets great reviews and feedback from those who have, and is a constant top recommendation by people of all experience levels. So if you liked any other Big Nerd Ranch books, or just want to pick something that is a safe bet and a good price then you probably won’t go wrong with this book. Read More

Resources for learning Swift

One of the challenges someone wanting to learn Swift faces right out of the gate is knowing where to start in terms of learning resources. Because Swift is still a young, new, and evolving language it has not yet built up the knowledge base you would find with other languages and because it continues to evolve it is key that the information you are getting is up to date as well!

This is the launch page for the collection of Swift learning resources I have put together. It will not remain static. New resources will be added as they are released, and ones that are no longer relevant will be removed. I am not listing every resource I have ever come across either. The only things I am listing are material that I have used, or taken a really good look at, and found to be genuinely helpful. If you have something that you think is worth adding to any of the lists then let me know. You can leave a comment below or send me a message on Twitter @ManitobaNinja or @Third_beach Read More

Follow up on “So your app has bombed”

About a week ago I had put up a post called “So your app has bombed“. I won’t rehash the details so if you want to read, or reread, what it was about, you can click here to do so. The short version is that after launching my first app, Are You Faster Than, it did poorly in terms of downloads so I had gone back and reflected on why that was and what lessons I had learned from it.

After I initially wrote the post I figured that was going to be the end of that app and that I would move onto other things. But a couple of interesting things happened. Read More

A collection of Swift tutorials.

With Swift into it’s second year of life in the public there are more and more tutorials appearing on the internet everyday which is a boon to new and experienced programmers alike. Of course there is a lot of rubbish out there to sort through. many just rip off other peoples work, some don’t get into enough detail to be helpful, and others are just not well written. I have compiled a list of what I think are some of the best tutorials currently out there on the interwebs.

A couple things to note. I did not include anything that was behind a pay wall, I just wanted to focus on what was free in this instance. This is also not an overly long list because I wanted to focus on collections and resources that are really worth while. And if anyone has any they think should be on the list then let me know and I will definitely take a look! So without further ado let’s get started.

Hacking with Swift

Though most of this list is not in any particular order this site really should be at the top. There are currently 37 individual tutorials online! And there is a full range of topics covered so you can pick and choose the ones that are most interesting and most relevant to you. They are structured in a logical, easy to follow way with good explanations on what is being done and why. The tutorials are free but if you find that you’ve really gained a lot from them you can donate as a way of saying thank you (and I would encourage it to help make sure this resource keeps going and continues to be updated with each update to Swift as well). Read More

So your app has bombed …

The scenario that doesn’t get discussed too often on developer websites and forums is what exactly happens when you create an app that no one cares about? Despite all the time, and effort, and thought you put into it, or whatever promotion you may have done, or how great it seemed in your head, no one wants to download it. For someone who is new to development this can be a crushing blow to your ego and motivation. But it is almost certainly going to happen to you at some point, maybe even multiple times, and there are some valuable lessons to be learned from it.

As you might guess I wouldn’t be writing this article if this wasn’t something I had experienced myself. So I will start with a very quick summary of how I got to my own day of reckoning. About a year and a half ago I had decided that taking up iOS development was something that I really wanted to do. It was sparked by a number of ideas that I’d come up with that I wanted to put out into the world, and the release of Swift, which for someone with no programming experience, seemed like the ideal language for me.

As I began reading, watching videos, and starting to code, I realized that a lot of the ideas I had were either not quite possible, or well beyond what a beginner could do. I didn’t let this get to me though. Instead I decided to create an app that was more within my reach and would give me much needed practice writing in Swift, and using Xcode. The idea was simple, an app that let you know if you were going slower or faster then a selected animal, appropriately called Are You Faster Than A … ? I’ve added a screenshot below to give a general idea as to what it looks like

.screen322x572

So over the course of a few months I put it all together. Finally I was happy with how it looked, and how it felt, so I went through the process of getting it submitted to the app store and after a few weeks and a few failed attempts it was finally up!

And no one really downloaded it. In the course of a few weeks there were about 15 downloads. This was a bit discouraging. So I went back. I added more animals to select from, and I changed my in-app purchase model so that all but a few of the animals were unlocked and for those looking to donate, if they liked the app, they would receive a super rad Shiba Inu as a thank you.

Once again I did my submission, watched it get released into the wild, and nothing. Just over a dozen downloads took place in the first week and then it fizzled back to a steady stream of zero. At this point it was officially a bomb.

Before I go any further I want to make a brief side note. When I originally put up this post I did so rather quickly and put down a number of thoughts about the experience that I was having at that moment in time. After it went live, and after a few comments I realized that I could have done a much better job going over why the app was not successful, in addition to talking about what I had learned from the experience. So everything from this paragraph on has been rewritten so that it more closely reflects what I wanted to discuss and get across to readers. So let’s start with the most important part of this experience…

…why did the app bomb?

There are a number of reasons why it bombed. The first is that no one knew about it. A really successful app will at some point take on a life of its own and through word of mouth or via social media and websites it becomes self promoting. It generates buzz. It takes on a life of it’s own. However you want to describe it.

But, before it gets to that point it has to be marketed, promoted and people need to be directed towards it, and persuaded by something more than just “everyone is downloading it” to give it a try. It could be sending out emails to websites and blogs telling them why they should review and talk about it. Perhaps you buy advertising on a digital advertising network or a podcast. Telling everyone you know to download it, and try it, and talk about it. Whatever it is that you decide you need to do to promote and market your app doesn’t matter as much as simply doing something.

And that was my first mistake. I sent out some tweets, and even had a small recommendation from a site, but I never pushed and pursued it in any kind of meaningful way. No one really knew it existed, and I wasn’t trying to change that. Even though it is the coding and design work and creation of a product that lead me to do this, if I want to make a real go at it, then I had to accept that self promotion is also a key element that cannot be ignored.

The second reason has to do with the app itself. Ultimately it was a fun idea, but beyond an initial test run of the app, what would keep the user engaged and make them want to use it again? The answer was not much. Starting off simple was a conscious choice to not overly complicate things, and make it more likely that I would complete the project in its initial form. And that was still the smart approach. But there are other features that would make it far more interesting and engaging. One that I have implemented, and will be in the next release, once the review process is done, is fact cards for each animal so that you can see some basic information about them. Other ideas that are in the back of my mind, and just require a bit more experience to implement, are social features, challenges, saving top speeds, quizzes, and further expanded fact cards. With these elements it will still be possible to keep the app simple but offer a lot more reason for the user to continue to use it!

Finally, it also bombed in part because having a hit app was never really the goal in this instance. I came up with the idea because I personally thought it would be fun, and it covered a lot of aspects of iOS development and Swift that I wanted to learn for other projects I had in mind. That I put it on the app store was a bit of an after thought when I started to see how it was turning out. And that is something that might seem small but is really important. If you are not passionate about your app, or even passionate about sharing it with as many people as you can, your not going to be motivated to promote and market it and do the coding and design to make it really fantastic experience! If you don’t care, no one else will, and it will almost certainly bomb. Beyond it failing…

…what else did I learn from this experience?

Going through this process was also instructive in a lot of other ways. I will jump right into what are the most important take away points for myself:

  • Being able to go back and see what a mess the underlying code was in the first version of my app was both frustrating and exciting. Trying to build on top of poorly laid out code caused many hours to be wasted as I refactored and restructured the program to be far more functional, readable, and more efficient. But it was super encouraging to be at a point where I could recognize my past mistakes, and fix them!
  • Doing as much pre-planning and storyboarding (the pen and paper kind) makes a huge difference in helping you organize how your program should look and be structured. When done right it can serve as a roadmap or checklist for what needs to be done next and makes your project both more efficient and less frustrating (at times).
  • There is no sense programming way beyond your skill level. I was able to complete the project because even though I still had to learn as I went, it was still somewhat within the scope of my understanding. The times when I had the most amount of trouble was when I tried to do something that was well beyond my capabilities. Pushing yourself is important, but to a point, and finding that balance is important if you want to keep learning but not put walls in front of yourself.
  • I was having fun doing it all! For all the challenges and long nights and moments where it didn’t seem like I was getting anywhere I was still really enjoying coding and designing and learning. And if your doing something your not enjoying, what’s the point?

So what next?

For the time being, this will likely just continue to be an app that I work on because I simply find it fun to do so. I like going back and seeing what I can refactor. I will probably keep adding new features as my knowledge of Swift and Xcode grows, and when I am able to do so with a decent amount of confidence. If that is all the app remains as then thats quite alright because building it was still a great learning experience! And if I do one day decide that it has gotten to a point where I think a lot of people would really enjoy it, well, now I also know that I will have to step into a different role and do the promotion and marketing that is required.

 

And when I have an app bomb in the future it will likely be related to a different set of reasons and circumstances but as long as I, and anyone who goes through it, can take a few lessons away from it you at least have a much better chance the next time out!