These days, many websites are dynamic, meaning the data they display may differ depending on who is accessing the site or which search term they are using. Other websites are static, with content that is written directly in the HTML, so the pages will always look the same unless the developer makes a change.
While developing a static website is fairly straightforward, creating a dynamic website or application can involve multiple different programming languages, databases, APIs, frameworks, etc. The software has to run well on multiple platforms, taking into account different browsers and screen sizes. Typically, these responsibilities are divided into two categories: front end and back end.
Front end or client-side development covers the look and feel of the website and how users interact with it. There are two main aspects of the front end: development and design. Some companies split these into two different positions, while others lump them into one role.
Designers may use image editing software in order to create a picture of what the site should look like, and they may create wireframes which indicate how elements are displayed and how users may interact with them.
Developers will take these designs and form them into a functional front end. If the site is dynamic then this will be connected to the back end.
Back end or server-side development involves everything that runs in the background to make the software function, such as communicating with the database and server.
If you’ve ever bought something online or created an account on a website then you’ve interacted with the back end. You can’t see it, but it’s crucial for processing and storing the data.
Back end developers primarily use one or more programming languages, which could be Python, Ruby or PHP, to name a few. Just like on the front end, there are frameworks that back end developers can use to make their jobs easier. Back end developers also need to have an understanding of databases, APIs and servers.
You may also have heard of a ‘full stack developer’. This refers to someone who works on both the front and back end of an application.
How to Choose
I’ve been thinking a lot lately about which of these is really right for me. I’ve been operating under the assumption that I’ll apply for a back end development job using Python, but I’ve never been 100% sure about that. I’m technically far more adept at front end. If someone gave me a design I have little doubt that, whatever it is, I could create it. The problem arises when I have to create the design myself. I’m just… not good at it.
The back end position, however, requires strong Python skills and a basic understanding of Node.js. I have the latter, but ‘strong Python skills’ is a pretty broad requirement. Looking at the company’s website, it appears they do a lot of data science and machine learning stuff, which isn’t really the kind of thing I’m interested in. I’m generally not into math unless it’s for a game.
But I guess I felt that it would be easier to learn data science and algorithms than how to be artistic. I felt that being able to create good designs isn’t something that can be learned – some people are good at it, some aren’t.
But maybe I’m wrong.
I might do some reading on design and see if it’s maybe something I can learn after all.
I’d also not thought too much about this before, but apparently being a web content writer is a thing. I mean, of course it is! But it’s just become obvious to me now. Often these positions require some HTML and CSS knowledge but are primarily about the writing. Many, many websites have horrible grammar and spelling and I know I can do better. Apostrophes do not belong in plurals, people! I’m going to keep an eye out for any such positions that I may be able to apply to but I’ll continue studying web development, of course.