Software development is full of acronyms. This happens mostly because when developing software, there’s often no time in between gulps of energy drink or coffee to waste on pronouncing out these acronyms or explaining concepts. That being said, here are some frequently used software development terms you’d do well to be familiar with, for when it’s next thrown your way:
1. API: Application Programming Interface
This is the art of building something extensible. It’s the laying of a foundation of standard procedures, types, tools, GUI interaction methods, database access rules and so on that programmers building other applications that make use of that API can use. In essence, the API developer is the good person, if they do their jobs right, because it’ll simplify others’ app creation process. Good examples of API programming include the Android APIs, where developers making apps don’t need to know how to talk to the phone’s gyro sensor for example, or have a technical understanding or the chip the device is using. They use a set of standardized instructions created by Google and the AOSP (Android project) to talk to these components easily.
A type of version control system. Git is an invaluable tool for team code collaboration and development, keeping code in sync with a remote server as you work, and tracking changes you make along the way. This allows code collaboration amongst multiple parties, and saves you from getting an aneurism when a small code change causes everything to break and you can’t fix it anymore. Read our indepth Git article here.
3. IDE: Integrated Development Environment
The Jack-of-all-trades of coding software. Your compiler, linker, debugger, text editor, and project manager all in one. The IDE is the software in which you write your code, and has tools that help you do it, as well as test your code once you’re finished putting it together. It also keeps all your source code files in one place and some even offer to throw in version control too.
4. SDK: Software Development Kit
These packages are the tools given to developers by a platform designer to help the developers create software for their platform. It usually contains a set of libraries, documentation for the APIs that are included, and a framework for creating software, even in certain cases a bundled IDE. For example, the Android SDK includes many Android APIs for developers to use, as well as an emulator, so they can test their apps on virtual Android devices, along with an IDE called Android Studio, to let developers make apps for Android with all the extra libraries and tools they need. SDKs can also come with libraries to interact with hardware and other tools, if applicable (think Oculus Rift dev kits).
5. UI:User Interface and UX: User eXperience
These two terms are listed together because more often than not, if one is changed, the other is affected. UI refers to the interface, or the portion of the software that interacts with the end-user. In most cases, this will be a window on-screen, with buttons, text and other assets, for desktop apps, or an app UI on a phone, but generally any software that provides some method to interact with a user has a UI. So “Good UI” generally means ‘does it look nice to me’?
UX on the other hand, refers to the experience the user has using the application. “Good UX” refers to an understandable flow through the UI, and through the options exposed to the user. Are the important options in your program easy to see? Are actions that are perhaps non-obvious explained? Do the button labels or icons make sense for what they do, and similar such factors. “Bad UX” often relates to “bad UI” in that if your programme looks ugly or confusing, the user will generally have a bad time navigating it (although that’s not always true; programmes with bad UI can have great UX and vice versa).
6. GNU GPL: GNU General Public License
This is a licensing type which applies to how the software you and others create is used. The GNU GPL is used for software that, in the broadest sense, is “free.” The GPL ensures that software bearing its licence terms can be modified, changed, reused, run and shared by you without incurring license violations. The important part of the GPL is that if you share code that is compliant with the GPL, you must grant the right to share, run, modify, and reuse that code to those you share it with. This practice is referred to as copyleft. For example, you can’t use GPL code, modify it to make money, and then copyright that code (that’s what the BSD license and MIT license are for). The Linux kernel is a great example of code that is GNU GPL compliant.
7. OOP: Object-Oriented Programming
Is an alternative to other programming paradigms in which functions are executed on an event basis. OOP instead considers “objects” which are manipulated, each object containing attributes (constituent data variables) as well as methods (procedures to modify the attributes). A class is the ‘blueprint’ for what’s being designed, and objects are the instantiation of that class blueprint. OOP supports class inheritance, where instantiations of an object in a derived class can be “a type of” the base class. The inheritance means that a derived class can inherit the base class’ methods and instance variables as-is, or modify them as needed.
8. SSH: Secure Shell
This isn’t a paradigm, but rather a protocol. SSH allows remote shell sessions on servers or remote clients to be done in an encrypted fashion. The need for this arose with the use of other remote terminal services like telnet and rlogin, which transmit passwords and sensitive data in plaintext. SSH lets you remotely access computers and servers, from another computer. SSH is common with client-server architecture connections, and works on insecure networks such as the internet, where unencrypted data could be freely intercepted. Good examples of this are the ability to access your Linux home server remotely to check its status and perform console tasks, when you’re away from home, or in cloud computing when you run your own code on large remote machines.
Comment with your views on this article in the comments section below, and follow Hyperion Hub developments in the future if you’d like to see more articles like these for the South African market.
Author: Matthew de Neef
Date originally published: 27/11/15