Technology Overview

ITEC 3870 Software Development II,
Anca Doloc-Mihu and Cengiz Günay

(License: CC BY-SA 4.0)

Prev - Career Advancement Tips, Next - Agile Development

Getting out of your comfort zone

Forget: Java

At least for now. Why?

  • It’s not the only language out there: TIOBE Index, Github State of the Octoverse survey, and StackOverflow Developer Survey of 2019
  • The more languages you are familiar with, the better chances for jobs
  • Knowledge of imperative language like Java easily translates to several other languages (C#, Python, Javascript, C/C++, …)
  • Java is not on the rise, but it’s still very popular
  • Web frameworks and languages have transformed application development landscape, especially Javascript (not Java)

What’s the deal with Javascript?

  • Classical web architecture:
  • Javascript web architecture:

Major players; require Node.js on the server

  1. Angular (Typescript) - a full framework, owned by Google
  2. React (JSX) - only a library. Invented by Facebook, but open source now
  3. Vue.JS (Javascript) - modeled after legacy AngularJS; lighter, independent, and open source

Non-JS web frameworks

  • Python
    • Django - Very extensive, open-source framework
    • Flask - Minimal, light, open-source framework
  • C#
    • .Net Core - Controlled by Microsoft, but platform independent
  • Ruby on Rails - Open-source Ruby web framework, lost some steam recently
  • PHP (legacy) – but good with new frameworks
    • Laravel - easy, video tutorials
    • Yii - performant, but steep learning curve
  • Java
    • Java Server Faces (JSF) - Legacy
    • Java Spring - similar to .Net, controlled by Oracle

Mobile hybrid frameworks

Hybrid: cross-platform (Android, iOS, …)

  • Flutter (Dart)
  • React Native (JSX, HTML, native)
  • Ionic (Angular/React, HTML) – based on Cordova
  • Xamarin (C#, XML, allows native code)

SQL Databases

  1. No database
  2. SQLite – database in a single file, simplified
  3. MySQL/Oracle/PostGreSQL/MS SQL Server – legacy, centralized, powerful, requires server

NoSQL databases

Simpler, less powerful, cloud options available

  • MongoDB - industry leader
  • Firebase (Google) - easy for mobile apps
  • Cassandra
  • CouchDB - Good for highly distributed systems

Game Dev/Graphical

  • Unity (C#/Javascript)
  • Unreal Engine (C++/Blueprints)
  • Godot (custom, Python-like language)
  • GameMaker (custom language)
  • Processing (Java)
  • JS frameworks (PhaserJS, …)

Online Servers

There are free or low-cost options:

I’m lost! How to learn all of this?

We can’t teach all technologies, and you need to get used to picking them up faster in preparation for real jobs out there.

Some advice:

  • Learn how to read! (Literally) Always first go to the tool’s official website and follow their latest documentation, examples, and tutorials.
  • Practice a simpler project Do not jump into modifying your inherited project without understanding the basics on a simpler toy project.
  • Do not update everything at the beginning This may go against the fast-paced update culture, but we first need to preserve the working conditions of an older project. You are almost guaranteed to irreversibly break a project if you blindly update all of its dependencies to the latest version.
  • Do not watch those Youtube tutorials! Yeah, old school person here, who doesn’t understand the new generation. But, see next slide.

What’s wrong with video tutorials?

  • you can’t copy-paste from a video
  • they are almost always outdated (these tools update every 3 months or so)
  • they usually show only a very specific solution that may not be a good fit for you
  • you can’t continue following if you get an error during a step
  • you can’t search keywords within a video

How about some learning resources?

Home