Program Outcomes – IT Mobile App Dev

Program Outcomes: IT – Mobile Applications Developer

1. Gather mobile requirements

  • 1.1. gather user requirements for a mobile platform
  • 1.2. identify problem statement for mobile platform
  • 1.3. identify mobile applications requirements
  • 1.4. validate mobile application design against user requirements

What I knew coming into the program

From using a lot of mobile apps over the past 10 years, I thought I had a decent understanding of what makes a good application and what makes a poor application. I’ve installed so many applications since iOS 2.0 first introduced them, and I manage my current applications list to a select few that deliver the content I need in a navigation format that I find acceptable. I thought that if I design my apps like the apps I use, I would be well in the clear.

What I gained by completing the program/what I learned

While that is not a terrible strategy, I learned quite quickly that my parents should be the ones listened to when evaluating an application’s performance. The websites I created seemed fine to me, a tech savvy student with a more modern iPhone than either of them has, and half the age to boot. Considerations I should have been making a long time ago have been made clear by allowing my Mom to test my website for her to use. As she went along, I noticed more how she was using and navigating the webpage, what she struggled to find, how long it took her to find something, and realized the true duration of a first impression.  Elements on an application being too small, vague, or out-of-place were able to resonate with me and will be channeled into my future work.

How I demonstrated the outcome on one or more internship projects/class projects

With the Badger State Limousine internship, mobile formatting was essential to the business. Consider the audience—those who fly for business and need airport transportation are unlikely to be carrying a laptop computer with them, or something that can access desktop-formatted webpages. While the current website does format itself for mobile reasonably well, the Contact Form fields are not mobile-friendly and do little to provide integration with native platform amenities (calendar dialog for date picking, picker controls for time). The move to WordPress and the Contact Form 7 plugin allows for these latest innovations of mobile to be accessed, so that an older audience can navigate the form with ease and can clearly understand what each field is asking of them.

Links to mentioned projects:

https://badgerstatelimousine.com/contact-badger-state-limousine/

2. Design mobile applications

  • 2.1. apply UX/UI Design Principles
  • 2.2. implement responsive mobile design
  • 2.3. develop design for mobile applications
  • 2.4. apply best practices for mobile application design

What I knew coming into the program

Being on my phone all the time, and experiencing iOS since the beginning, I was familiar with the design language of iOS. In addition, I used Google services like Gmail, Drive, and Chrome frequently, which provided me a small amount of insight into how Google design language varied. However, not using an Android device daily meant I was not as familiar with the intricacies of Google’s design language.

What I gained by completing the program/what I learned

The courses at MPTC and my Instructors helped outline what these guidelines were about, and why it was essential to keep them in mind during development. Both Apple and Google design their native applications—the applications that are installed on the device by default—intentionally to create a guideline for what their users should expect interactions within applications to behave system-wide. These guidelines are not just suggestions on how to make your application resemble a native app, but to follow the expectations of behavior set by the native applications so that the experience of the user is not interrupted.

How I demonstrated the outcome on one or more internship projects/class projects

For the Badger State Limousine Service website, I had went out of my way to make sure that the elements were all responsive, including the video playback on the About Us page. However, I encountered an issue. YouTube now enforces recommended videos on any embed, and this really made the browsing experience poor on mobile. Playing the video was okay, but resuming or replaying when you paused were a hassle. I had managed to utilize my resources and instead of using the WordPress block for YouTube videos, I utilized a Custom HTML block with code provided on a fellow WordPress user’s website. This retained the responsive sizing functionality for small displays while allowing for a graphic overlay powered by Javascript to take over the pause/resume/replay functionalities. It made the experience of viewing the video on mobile a lot more touch-friendly.

Links to mentioned projects:

https://badgerstatelimousine.com/about-us-limousine/

3. Integrate mobile data technologies

  • 3.1. implement internal local storage
  • 3.2. implement external storage
  • 3.3. implement a mobile application using API

What I knew coming into the program

In general I did not know a thing about what an application has access to on a device. I figured that APIs were something that you had to pay a considerable amount of money to use. Or that an application has access to the entire filesystem if it needs to.

