How to hire Objective-C developers
Objective-C developers can help you build apps for iOS, macOS, and other Apple products. Since Apple encourages developers to eventually switch to Objective-C’s successor, Swift, Objective-C specialists are mostly sought after for updating and maintaining legacy code.
So how do you hire Objective-C developers? What follows are some tips for finding top Objective-C consultants on Upwork.
How to shortlist Objective-C professionals
As you’re browsing available Objective-C consultants, it can be helpful to develop a shortlist of the professionals you may want to interview. You can screen profiles on criteria such as:
- Technology fit. You want an Objective-C developer who understands the technologies behind your software project.
- Project experience. Screen candidate profiles for specific skills and experience (e.g., migrating a legacy Objective-C codebase to Swift).
- Feedback. Check reviews from past clients for glowing testimonials or red flags that can tell you what it’s like to work with a particular Objective-C developer.
How to write an effective Objective-C job post
With a clear picture of your ideal Objective-C developer in mind, it’s time to write that job post. Although you don’t need a full job description as you would when hiring an employee, aim to provide enough detail for a contractor to know if they’re the right fit for the project.
Job post title
Create a simple title that describes exactly what you’re looking for. The idea is to target the keywords that your ideal candidate is likely to type into a job search bar to find your project. Here are some sample Objective-C job post titles:
- Objective-C developer needed to refactor legacy code to Swift
- iOS developer experienced with Swift, Xcode, and Objective-C
- Swift/Objective-C developer for maintaining/updating a news curation platform
Objective-C project description
An effective Objective-C job post should include:
- Scope of work: From app development to code migrations, list all the deliverables you’ll need.
- Project length: Your job post should indicate whether this is a smaller or larger project.
- Background: If you prefer experience with certain programming languages, software technologies, or developer tools, mention this here.
- Budget: Set a budget and note your preference for hourly rates vs. fixed-price contracts.
Objective-C developer responsibilities
Here are some examples of Objective-C developer job responsibilities:
- Innovate and present new ideas/solutions
- Translate customer requirements and UI/UX designs into code
- Handle third-party API integrations
- Migrate legacy Objective-C code into Swift
Objective-C developer requirements and qualifications
Be sure to include any requirements and qualifications you’re looking for in an Objective-C developer. Some examples:
- Proficient in Objective-C (and Swift depending on project requirements)
- Apple development environments (e.g., Xcode, Cocoa, Cocoa Touch)
- iOS frameworks (e.g., Core Data, Core Animation)
- Desired Apple operating systems (e.g., macOS, iOS)
- Desired Apple hardware (e.g., MacBook, Apple Watch, iPhone)
Objective-C Developers FAQ
What is Objective-C?
Objective-C is a general-purpose programming language that supports object-oriented design by adding Smalltalk-style messaging to the C programming language. It was the main supported programming language for Apple products (e.g., macOS, iOS) until the introduction of Swift in 2014.
How much does it cost to hire an Objective-C developer?
The first step to determining the cost to hire an Objective-C developer will be to define your needs. Rates can vary due to many factors, including expertise and experience, location, and market conditions.
Cost factor #1: project scope
The first variable to consider when determining scope is the nature of the work that needs to be completed. Not all Objective-C projects are created equal. Building a simple store loyalty app will typically take less time than creating an online store with in-app purchases.
Tip: The more accurately your job description describes the scope of your project, the easier it will be for talent to give you accurate cost estimates and proposals.
Cost factor #2: Objective-C developer experience
Choosing the right level of expertise for the job is closely tied to how well you determined the scope of your project. You wouldn’t need an advanced Objective-C developer to perform simple maintenance tasks such as patching your software to keep up with the latest iOS app update. On the other hand, migrating a large codebase for an enterprise app from Objective-C to Swift can be a long multistage process that requires the skills of a senior developer.
Beyond experience level, you also need to consider the type of experience the talent possesses. The following table breaks down the rates of the typical types of Objective-C developers you can find on Upwork.
Rates charged by Objective-C developers on Upwork
Level of Experience | Description | Hourly Rate |
Beginner | Can build simple applications with Objective-C and Swift for iOS and/or macOS. Familiarity with Cocoa, Cocoa Touch, and/or Xcode. | $20-30+ |
Intermediate | Beyond fundamentals, specialized skills in developing for one or more Apple devices such as iPhone, iPad, Mac, Apple TV, and Apple Watch. | $30-60+ |
Expert | Experience managing a product’s progression through the software development life cycle. Working knowledge across the front end and back end of a software stack. | $60-90+ |
Cost factor #3: location
Location is another variable that can impact Objective-C developer rates. It’s no secret that you can leverage differences in purchasing power between countries to gain savings on talent. But it’s also important to factor in hidden costs such as language barriers, time zones, and the logistics of managing a remote team. The real advantage to sourcing talent remotely on Upwork is the ability to scan a global talent pool for the best possible person for the job. Location is no longer an obstacle.
Cost factor #4: independent contractor vs. agency
The final variable regarding talent cost is hiring an independent contractor vs. an agency. An agency is often a “one size fits all” model, so you’ll often have access to a designer, a project manager, an engineer, and more. When hiring individuals you have total autonomy regarding who is responsible for which part of the project, but you’ll need to source each of those skills separately.
The trade-off between hiring individuals vs. hiring an agency is the level of administrative overhead you incur personally in coordinating tasks among all members of the team. Project scope and personal preference will determine which style is a better fit for your needs.
Common Objective-C developer mistakes
Not using prefixes: Classes, global functions, global constants, and protocols should be named with a prefix starting with a capital letter followed by one or more capital letters or numbers. It’s a cosmetic quirk owed to the lack of identifier containers within the Objective-C language.
To avoid namespace collisions, Objective-C relies heavily on prefixes. This is why many global elements start with NS (e.g., NSString, NSObject). For example, within the Cocoa framework, you use the NS prefix for Foundation and Application Kit, AB for Address Book, and IB for Interface Builder. Note that you do not use prefixes for naming methods or the fields of a structure.
Not practicing type safety: One of the major reasons Apple wants its developers to switch to Swift is that the language enforces type safety. Type errors are a common problem with Objective-C codebases because you have to use null pointers to implement type safety. When you try to call a method with a null pointer nothing happens. The following expressions and lines of code become a no-operation (NOP). At first glance, this might seem fine because your app won’t crash. However, if you’re not careful with how you implement your pointers, you could cause hidden bugs within your code that are hard to trace.
Accepting unknown strings as format strings: One common source of errors, crashes, and security problems is blindly accepting unknown strings as format strings. A good example is when you log a simple string with NSLog. If you neglect to use the format specifier %@, you might receive a string with characters that are interpreted as format strings.
//UnsafeNSLog(foreignString);
//Using a format specifier
|
Tips and best practices
Follow Objective-C naming conventions
As a rule you’ll want to make sure that any code you write will make sense to future developers working off your codebase. The best way to do that is to ensure you follow standard naming conventions for classes, methods, functions, constants, and other elements of your code. You can find naming conventions for a language like Objective-C off Apple’s official documentation.
Take advantage of C++ interoperability
Swift may be Apple’s preferred application development language, but there are still some advantages to using the more forgiving Objective-C. One of these is interoperability with C++ code via Objective-C++. C++ is basically C with classes—it’s lightweight and one of the fastest languages out there. The ability to leverage the C++ ecosystem of libraries is enough of a reason for some to keep using Objective-C with modern iOS and macOS apps.
Leverage Objective-C’s massive library
Objective-C has been around a lot longer than Swift. Initially released in 1984, it offers countless libraries to help developers with their projects. GitHub’s libraries address everything from real-time app analytics to mock objects for test cases to method swizzling. There are also macros, fragments of code that have been around for so long they’ve been named by the larger developer community, that can be used to solve specific problems you might encounter when building Apple apps. Examples of macros include DLog for logging and debugging and Nimble for creating DSLs (domain-specific languages).