Types of Programming
In these days of high unemployment and fewer “on location” jobs, everyone wants to find something that they can do from home. Many want to “be a programmer,” but they don’t even know what that means.
Here are some of the things people in my profession do:
Designer
When you go to a well-designed page, you see a pleasant color palette, and all the content is easy to read, and all the menus are easy to navigate.
This is to the credit of a good designer. Some of this work is also referred to as UX, for “user experience.” UX can be an entirely separate role, often it’s the responsibility of the designer.
This is more of an artistic role. Knowledge of human behavior is also very valuable. This person is generally not a “programmer.”
Front End
When you click images in an online store and they enlarge, or you can scroll among many photos, or when you fill out a form, you’re using the work of the front end developer. They write (or generate) the markup which makes up everything you see. Their main tools are HTML, CSS, and JavaScript.
- HTML
- Hypertext Markup Language. This isn’t a programming language, it’s a markup language. It lets you present the content of your site in paragraphs and other sections. It allows you to embed images, audio, and video in your page.
- CSS
- Cascading Style Sheets. CSS lets you make an ugly site pretty. Fonts, colors, alignment, and overall page layout are all handled with CSS.
- JavaScript
- JavaScript is a programming language. It allows you to animate things on screen, dynamically change what the user sees without them refreshing the page, and do nearly everything that causes anything on the page to change after it has fully loaded.
Back End
Back end programmers do the stuff you never see. They work with databases & servers, making the site actually do things. If you fill out a form and register for a service, they write the code that puts your information into the database and sends a confirmation e-mail. When you click the button to send your message, they are the ones that actually deliver the message.
Web Developer
This is a nebulous term. It generally includes some combination of the above, but no one is good at (or has time for) all of those things, so they’re generally pretty good at a couple of them and can get by with the rest.
DBA
A database administrator is a master of databases. They can set them up from scratch, keep them running fast, keep them backed up, and make sure your company will never run out of space. This is a highly specialized role, and are generally not needed or hired and small to medium-sized businesses.
Full Stack
This is an alias for “all of the above.” If you see it in a job posting, run screaming the other way. Why? The company is signaling that they want to pay one (generally low) salary instead of hiring the 3+ people they actually need. Either they’re just cheap and they’re going to work you to death until you quit (which will be in 2-3 years), then hire another sucker, or they have no idea what they’re doing. In either case, run.
Mobile Developer
Everyone knows that mobile apps are “teh new hotness.”
Every company constantly harasses you to “install the app” every time you go to their website. It’s everywhere.
So, what does this entail?
There are (broadly) two types of mobile developer: Native & cross-platform.
- Native
- A “native” mobile developers specializes in one platform iOS (for iPhones & iPads), or Android (for Android phones & tablets). They use a development environment and programming language for one platform which is completely incompatible with the other.
- Cross-platform, A.K.A. “hybrid.”
- Use a non-native tool to create an app which can then be converted to run on either iOS or Android. Sometimes, these apps can also run on desktop computers and in web browsers.
Why you should be a “native” developer
If you want to create games or anything else which requires getting the absolute most you can out of the hardware – especially graphics, audio, and video – you might need to go native. This is because non-native developers don’t have access to quite all the functionality that native developers do, and native developers generally have the ability to have their apps run with better performance than non-native.
Why you should develop cross-platform
You (or your company) are going to want to be on both platforms, right? Why hire two native developers (actually, two teams if your company is successful enough) to make that happen? The platforms aren’t identical, so your app will probably never work identically in both places. What a mess!
However, if you use a cross-platform framework, such as Flutter, you can write your app in a single language and automatically build a version for iOS, Android, and (in the works), a web browser and your desktop.
There are drawbacks as described above – you may not have access to all the things your phone or other device is capable of. However, there are plugins available to overcome this for most things. Again, if you’re going to make the ultimate 3D first-person shooter, you’re probably going to have to go native.