<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>Being a Backend Developer Is a Thankless Job | Infinum</title>
		<atom:link href="https://infinum.com/blog/backend-development-job/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/backend-development-job/</link>
		<description>Building digital products</description>
		<lastBuildDate>Wed, 29 Apr 2026 14:21:05 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>19095https://infinum.com/uploads/2022/02/backend-development-job-0.webp</url>
				</image>
				<title>Being a Backend Developer Is a Thankless Job</title>
				<link>https://infinum.com/blog/backend-development-job/</link>
				<pubDate>Sat, 05 Feb 2022 12:50:00 +0000</pubDate>
				<dc:creator>Stjepan Hadjić</dc:creator>
				<guid isPermaLink="false">https://infinum.com/blog/backend-development-job/</guid>
				<description>
					<![CDATA[<p>Backend development is challenging, underappreciated, and an awesome job.</p>
<p>The post <a href="https://infinum.com/blog/backend-development-job/">Being a Backend Developer Is a Thankless Job</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-199"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	Have you ever noticed how there are no awards for <a href="https://infinum.com/backend-development-service/">backend development</a>? Sure, there are “web” awards, but they mostly focus on design and the visual aspects (e.g. <a href="https://www.awwwards.com/">Awwwards</a>, the <a href="https://www.webbyawards.com/">Webby Awards</a>). Mobile has many awards such as the <a href="https://www.mobileindustryawards.com/">Mobile Industry Awards</a>, even HR receives awards (the <a href="https://awards.humanresourcesonline.net/hr-excellence-awards-id/">HR Excellence Awards</a>).</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	No awards for backend, though. It’s as if the world thinks that what we do is easy and we don’t need any special knowledge or skills to write <a href="https://infinum.com/enterprise-platforms/">backend applications</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	It is a job that nobody notices when it’s done right, but when it’s not, everything crumbles. Sort of like the Night Watch in Game of Thrones. If you are interested in pursuing this not very glamorous, but badass role, read on to find out what it entails.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-102">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-103'
	>
	Programming language</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-105">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-106'
	>
	There are a multitude of programming languages available for backend development. Most of them have more than one framework for building a <a href="https://infinum.com/mobile-web-apps/">web application</a>. From Ruby’s Ruby on Rails and Python’s Django to C#’s ASP.NET and Java’s Spring, the list goes on and on. Sorry if I didn’t mention your favorite framework, this of course barely scratches the surface.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-108">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-109'
	>
	If you’re only starting out, it’s best to choose a programming language you are most familiar with because all frameworks work in a similar fashion, some with more and some with less magic in them. However, they all have one thing in common – they have to work within the confines of the web’s request/response infrastructure.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-111">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-112'
	>
	Database</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-114">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-115'
	>
	The state of your application will need to be stored for long-term storage and retrieval. For that, you will need some kind of a database. You can use a relational database like <a href="https://www.mysql.com/">MySql</a> or <a href="https://www.postgresql.org/">Postgresql</a> or a NOSQL like <a href="https://www.mongodb.com/">MongoDB</a> or <a href="https://redis.io/">Redis</a>, depending on the application’s needs.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-119"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-117">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-118'
	>
	In my experience, we opt for a relational database 90 percent of the time because we end up needing the relational connections.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-122"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-120">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-121'
	>
	It’s possible to use other types of databases, too, such as the Graph database or the database for event sourcing.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-125"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-123">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-124'
	>
	Architecture</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-128"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-126">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-127'
	>
	With the basic tools for building a web application covered, you need to figure out what kind of architecture you are going to use. The two currently prevailing architectures are <a href="https://en.wikipedia.org/wiki/Monolithic_application">Monolithic</a> and <a href="https://en.wikipedia.org/wiki/Microservices">Microservices</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-129">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-130'
	>
	In a monolithic architecture, all the application’s functionality is coded in one big repository. Whenever you make a change you can potentially bring down the whole application, but the changes themselves are easier to make.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-132">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-133'
	>
	On the other hand, a microservices application is broken down into multiple smaller services that (should) work independently of one another. Changes in one service won’t affect other services, but keeping them all in sync becomes a problem once they start to stack up.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-135">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-136'
	>
	Response schema</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-140"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-138">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-139'
	>
	At some point, your application will need to respond to requests coming from the world wide web. You need to decide how it will respond, with an outdated <a href="https://en.wikipedia.org/wiki/XML">XML</a> or a <a href="https://www.json.org/json-en.html">JSON</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-143"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-141">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-142'
	>
	When you use JSON for your response schema, you will need to structure it so that all the responses follow the same structure. Whether you choose <a href="https://graphql.org/">GraphQL</a>, <a href="https://jsonapi.org/">JSON:API spec</a> or another schema, is completely up to you. There is no correct answer here as long as you respond with JSON. It might be smart to learn what a <a href="https://json-schema.org/">json schema</a> is, too.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-146"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-144">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-145'
	>
	Deploy</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-149"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-147">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-148'
	>
	Since you want your application to be accessible to the whole Internet, you need to deploy it somewhere. There are plenty of options, from buying your own <a href="https://en.wikipedia.org/wiki/Barebone_computer">barebone machine</a> you can customize and take care of, through paid services like <a href="https://aws.amazon.com/">AWS</a> or <a href="https://www.digitalocean.com/">Digital Ocean</a>, which maintain the hardware for you, to SaaS services like <a href="https://www.heroku.com/">Heroku</a> where you can deploy an application in one command line.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-152"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-150">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-151'
	>
	I should probably note that you will also need to learn about <a href="https://kubernetes.io/">Kubernetes</a> and <a href="https://www.docker.com/">Docker</a> if you want your application to scale well. However, we’ll leave these for now as they’re a topic for a separate blog post.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-155"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-153">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-154'
	>
	Admin Dashboard</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-158"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-156">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-157'
	>
	An admin dashboard is a good way for you to create and edit your content. To build one, though, you will need to learn some frontend languages – HTML, CSS and some Javascript. Fortunately, there are complete frameworks like <a href="https://getbootstrap.com/">Bootstrap</a> that will help you build the pages, but you still need to understand how they work in harmony.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-161"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-159">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-160'
	>
	Background jobs</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-164"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-162">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-163'
	>
	At one point, some of the requests will just take too long and users will start complaining. For example, those where you resize uploaded images or export a portion of your data. These types of requests can be migrated to background jobs so that they exit early. Users don’t have to wait for a response and the application responds asynchronously.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-167"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-165">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-166'
	>
	You will need to learn about <a href="https://www.rabbitmq.com/">queues</a> and <a href="https://aws.amazon.com/lambda/">lambdas</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-170"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-168">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-169'
	>
	Emails should also be sent in the background, but designing them is a whole other <a href="https://www.caniemail.com/">beast to master</a>. I recommend just going with the simplest design you can think of.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-173"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-171">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-172'
	>
	Observability</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-176"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-174">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-175'
	>
	You want your application to be available all the time. To achieve this, you need to learn about metrics and how to read graphs to figure out which part of your application is slow. Reading application logs is a science in itself, but yet another one you need to tackle. You will also need to learn how to set up alerts when your application goes offline so you can quickly restart it.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-179"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-177">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-178'
	>
	More difficulties?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-182"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-180">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-181'
	>
	The challenges you’ll face on your backend journey don’t end here. You might find yourself working with third party API’s. I can’t begin to explain my frustration with those. Responding with XML, responding with the wrong HTTP status codes, or just plain not working as the documentation states, it’s just always bad.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-185"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-183">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-184'
	>
	Next, there is this pressure of <a href="https://www.itilnews.com/index.php?pagename=ITIL_Availability_Percentage_and_what_the_percentages_actually_mean_in_reality">achieving 99.999% availability</a>, which is nearly impossible in practice.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-188"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-186">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-187'
	>
	Holy s%!&amp;, is there an upside?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-191"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-189">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-190'
	>
	It’s difficult to build a backend “portfolio” because backend is not “showy” or “pretty”. Backend applications don’t win awards. Still, I wouldn’t give up backend development for anything.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-194"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-192">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-193'
	>
	First, it’s so much easier to test backend applications than Javascript or mobile apps. Next, you absolutely don’t care or have to worry about what browser the end user is using, and finally, you don’t need to know the latest and “best ever” javascript framework that seems to come out every three months. You also don’t need to make fun of Javascript, that’s purely optional.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-197"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-195">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-196'
	>
	<a href="https://infinum.com/backend-development-service/">Backend is the backbone of the web</a>. The sword in the darkness. Give your backend developer friend a high five when you see them.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/backend-development-job/">Being a Backend Developer Is a Thankless Job</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>