What I gained by completing the program/what I learned

Basically, I learned that there are ways to utilize external and internal local storage temporarily while an application is offline to preserve the functionality for the end user. For example, a weather application on a mobile phone is connected to the network at 10am but is not able to connect to the internet again until 5pm. The local database is called upon via JavaScript files to store the weather update from 10am for later viewing. This way, when the user checks the weather at 12pm, the application will still show a result instead of being blank, and the visual experience will remain the same for the user. Also, some APIs do cost money, but often that is if the website reaches an overwhelming capacity.

How I demonstrated the outcome on one or more internship projects/class projects

In Coding for iOS, we demonstrated this outcome application would gather news articles using the keyword PWA and render the top 20 results. The (quite literal) key was that the application would utilize Microsoft’s Bing Search API to find the results, which meant signing up for a Microsoft Azure account, creating a new resource, and acquiring the API keys to link to that website. These keys allowed the code that was already on the website authorization to query the Bing Search API for the request and return the result. There was also a User Sentiment rating form, in which submissions could be made even if the application was offline thanks to databases and local storage.

Links to mentioned projects:

https://www.christianmccreary.com/lp5/pwa-news/public/index.html

(Note: The available API calls for the free Azure Student subscription may have since expired from the time I had taken this course.)

4. Build Mobile applications

  • 4.1. identify differences between native and hybrid environments
  • 4.2. code mobile languages to create mobile applications
  • 4.3. debug mobile applications
  • 4.4. test mobile applications
  • 4.5. deploy mobile applications to a device
  • 4.6. demonstrate proficiency using mobile developer tools
  • 4.7. distribute mobile applications
  • 4.8. identify strategies for developing secure mobile applications

What I knew coming into the program

I had experimented with Xcode in the past, but 99% of my time in the project was adding buttons in no particular order, thinking that I was coding when really I was designing a layout and nothing more. The importance of testing and debugging applications I had been familiar with, but in such a limited capacity. Testing websites, testing animations, and testing games were really the only things that I was familiar with at the time of starting this program.

What I gained by completing the program/what I learned

There were many trials and tribulations over the course of this program, especially when it came to debugging and testing applications. I learned that at least for a beginner in my experience, most of the time it can be traced back to one line of code—often a syntax error. I learned the importance of testing the hard way, especially as assignment deadlines neared and applications still would not deploy to the emulator. But ultimately, the courses and the instructor found a much better way of dealing with these hassles. While it still will inevitably happen that an application requires testing and debugging before launch, the distribution of these mobile applications can happen much faster through Progressive Web Apps (PWAs). These are an advanced form of a web application that can take advantage of some native features of the hardware, like local storage, camera access, and more. The best part being that they still operate much like a website and can be updated and adjusted just as frequently.

How I demonstrated the outcome on one or more internship projects/class projects

In the iOS App coding course, I was able to create a Weather App as a Progressive Web Application. This app was designed to be uploaded to the internet and ready to be bookmarked on the home screen in both Android and iOS. Once uploaded, this application was distributed to everyone who could access the link. There was some troubleshooting to get to perfect parity, especially in terms of fetching data from the proper location. But that troubleshooting was much simpler and straightforward with the PWA designation; as a website I did not have to go through the formalities and expense of packaging a native application for iOS and submitting it to the App Store for approval. I was instead able to make changes to the application just as fast as any other website I have managed. Change the code, update, and test, within a few clicks instead of weeks.

Links to mentioned projects:

https://www.christianmccreary.com/lp8/index.html

(Note: The available free API calls from OpenWeatherMap may have expired from the time I had taken this course.)

5. Develop technical documentation for mobile applications

  • 5.1. document mobile application design
  • 5.2. create mobile application documentation
  • 5.3. develop documentation package for distribution channel

What I knew coming into the program

When coming into the program, I had a rough idea on creating documentation for web applications, but not enough to be confident in transitioning to mobile application design. Basically, I was only familiar with creating front-end website mockups. 

What I gained by completing the program/what I learned

