Choosing a Programming Language, GUI, and Software Architecture for your Application

On Jun 24, 2020

During my final co-op rotation, I worked to develop internal project management tools, which utilized Python, VBA, SQL, and TKinter for tracking, managing, and presenting data related to projects we work on here at Ball Systems. Choosing a programming language, Graphical User-Interface (GUI) library, and software architecture were crucial steps in having a successful software project in a small company with a tight team of people with specific skills related to software development.

Internal Software Development

Choosing the right programming language

Now more than ever there are a wealth of programming languages that can achieve the same functionality for a desired application. Each programming language has its own strengths and weakness and choosing the right one for your application is vital for success. When choosing a programming language, it is important to consider the skill sets available to you and your software development team, the level of complexity required by the programming language to achieve the task, and how the piece of code will be maintained going forward. There will not be one right answer when it comes to a programming language of choice. One might be familiar to your team but is very complex when it comes to implementing the functionality required by your application, while another might be foreign to your team, but significantly less complex to achieve said functionality.

Choosing the right GUI

A user-interface is like a joke, if you have to explain it, it’s awful. User-interface design is an entire profession on its own, but for many small companies like ours it is not feasible to contract out or hire a person with those skill sets. Within the programming language of your choice there are likely many different libraries for creating a graphical user-interface. For example,

Python GUI Libraries:

  1. Tkinter
  2. PyQt
  3. Atlas Toolkit for Python
  4. CEF Python
  5. appJar
  6. PySimpleGUI

Each of these libraries offers different solutions to GUIs. Many modern applications such as Spotify, Discord, and Slack use libraries like CEF Python which allow them to use Chromium to develop software which utilizes the functionality of a web browser to create a seamless user-interface. Others like PyQt allow you to drag and drop elements in a separate application then it will write the GUI piece of Python for you.

Internal Software Development GUI

Choosing the right software architecture

Within your programming language and GUI library of choice there will be many decisions on how you will implement your application. Software architectures will provide you with a foundation for how your developers will use both your programming language and GUI library to solve your problem. You might want to define a simple architecture that all your software developers will easily be able to understand and add onto, or you might want more complex features down the road and taking the time to define a more complex architecture might allow you to do that. Software architectures can be as simple as choosing a data flow approach with little to no utilization of classes, or as complex as creating your own classes that inherit the functionality of your GUI library’s classes to add your own custom functionality to their libraries.

Starting software projects for internal or external customers requires thinking though some important decisions before coding even starts. Choosing programming languages, GUIs, and software architectures are critical to starting a successful software project and will define the scope and complexity of your project.

Has your team been experiencing other software challenges while working on customer projects? Contact us to see how Ball Systems can help solve your engineering challenges.

Contact Us

Blog Comments