Please provide a brief description of your company.
FreshWorks Studio is a highly specialized mobile app development firm in Victoria, British Columbia. We deliver quality mobile apps for both iOS and Android, develop product strategy, create responsive web applications, and provide a memorable user experience [UX] driven by narrative story telling.
We build exceptional mobile apps, and we take what we do very seriously. We are passionate, dedicated, and committed to making the app development process both enjoyable and productive. Our goal is the success of our clients.
What are your role and responsibilities in your company?
I’m the Chief Executive Officer. I oversee iOS app development work and my responsibilities include designing the UX, collaborating with our team and other developers, designing the architecture, developing and managing code, fixing bugs, installing updates, and uploading the app to the Play Store.
Who is the ideal client for an app developed using Xcode?
The ideal client would be someone who believes that a native user experience of the app is critical and important for the success of the product. The UX is fluid and flawless when developed using Xcode.
What advantages does Xcode have over cross development platforms?
I learned Xcode in 2010—not Objective-C, but the actual application, along with the UIKit framework and the Sketch-like editor called Storyboards. As a designer, dragging and dropping elements felt familiar. And it wasn’t messy. Storyboards doesn’t actually create code, it replaces it. You reference the objects. The styling code is effectively removed from the Class files, allowing cleaner code. Then Swift came along. Objective-C at that time was twenty-years old, and it was reborn into a modern, simple, and safe language. Reading the code is far easier. Apple is doing a marvelous job.
While web tools are far simpler for creating simple pages, it’s much harder to design beautiful transitions and powerful interactions. You have to mix and match a bunch of frameworks coming from different authors. It just doesn’t make sense to build native apps using web tools. Nothing is cohesive.
What are the disadvantages of Xcode?
Well, first of all, Xcode requires a more expensive Mac instead of an inexpensive PC. The price difference is pretty steep if you want a high-performance development system. XCode is basically limited to producing applications for the Apple family of devices, which is a fairly significant limitation considering the number of Windows desktops and Android devices, and all the Linux stuff too!
Another problem is the limitations that Apple puts on publishing your XCode applications. You can create them for personal use, but to publish them for others to use, you’ll need an Apple account and a license for the Apple Developer Program. Then again, you will need this no matter which tool you use, particularly if you target the iPhone or iPad. And since the Mac also uses an app store, the same limitation applies to the Mac.
Apple has never been very good at developing a popular web server, and their hardware is generally considered too expensive to be used as such. It is still possible to do web development on a Mac (my last employer did some of that!) but hosting sites is much easier on a Linux or Windows system.
Consequently, XCode has not been optimized enough for proper web development. The languages that you can use with XCode are Objective-C and Swift. Both languages are very Apple-specific and not really used for Windows or Linux development, but Xcode also supports C, C++, Java, Python and Ruby, plus some third parties have added compilers for Pascal, ADA and C# to it.
RESULTS & FEEDBACK
How has XCode improved your development projects and benefitted your clients?
It has been a great experience designing and developing projects on XCode. It gives full control of the app, with all the frameworks and libraries ready to be used. There’s also a high level of device independence when compared to developing hybrid apps. Each mobile platform that the native app is developed for, stipulates its own unique development process.
In the case of web apps or hybrid apps running on a mobile device’s web browser, the problem that arises is that each of these mobile devices have unique features and come with their unique problems as well. They are faster and more efficient as they work in tandem with the mobile device they are developed for. Also, they are assured of quality, as users can access them only via app stores online. This reduces the development time for the minimum viable product.
What are XCode’s features or tools that have most impressed you?
The native features of XCode are very powerful and help a lot in development. New versions of XCode are always improved and are faster and more fluid than previous versions. Some of the more impressive features include Source Editor and Assistant Editor. Source Editor allows the developer to write code using a professional editor with advanced code completion, code folding, syntax highlighting, and message bubbles that display warning, errors, and other context-sensitive information in line with the code. The Assistant Editor button splits the editor in two, creating a secondary pane that automatically displays files that are most helpful based on the code the developer is actively editing, showing the header counterpart, the superclass, callers, callees or other helpful files.
Xcode’s Version Editor displays a running timeline of commits, helps the developer determine blame, and graphically goes back in time to compare source files, with full support for Subversion and Git source control management [SCM] systems. Interface Builder allows the developer to test the user interface without writing a line of code, then graphically connects the interface to the source within the Xcode editor.
Using the iOS Simulator, Xcode can build, install, run, and debug Cocoa Touch apps in a Mac-based iOS Simulator for a streamlined development workflow, while Quick Help displays shortened application program interface [API] documentation while the developer is programming, including comments that are written for the code. A brief overview is presented during code completion, with more links and references available within the Utility area. Then again, XCTest APIs makes it easy to build unit tests that exercise app functionality and are capable of running on Mac, iPad, iPhone, or the iOS Simulator.
Static Analysis finds bugs in the code before the app is even run, by letting the built-in static analyzer try out thousands of possible code paths in a few seconds, and produces a report of potential bugs that could have remained hidden or are nearly impossible to replicate.
Finally, there are various powerful tools like Instruments, Command line tools, Script languages, UNIX tools, Source Control, Terminal 2, and File Merge.
Are there any areas of the software that are not as strong, that could be added or improved upon?
XCode takes up a lot of space on a Mac and every build is around 200MB—it all adds up. A new version could be optimized better.
What has been your experience utilizing XCode’s support resources?
I’m very happy with the response from the Apple team. We wanted an expedited review of one of our apps and the Apple team was helpful and fast.
We ask that you rate the software on a scale of 1-5, with 5 being the best score.
What would you give XCode for the functionality of available features?
What would you give the software for ease of use or ease of implementation into your business?
For support, as in responsiveness of the team or helpfulness of the resources available?
How likely are you to recommend the software to a colleague or similar business?
Overall, what is your level of satisfaction with Xcode?