Over the course of the program, I learned that mobile application documentation must be more comprehensive than the front-end design. The functionality should also be conveyed through your visual mockup as well. Creating a plan for where your content should be laid out helps your developers and designers create a more cohesive experience for the end user. This should theoretically also lead to less frustration and confusion on where everything is supposed to be in an application—not just for your users, but for the sake of your client as well.

How I demonstrated the outcome on one or more internship projects/class projects

In the UX-UI for iOS Applications course, I utilized a program called Adobe XD to create not just a layout, but an interactive experience for a Weather Calendar application mockup. This is an evolution of documentation that helps the developer of the application understand the experience, allows the users to provide feedback on the experience, and gives the client and designer a chance to revise the experience before the final release. A simple layout had shown the main menu, the big calendar, the weekly view, settings, and about pages, all within a single experience where the navigation in the design functioned exactly as it would on the final application. A mockup like this can be an invaluable resource, not just in development but also in budgeting. Troubleshooting at this stage while having multiple revisions or milestones saved can save a significant amount of money and time for the developer, designer, and client.

Links to mentioned projects:

Here are the photos and files from the Adobe XD project.

6. Implement current platforms support

  • 6.1. develop for utilized operating systems
  • 6.2. investigate development for future technologies
  • 6.3. develop across mobile platforms

What I knew coming into the program

Using iOS devices from iOS 1.0 on a 16GB iPod Touch 1st Generation, I’ve always been on the edge of the platform’s latest technologies and features. But regarding Android devices and operating systems, I was completely lost on what was still current and what was outdated.

What I gained by completing the program/what I learned

Through my time in the program, I learned that the range of devices still supported by Android developers are much wider than I initially thought. As a result, more considerations need to be made for these users of what may be considered legacy hardware. When exporting for devices in this program, I learned that it was common to set the minimum supported device to devices running Version 4.4, KitKat, released in 2013. By comparison, the devices supported by Apple running the latest version of iOS (14.5) were released in 2015. Hardware has evolved, and so to have the capabilities; both iOS and Android platforms have support for Virtual Reality headset experiences.

How I demonstrated the outcome on one or more internship projects/class projects

In the Introduction to VR application course, I was able to develop brief VR applications with Android as the target platform. Using both Unreal Engine (which I already had some familiarity with before this program) and Unity (with which I was unfamiliar) I was able to create some very simple experiences that were condensed down to target the limitations of Android devices. In my last project, a user could enter the scene with a Google Cardboard headset, maneuver their view in a 3D space, position the cursor over the Cube in the scene, and click the cube to have the object interact and spin. With the power of Unity and Unreal and their support for multiple-platform export, this is something I am interested in exploring more detail, just as the viewers of the VR applications I make are equally as eager to explore new worlds. Even moreso, in the Emerging Web Trends course, I used a framework called Aframe to generate a VR compatible world directly within a web browser, taking accessibility and availability of the new technology to the next level.

Links to mentioned projects:

https://www.christianmccreary.com/LP3_VR/index.html

(Note: The above is a multiplayer VR game; you will need two devices or two separate browsers in order to complete the objective of lighting every “orb”.)

Reflection Essay: How I’ve Changed: Then and Now

Before this program I naively thought that I could go into this program like how I treat design; with careless abandon of prototyping abound until I get a result I am satisfied with. In general, I would find it easier to just get to work and while I would eventually land on a successful or passable result, I would be very frustrated while going through numerous ideas that failed.

Now I have learned that the key to successful application development is planning, and a lot of it. Not just what you think the end product should look like, either. Researching the needs of the user and the client. Focusing on ways to bring those needs to both effectively through competitive analysis and client review. Organizing a file structure to contain user data safely and deliver client data efficiently. Prototyping the application and receiving valuable feedback from both the client and the user. Then designing the application on top of that, making sure the elements are cohesive with the branding of the client while delivering the effective experience for the user. Even after all of that, and the application is submitted, still planning by making marketing strategies to promote the application after launch and recruit new users to utilize it.

Before this program I overlooked planning as a virtue of design, and thought I could apply the same philosophies to development. With what I’ve learned in development, now I am taking these valuable planning insights and applying them to both my future development and design careers.