Platforms and tools

This week we were tasked with researching and exploring the platforms and tools that we will use to develop and create apps. Exploring a variety of software development kits, programming languages and development environments will allow me to choose what tools I need in order to develop the apps that interest me and are relevant for my future career.

As some insight into the applications I would like to start designing, I will be looking to create apps that improve peoples lives, help implement sustainable strategies and make them more accessible. I will mainly be focussing on mobile applications (smart watches and phones). However, I will not be limiting myself to this if a solution to a problem  is an app on a different platform. I am also interested in linking interesting technologies, iBeacons, RFID, AR etc. to apps. 

My criteria for tools is a visual and completed prototyping tool for UX/UI and a programming language (and relevant tools) to realise the types of applications I would like to design. Due to my inexperience with coding I am looking for a language that has a relatively easy entry but with scope for more complex and exciting application further down the line.

Here is an overview of the tools that I have research and explored.

BuildFire.js:

Rapid mobile app creation through the BuildFire SDK and JavaScript. The programmer uses the supplied platform and customises the program to suit their specifications, rather than building from scratch. 

This allows for easy and quick development of new concepts. The pre-programmed framework cuts down the time needed to develop apps and also makes it very scalable. This is also a good option for people new to mobile app development. 

The downsides of this platform is less features and hardware integration. NFC and iBeacons, AR and other more advanced features are limited if not unavailable. The limitations of this platform mean it might be unsuitable for many applications that I would look to exploring. The cost of getting the app live on the App or Google Play store requires you to have your own developer account with the features increasing with cost. 

For inexperienced developers or small enterprises BuildFire would be a good option however, for the cost and the creativity needed for the course I think that other options would be better suited.

Python:

As the most popular programming language it is used by top companies as it applies to a variety of applications. You can create almost any type of app with Python and for many different operating systems like Windows, Linux, Unix and Mac. A cross-platform framework makes its a great tool for creating complex multi-threaded applications. 

As an easy language to learn, and read, it makes it a good language to start learning with. The maturity of the software has meant that Python has built up a huge amount of libraries that can be used for a variety of uses. The community that Python has built is huge and cannot be undervalued. 

The downsides of Python is that whilst it is a hugely strong app development language the limitations come across when developing mobile apps. Whilst I thought Python might be a good language to learn due to its relative ease, the limitations in mobile development means I will look for another language. 

Swift:

Swift is the latest programming language for the Apple ecosystem and has started to take over from Objective-C. The main advantage of Swift is its readability and its clean syntax due to it closely resembling English. Fewer lines of code is another great benefit. 

 

swift

Swift is also the fastest growing language and has a growing community. Despite being a relatively young language it is becoming a very desirable way to create apps for iOS and MacOS platforms. I also believe that due to the relatively small pool of developers, and the growing popularity, learning the software now will help make me stand out from other developers in the future and stay relevant. 

ARKit 2 has recently been released and has some great features including orientation tracking, world tracking, 3D object recognition and face tracking. I think that AR will impact our lives more and more through the apps that we use. Apple’s ARKit is the leading platform for mobile augmented reality and for me is the most advanced and accessible. The Pixar developed USDZ format for AR objects is also supported by Autodesk, Adobe and other third-parties making it relevant and accessible. AR is one of the major reasons why I believe that Swift could be the programming language I will start learning, using the large variety of resources out there. 

Adobe XD, Figma and Sketch:

These three tools are great prototyping from a UI and UX standpoint. Whilst I have used Adobe XD in the past to create wireframes, mockups and preview apps I am interested in trying Sketch and Figma to see if these options provide any benefits. Each piece of software has its own benefits from prototyping to collaboration. These tools will allow me to rapidly create wireframes, prototypes and test apps before turning to code to realise my creation.

Conclusion

Looking at my skillset, current tools and software experience Swift looks like a good option for me to start learning as a solid start to programming and app development. Whilst from a UX/UI standpoint I will start in Adobe XD, whilst trying out the free versions of Figma and Sketch to compare the three prototyping tools.

The next step for me is to watch some tutorials and examples of how to start learning Swift. Exploring tutorial courses on Lynda and Pluralsight will help me to understand and get started coding apps.