Swift Playgrounds was a big step for Apple and the iPad. It let them use their new programing language Swift to help future developers learn to code for its platforms. They championed hour of code setting up classes in Apple stores to teach kids how they can code. But as Paul Miller’s recent article points out there is a gap between learning and doing.
Xcode is what macOS and iOS developers use to write and develop software for Apple’s Platforms. While Swift Playgrounds is great for people who are learning Swift and programing fundamentals they will ultimately need to jump to the Mac and work with Xcode. This happened to myself, learning on my iPad with Swift Playgrounds only to abandon it for my Mac and more complicated iOS books to learn how to build an app from scratch.
I think this divide might be addressed soon by Apple based on some stories that have been published. When Swift Playgrounds came out I think many including myself thought that Xcode on iPad was inevitable. But we still haven’t seen it materialize yet, currently we have two different frameworks app developers use on Apples platforms. We have AppKit for macOS development and UIKit for iOS development. Xcode on iOS would need to address these two frameworks unless a new one is developed.
In December of last year Mark Gurman broke a news story about an internal Apple project named “Marzipan”. Numerous reactions have been published since, but in Apple’s developer community its read as a potential universal framework for macOS and iOS. More recently Gurman published another story on how the Mac will begin to ditch intel in favor of custom ARM processors.
With these stories and WWDC around the corner in June I’ve been thinking about Xcode and the iPad again. If this year we see project Marzipan debut as a new framework for developers I think we might finally see Xcode on the iPad. If the Mac adopts these custom ARM chips as Gurman says then Apple has to have macOS run on it. Apple would have to adapt their apps including Xcode to run on these new chipsets. Personally I think Apple has already tested this in their labs and we will finally get to see it sooner rather than later.
If these things come to pass it makes sense why Xcode hasn’t been on iOS yet. It’s simpler to wait for marzipan to ship and get Xcode running on ARM perfectly before its released to developers publicly. If the future of computing is the iPad and iOS like Apple says it is they need to address current app development. Having to develop iOS apps with the Mac must be a limitation of iOS that goes away. I think in the near future we are heading to you will be able to make an iOS app with the Mac and with iOS.
Once you have a universal framework and Macs that run on ARM just as iOS devices do then you start to get into new possibilities. Right now we have two main Apple OS’s with macOS and iOS. But these can all be the steps toward a unified operating system that runs on different form factors. This is the theme of this weeks Connected podcast episode, where Myke, Frederico, and Stephen ponder what the Gurman article means.
It’s an insightful conversation and got me thinking of Xcode because it’s the missing puzzle on iOS. The iOS App Store wouldn’t be where it is today with ought Xcode on the Mac having iOS development being possible. Xcode on iOS running Swift and using Marzipan in parallel with the Mac seems like a reality we might be coming to soon. I think it will happen in the next two years, but as this WWDC is approaching I really hope we finally see Xcode on iPad this year.
Programing is what I’ve been starting to dedicate some serious time to in recent months and I wanted to share some feels about it. It’s been an ambition of mine to learn Swift and one day be an iOS developer. I’m currently teaching myself Swift on Treehouse.com working through the iOS beginner course. I’m also working on the 100 days of code challenge.
I wanted to write something based on my experiences so far. As well as for others just starting out coding. The first step in my opinion is to find out what kind of developer you want to be. It doesn’t make sense to learn Swift an iOS language if you want to be an Android developer or vice versa. After you have a good idea of what kind of developer you want to be see what programing language or languages they use. Once you have that determined look at what resources you will use to learn that language and it must be tailored to you. If you learn with textbooks buy programing books on that language. If you are like me and need something different try websites like Treehouse or Codecademy. Make sure you find a resource that appeals to you. And don’t be afraid to change what resources you use to learn if somethings not working.
Stop research. Start coding!
More research can actually stop you from coding. In my experience its very easy to get into the idea of learning programing and never get out of the research stage. Or start to look into developer interviews on podcasts, blogs, and other mediums. There is an endless number of these and its easy to get lost in doing nothing but research. There is plenty of amazing stories to be told but everyone’s experience is personal. Chances are you can’t become a developer the same exact way as someone else. For me its been the idea of focus and what kind of developer do I want to be that has helped me to get started. Instead of asking how did they do this, have a mental state of mind(im going to figure out how to do this).
Set topics and concepts you want to get familiar with, but put rough deadlines on them. Dont rush through something just to hit a deadline you set only to look back and feel like you only got half of the knowledge. I think putting deadlines on learning programing concepts is a bad idea. Often times I can work on something for hours but I always ask myself did I feel like I learned something today? If you realize you put in 3 hours of practice and still don’t get it that’s OKAY! The quickest way to stop learning is to get discouraged because you put in tons of effort and don’t get it the first time. If that happens try doing another activity and coming back to it or taking the rest of the day off.
Consistency is essential, for me what I’ve done to keep myself consistently coding is to take the 100 days of code challenge. Take a portion of your day and set aside time to coding and working on your projects. Try to work on them for at least an hour but consistently working on your code and learning is what matters. With 100 days of code you code everyday no exceptions. I am on the second round of trying this and previously I made it to a little over 50 days coding consistently. I didn’t stop coding though I had dedicated at least an hour and a half to coding for at least 5 days a week.
Coding is kind of like math(you don’t need to be a mathematician). Its something that you need to be actively doing to understand and learn it. Treehouse has lots of great videos and code challenges. But I wouldn’t learn anything if I just watched the videos and didn’t write the code at the same time. That is why finding time to practice is so essential.
Plan your coding sessions. Everyone has different circumstances and not everyone even has their own computer but that’s okay. So make sure you can have a schedule of when you will code. If you can fit multiple coding sessions into one day that’s great. If you have to wake up early before work to code then make sure to wake up early and get some coffee to help you out. You got to just find some time that works for your schedule. After every coding session ask yourself did I feel like I learned today?
If you do these things I think it will be easier for you to get into programing. Introspection on how you learn is very important when learning anything not just programing.