Technology choices

Table of Contents

We need to consider the environments in which we’re operating! This includes both our development and deployment tech stacks (operating system, programming language, libraries).

What’s Next?

We have some additional considerations, since this is an academic environment (and not a commercial product for example).

  • We want you to have the option of mobile or desktop development, so we need a tech stack that supports both.
  • We also need to make sure that everyone in the course can run the development tools. This means that we cannot use Apple-specific toolchain (which are only available to people using macOS).

Given all of above, we’re going to use Kotlin and build Android applications and desktop applications.

Info

Kotlin is the main programming language for Android development, and really useful when targeting that platform. JetBrains, the company behind the language design, is working with Google to expand support to desktop, web and eventually iOS! The goal is to have a single programming language that can target all of these platforms!

Kotlin is a modern, application focused programming language with a lot of amazing features. We’ll learn how to use Kotlin to build well-designed applications that meet the goals we’ve outlined. This includes discussions of architectural styles, useful design principles, design patterns and best practices like pair programming, unit testing and code reviews.

We’ll also discuss how to implement key features like user-interfaces, database connectivity and web services using industry-standard toolkits e.g. Compose for UI.

Finally, we will do all of this in the context of best team practices. We will take steps to ensure effective team communication and collaboration, and identify things that you can do to work effectively together. These are extremely important skills to develop as we start building larger and more complex systems.

Final Word

XKCD

https://imgs.xkcd.com/comics/xkcd_stack.png