Over the past few years, Apple has made an effort to merge features across some of its platforms. What was once considered exclusive to iOS or iPadOS has slowly become available to desktop users. That just makes things confusing for developers who focus on Apple’s ecosystem: should they learn about (and develop apps for) macOS, or keep their focus on Apple’s bestselling iOS platforms?
Or to put it another way: As Apple continues to merge platforms, will desktop-specific tools or apps become the also-ran skillset of the software development landscape? Should you leave the desktop behind?
The answer to that second question is “no.” Companies will continue to develop apps for macOS, which can become a comfortable niche for any developer with the right skills. But what skills matter most to macOS developers who want to stand out in a competitive job market, particularly as recessions loom large?
Communication Matters a Lot More Than You Think
When you think about communication, you might think about contributing to daily standups or being responsive in JIRA. And those things are important, says Will Manuel, President at Core Media Concepts. Communication is key “for all aspects of a project. Our developers work with a team comprising the client, product manager, tech project manager, and other developers. Being able to work cohesively within a team environment is critical.”
With a big project (such as developing an app for iOS or macOS), the key is to stay ahead of the inevitable issues and complications. “Proactive communication is the skill developers tend to lack the most,” Manuel adds. “Sometimes developers feel they are in a silo and that the project moves at their pace, and often lose touch with the bigger picture and client goals and objectives.”
This need for communication is why hiring managers will usually ask you about past projects and challenges during the interview process; make sure to highlight how you utilized communication and teamwork to get things done, especially on tight deadlines. “I believe that a good developer should also be on top of his communication skills,” says CR Venkatesh, CEO at Dot Com Infoway. “This is key to ensuring better collaboration, from both client and team perspectives.”
Language Matters Outside Communication
Prospective employers want to know you’re a team player and can communicate with a team, but it’s still important to have hard skills, too. “Practical knowledge of Swift 3.0 is vital,” says Venkatesh. If you’re relatively new to the Apple ecosystem, your first stop should be the Apple Developer Portal, which offers the documentation and tools you’ll need to build apps for all the company’s major platforms.
“All Apple platform developers need to understand how to write Swift,” Peter Robert, CEO and co-founder at Expert Computer Solutions tells Dice. “While it's similar to Objective-C, they're not equivalent so experience in one does not translate directly to experience in another.” Though Objective-C still has a hold on the macOS ecosystem, thanks to mountains of legacy code, Swift is gaining in popularity and Apple encourages all new apps be written in Swift. At this juncture, Objective-C is tolerated; Swift is preferred.
Doron Kramarczyk, Mobile Team Technical Lead & Architect Level 2 Developer at The Lifetime Value Company, says that, while a programming language matters, understanding at a high level how the language works in the context of macOS and the application framework is absolutely key:
I think it's important for developers to understand how apps are sandboxed and how apps communicate with the operating system and their own sub-components such as widgets and app extensions. Developers also need to fully understand UIKit and how it communicates with the application layer.
Another critical skill is understanding how threads and the application lifecycle work, as by not understanding some aspects of that can create slow and unresponsive apps as well as random crashes due to actions done on the wrong thread.
Memory management, especially if doing Obj-C development, is a critical skill, many developers don't know how behind the scenes the frameworks update the retain counts, thus getting crashes when iOS handles its auto-release pools. This is also important for Swift developers as Swift calls low-level Obj-C-based frameworks, and without understanding how memory management works can easily create memory leaks.
Stay Current in Your Skillset
Brandon Perton, CEO of the Old School Game Vault, says: “Some developers have lagged behind with the most recent trends and best practices due to the speed at which technological advances have developed in recent years. The ability to work with higher efficiency, flexibility, and precision than their colleagues will put those who have invested time in mastering the most recent tools ahead of other developers.”
If Perton were advising recruiters on which engineers to hire, he’d tell them to “recruit engineers that can help the expansion of your company and keep up with technological advancements.” Keeping up-to-date on Apple’s latest developer moves is key—pay attention to WWDC every year, as that’s where Apple introduces the latest tweaks to its tools and frameworks. Reddit forums and other online places where developers gather can likewise offer lots of useful information.
All of the experts we spoke with expressed a desire to hire people who have deep understanding of how users would use a macOS app or service. Designers can’t always wireframe the perfect app, and it’s important developers of macOS and all other platforms fully grasp the UI and UX behind their products.
“I look for skills and talent in design patterns, data structure and architecture ability,” says Alex Iceman, Founder and CEO at Genium.
Kramarczyk adds: “I believe it's important for developers to understand user interaction (empathy), and how it applies to UI development at scale. Not understanding how a UI should behave when it applies to screens creates apps that are hard for a user to interact with, which will result in a poor user experience and negative app reputation.”