Practise & Reflection

Achievements

Over the duration of the module, I have sketched out the landscape of my app development career. I have identified technologies and languages such as Laravel, a PHP framework, to build web applications and integrated development environments, such as Atom, to help code the applications I wish to create. These are key technologies and skills I require as an app developer in my field. In brief, I wish to be a developer for the theatre and entertainment industry, expanding on my currently made application, Stamp, extending it to allow a synchronised environment, with multiple users collaborating together to help create a theatre production. Whilst also making it a financially viable product, by implementing a software as a service (SaaS) subscription system, with authentication. These requirements point towards a web application to allow multiple users across the globe to connect and interact with each other whilst also enabling a clean and stable licensing system.

App Jam

During the App Jam I was able to address some of the skills I would need as app developer in my field and apply the learning from the courses I had previously undertaken, most notably, the online video tutorials on laracasts - Laravel 5.7 From Scratch, [HTML Video and VideoJS(https://laracasts.com/series/how-to-use-html5-video-and-videojs), and Eloquent Relationships. The task I set myself was to build a web application as a learning environment to display educational material in video format. The words given to me as a theme, led me towards this idea. The word, Guide, I took quite literally. An application that would assist and walk the user through a process. From listening to my users of Stamp, I new that they felt restricted, because they didn’t know how to use a particular feature of the application. The concept both fitted with the theme of the app jam and my personal needs to learn web development. I new I could take aspects of my application, such as the concept of a user, storing that users private data in a database, and learn from it, applying that knowledge to my future applications and career goals. The app jam was both an uncomfortable and challenging task. I had previously researched Web Frameworks earlier in the study block and learnt of Vapor. Whilst Vapor is written in Swift, a language I understand with architectural concepts I’m familiar with. The framework is only 3 years old with a young community of users. The framework didn’t give me the confidence that I would need moving into a new field of app development. I wanted to be using a framework with a large knowledge base behind it, which would offer me a lot of support and use a language which has been designed and tested for the web. These opinions and the encouragement from my colleagues led me to Laravel, a PHP web framework. I was unfamiliar with both the framework and the language. Despite these initial drawbacks, the framework uses familiar design patterns such as Model, View Controller (MVC) and code is written expressively, which is similar to my experience working with Swift for macOS and iOS development. I enjoyed the process because of these familiarities and managed to achieve a working prototype of my concept within the allocated time.
Having researched web frameworks and finding laracasts.com with a substantial catalogue of lessons on Laravel and web development I was about to clearly define the educational material and resources I would need for the app jam. Little time was spent finding the answers, which is often the trouble. laracasts.com gave me the time to watch and process the relevant skills I needed, increasing my time to adapt and apply them to my own application. Part of my success with the app jam was by setting clear and achievable requirements and can be attributed to my previous experience developing applications. Estimating the time to implement a feature is something I do regularly. Having that experience made me aware to take note of my progress during the app jam and gave me the confidence to alter the initial task list more realistically. I learnt that I was much slower developing with a new framework and language. It is only now, after learning more about agile development that I can identify that I had naturally set out for myself a mini “sprint”, with a set number of tasks to achieve over the course of twenty-four hours.

Development

During the app jam, I began to exploit the point at which a task had been completed as a good moment to commit the code to a git repository. Research indicates to take this process further, in Sarah Goft-Dupont’s case-study, [Git branching for Agile Teams]((https://www.atlassian.com/agile/software-development/git-branching-video), branching a git repository per agile task or story is advised to help see which code implements which task and to use commits on the branch as safe or memorable states in the codebase. Across the rest of the module I will endeavour to create a branch for each new task as I take my app jam project forward in development. This will increase my confidence using a git repository system and help me to establish the progress of a task and when it is complete by the branch being merged back into the master.

Further Research

From reading Cowboy: An Agile Programming Methodology for a Solo Programmer, an academic paper by Ashby Brooks Hollar I understand that test driven development (TDD) is core to agile practises and would go hand in hand with the branch by task system I intend to implement within my git repository. I will up skill on test driven development, so that I can ensure the quality of my web applications is kept by completing a basic online course (Testing Laravel), for two hours each week and implement tests for each new task created for my app jam project.

Project progression

Taking my project forward across the module, I aim to flesh out the prototype with a designed user interface. To help both my management skills and to better understand Scrum methodology, I will introduce a Scrum task board to my app jam project and keep track of the tasks needed to implement 3 new user interface features.

References

  1. Laravel
  2. Stamp
  3. laracasts
  4. Git branching for agile teams
  5. Cowboy: An Agile Programming Methodology for a Solo Programmer
  6. Scrum