<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>beginners Archives | Programming Zen</title>
	<atom:link href="https://programmingzen.com/tag/beginners/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmingzen.com/tag/beginners/</link>
	<description>Meditations on programming, startups, and technology</description>
	<lastBuildDate>Tue, 16 Jun 2020 21:46:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">1397766</site>	<item>
		<title>What to Study to Become a Web Developer</title>
		<link>https://programmingzen.com/what-to-study-to-become-a-web-developer/</link>
					<comments>https://programmingzen.com/what-to-study-to-become-a-web-developer/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Tue, 16 Jun 2020 21:41:44 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[beginners]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[how to become a programmer]]></category>
		<category><![CDATA[how to become a web developer]]></category>
		<category><![CDATA[how to get a developer job]]></category>
		<category><![CDATA[programming advice]]></category>
		<category><![CDATA[tech stack]]></category>
		<category><![CDATA[tips for young programmers]]></category>
		<category><![CDATA[what to study]]></category>
		<guid isPermaLink="false">https://programmingzen.com/?p=2603</guid>

					<description><![CDATA[<p>In this third article of my, How to Become a Web Developer and Get a Job guide, we&#x2019;ll discuss what to study to become a web developer. In the previous article on front-end vs back-end developers, I covered the existence of front-end and back-end technologies, which in turn have many options to choose from. Too many options, in fact. How do we go about choosing what to study? And what about all the other stuff web developers tend to know, such as the command line, Git, and other developer tools? When you are beginning in this field, not only you </p>
<p>The post <a href="https://programmingzen.com/what-to-study-to-become-a-web-developer/">What to Study to Become a Web Developer</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In this third article of my, <a href="https://programmingzen.com/how-to-become-a-web-developer-and-get-a-job/">How to Become a Web Developer and Get a Job</a> guide, we&#8217;ll discuss what to study to become a web developer.</p>



<p>In the previous article on <a href="https://programmingzen.com/front-end-vs-back-end-developer/">front-end vs back-end developers</a>, I covered the existence of front-end and back-end technologies, which in turn have many options to choose from.</p>



<p>Too many options, in fact. How do we go about choosing what to study? And what about all the other stuff web developers tend to know, such as the command line, Git, and other developer tools?</p>



<p>When you are beginning in this field, not only you do not know a wide range of things, you are likely also unaware of what you don&#8217;t yet know.</p>



<p>As such, my goal for this section of the guide is to give you a list of things you should get acquainted with, along with some rationale for why you&#8217;d opt for those versus other possible choices.</p>



<p>This list of what to study to become a web developer is necessarily incomplete (I don&#8217;t even list learning to debug), but fear not! You will pick up other skills and tools organically in the process of studying these key topics.</p>



<p>In the next article in the guide, we&#8217;ll discuss how to go about learning those needed elements as well.</p>



<h2 class="wp-block-heading">What to study for front-end development</h2>



<p>As far as the web is concerned, front-end means three main technologies:</p>



<ul class="wp-block-list"><li><strong>HTML</strong>: The structure of your web pages;</li><li><strong>CSS</strong>: The styling of your web pages;</li><li><strong>JavaScript</strong>: To make your web pages more useful and interactive.</li></ul>



<p>You need to become familiar with all three of these areas if you’re going to have much of a hope of getting job as a web developer.</p>



<p>If you don&#8217;t plan to become a front-end developer, you might get away with a superficial knowledge of CSS (and to some extent JavaScript). However, you should still have a fundamental understanding of both.</p>



<p>For CSS, you should become acquainted with both the <em>Flexbox model</em> and <em>Grid layout</em>. While these terms might not mean much to you yet, they will become familiar as soon as you take a course, read a book, or peruse documentation on CSS.</p>



<p>If you plan on becoming a front-end developer, then you need to be quite decent at CSS.</p>



<p>Learn HTML, CSS, and JavaScript regardless of what development role (e.g., front-end, back-end, or full-stack) you may ultimately end up taking on in your career.</p>



<p>In the beginning of your journey, simply focus on these three in their plain/vanilla form. For example, don&#8217;t try to go for fancy JavaScript frameworks like React and Vue right out of the gate.</p>



<p>The only frameworks you might want to explore at this stage are CSS ones like Bootstrap and TailwindCSS, and an old school JavaScript library (i.e., jQuery), to see what they have to offer over vanilla CSS and JavaScript.</p>



<p>What they don&#8217;t do is introduce a whole host of new and confusing concepts (like React does), which are best tackled once you have a decent mastery of the front-end trifecta (i.e., HTML, CSS, and JavaScript).</p>



<h2 class="wp-block-heading">What to study for back-end development</h2>



<p>After you’ve spent a couple of months grasping the fundamentals of HTML, CSS, and JavaScript, I&#8217;d recommend that you start exploring a back-end development language and framework.</p>



<p>You&#8217;ll quickly find that front-end alone limits the type of web applications you can build a fair bit. Want to permanently save and retrieve the data the user gave you? You need back-end tools.</p>



<p>Adding back-end development skills will allow you to create much more useful web applications, as well as to better understand the other side of the coin.</p>



<p>This is useful even if you decide to specialize in front-end development because you&#8217;ll most likely be working with back-end developers and interacting with their work from your front-end code.</p>



<p>So far there hasn&#8217;t been much controversy in this article. Just about everyone can agree that learning HTML, CSS, and JavaScript is a must. Some will fight me on my suggestion of putting off React or Vue until later (or think that looking into jQuery in 2020 is silly), but nothing as of yet has been truly controversial.</p>



<p>Sides are about to be drawn, however, as I proceed to tell you what to study for the back-end side of things. There are countless possible options out there. At least a dozen of which are squarely reasonable choices.</p>



<p>Some of the most worthwhile candidates include:</p>



<ul class="wp-block-list"><li><strong>Python and Django</strong></li><li><strong>JavaScript and Express.js</strong></li><li><strong>Ruby and Ruby on Rails</strong></li></ul>



<p>If you already know, or have a hunch, that you will focus on front-end development, I recommend using a JavaScript server-side framework like Express.js.</p>



<p>This will further solidify your JavaScript skills and will enable you to build complete web applications (and APIs that your front-end can then consume).</p>



<p>I&#8217;m personally not a huge fan of server-side JavaScript (or JavaScript in general), but if you know that you want to become a front-end developer you must become as skilled as you possibly can in JavaScript. It is, hands down, the number one skill that you’ll need to master in this field.</p>



<p>I would skip the JavaScript and Express.js stack if any of the followings apply to you:</p>



<ul class="wp-block-list"><li>You didn&#8217;t particularly enjoy JavaScript while learning it for front-end;</li><li>You are unsure whether front-end development is right for you;</li><li>CSS and JavaScript offended your sensibilities and you are now seeking refuge in back-end development where you&#8217;ll be less likely to work with either of these technologies;</li><li>You want to learn something new and a different programming language is likely to make your profile more appealing to employers.</li></ul>



<p>If that&#8217;s you, I recommend that you consider Python and its associated framework, Django.</p>



<p>Python is one of the most popular programming languages in the world and it is quite pleasant to work with. Nowadays, it is almost a given that most well-rounded programmers will know Python.</p>



<p>It&#8217;s also the ideal language to have at the ready, should you develop an interest in data science and machine learning down the line.</p>



<p>The most popular frameworks to build web applications in for Python are Flask and Django. Ideally, you&#8217;ll want to learn both, but to begin with, I would suggest you focus on Django.</p>



<p>Why Django? It&#8217;s highly productive which means that you&#8217;ll be able to create fancier web applications with less work, which can be quite motivating when you are starting out. It also ships with a lot of sensible conventions that will in turn teach you how to structure and how to think about the architecture of your web application.</p>



<p>Flask is excellent too and likely the better tool if one is focusing on building small apps and APIs. That said, it is best used once you have a better understanding of how web applications work.</p>



<p>What about Ruby and Ruby on Rails? They are also an excellent choice and my favorite among the options listed here. However, Ruby is not quite as popular as Python, and it is mostly used within the scope of web development.</p>



<p>With Python you get a very similar programming language, plus access to all the data science goodies that are not readily available in Ruby.</p>



<p>Should you decide to pick up Ruby and Ruby on Rails down the line, it will be quite easy coming from a Python and Django background.</p>



<p>As you go through this process, regardless of the language and framework you choose, you must become well acquainted with the <em>REST paradigm</em> which will teach you about <em>HTTP requests</em> and <em>responses</em>, <em>HTTP methods</em>, and <em>response codes</em>.</p>



<h2 class="wp-block-heading">What about databases?</h2>



<p>You&#8217;ll also need to become acquainted with databases. For the most part, you&#8217;ll have to master the fundamentals of:</p>



<ul class="wp-block-list"><li><strong>MongoDB</strong>: A document-based database;</li><li><strong>PostgreSQL</strong>: An SQL/relational database.</li></ul>



<p>Mongo is overused. However, it is common and easy enough to learn, so it can certainly be worth picking up. PostgreSQL, on the other hand, is fantastic and an obvious recommendation.</p>



<p>Once you have an SQL foundation in place, you can switch with relative ease to other relational databases, should a project or employer require it.</p>



<h2 class="wp-block-heading">Miscellaneous things</h2>



<p>The front-end and back-end stacks outlined above are enough to make you useful and capable of landing your first job in tech.</p>



<p>There are however several other skills which are taken for granted. If you are not too familiar with them, you&#8217;ll want to invest some time in learning these areas as well.</p>



<ul class="wp-block-list"><li><strong>Git and GitHub</strong>: to store, edit, keep track of changes, share, and release code.</li><li><strong>Basic Linux shell commands</strong>: think <code>ls</code>, <code>cat</code>, <code>echo</code>, <code>source</code>, <code>ps</code>,<code>top</code>, <code>grep</code>, <code>find</code>, <code>curl</code>, etc.</li><li><strong>A code editor</strong>: I recommend <em>Visual Studio Code</em> unless you already have a different favorite. Learn how to use it efficiently, including leveraging popular plugins. For example, plugins that enable you to autocomplete your code, <em>linters</em> to ensure that it follows idiomatic style and formatting, and more.</li><li><strong>Regular Expressions</strong>: quite complex but also handy both within your code and when searching/transforming text via the command line (or within your code editor).</li><li><strong>Web security</strong>: you should be able to prevent common security issues like <em>SQL injection</em>, <em>Cross-Site Scripting</em> (XSS), <em>Cross-Site Request Forgery</em> (CSRF), etc.</li></ul>



<p>I suspect you&#8217;ll pick up many of these skills automatically as you study the rest of the stuff mentioned earlier on.</p>



<p>Just make sure to supplement as needed so that you are not entirely unfamiliar with any of the concepts listed here.</p>



<h2 class="wp-block-heading">More advanced front-end and back-end skills</h2>



<p>Once you have all of these skills above under your belt, you might be ready to tackle more advanced areas.</p>



<p>If you decide to become a front-end developer, I suggest looking into:</p>



<ul class="wp-block-list"><li><strong>Accessibility</strong>;</li><li><strong>User Experience (UX)</strong> principles;</li><li><strong>SEO</strong> (Search Engine Optimization);</li><li>Building <strong>responsive web applications</strong> (web apps that scale to the user&#8217;s device resolution);</li><li><strong>Wireframing</strong> with <em>Figma</em> or <em>Adobe XD</em>;</li><li>Styling with <strong>Sass</strong>;</li><li><strong>Webpack</strong>;</li><li><strong>React/Redux</strong> or <strong>Vue/Vuex</strong>.</li></ul>



<p>If you decide to become a back-end or full-stack developer, I&#8217;d recommend exploring more in depth:</p>



<ul class="wp-block-list"><li><strong>Algorithms</strong>: learn more about traditional algorithms and data structures concepts often taught in computer science university courses, including the concept of Big O notation.</li><li><strong>SQL</strong>, going beyond the language by looking at more advanced features modern relational databases have to offer (triggers, stored procedures, etc).</li><li><strong>Flask</strong> (if you opted for Python) or <strong>Sinatra</strong> (if you opted for Ruby).</li><li><strong>GraphQL</strong>: go beyond REST and see what all the buzz is about.</li><li>Deployment and scaling with <strong>containers</strong> using tools like <em>Docker</em> and <em>Kubernetes</em>.</li></ul>



<p>Note that for all of the technologies I’ve mentioned here, this list is still not an exhaustive one by any means. This is by design, as it really doesn&#8217;t need to be all-encompassing. Most professional web developers have not mastered every entry on this list.</p>



<p>So, if you decide to become a front-end developer, mostly ignore the advanced back-end stuff, and focus on the front-end skills.</p>



<p>Conversely, if you decide to become a back-end developer, focus on the advanced back-end skills by studying, practicing, and building projects without worrying too much about the advanced front-end skills side of things.</p>



<p>You just need to become really good at the key components for the role you decide to take, while not being entirely unfamiliar with the rest of the entries on this list.</p>



<h2 class="wp-block-heading">What&#8217;s next?</h2>



<p>Now that you know what you should be studying, we need to address how to actually go about studying it.</p>



<p>Do you need a degree to become a web developer? Should you enroll in a development bootcamp? We&#8217;ll cover these questions and much more in the next article in this multi-part guide.</p>



<p>Stay tuned and don&#8217;t forget to subscribe, if you haven’t done so ready.</p>
<p>The post <a href="https://programmingzen.com/what-to-study-to-become-a-web-developer/">What to Study to Become a Web Developer</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/what-to-study-to-become-a-web-developer/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2603</post-id>	</item>
		<item>
		<title>Front-End vs Back-End Developer</title>
		<link>https://programmingzen.com/front-end-vs-back-end-developer/</link>
					<comments>https://programmingzen.com/front-end-vs-back-end-developer/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Mon, 25 May 2020 19:41:51 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[beginners]]></category>
		<category><![CDATA[front-end vs back-end]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[how to become a web developer]]></category>
		<category><![CDATA[how to get a developer job]]></category>
		<category><![CDATA[programming advice]]></category>
		<category><![CDATA[tips for young programmers]]></category>
		<guid isPermaLink="false">https://programmingzen.com/?p=2579</guid>

					<description><![CDATA[<p>This is the second article of my How to Become a Web Developer and Get a Job guide. Within it, we&#x2019;ll discuss what coding is, as well as the difference between being a front-end vs back-end developer. If you want to learn to code so that you can become a web developer, welcome. You&#x2019;re in the right place. Before we discuss what kind of web developer positions are available and what the differences between front-end, back-end, full-stack, and DevOps are, I&#x2019;m going to take the scenic route and start with what coding is. This is necessary because I make virtually </p>
<p>The post <a href="https://programmingzen.com/front-end-vs-back-end-developer/">Front-End vs Back-End Developer</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>This is the second article of my <a href="https://programmingzen.com/how-to-become-a-web-developer-and-get-a-job/">How to Become a Web Developer and Get a Job</a> guide. Within it, we&#8217;ll discuss what coding is, as well as the difference between being a front-end vs back-end developer.</p>



<p>If you want to learn to code so that you can become a web developer, welcome. You&#8217;re in the right place.</p>



<p>Before we discuss what kind of web developer positions are available and what the differences between front-end, back-end, full-stack, and DevOps are, I&#8217;m going to take the scenic route and start with what coding is.</p>



<p>This is necessary because I make virtually no assumptions about your existing knowledge. If you are an absolute beginner, this is the guide for you.</p>



<h2 class="wp-block-heading">What is coding?</h2>



<p>Coding is the act of writing code to program machines like computers and mobile devices. OK, what is code then? Code is the set of precise instructions we give to said machines to execute the actions we want them to take.</p>



<p>The instructions need to be precise because computers, unlike humans, cannot make a bunch of assumptions on the basis or prior experience.</p>



<p>If I asked you to draw a house, you&#8217;d probably start jotting down something reminiscent of what a 5 year old would draw. You&#8217;ll start with a box, add a pointy roof, a door, a window, etc. If you are really artistically inclined, you might draw a 3D version that looks nicer. In either case, you will be able to handle my generic, open-ended request and deliver something that satisfies it.</p>



<p>Generally speaking, the computer cannot assume what the house should look like, as you would. How thick should the lines be? What color (if any at all) should be used? How big should the house be? What style? And so on.</p>



<p>In short, a computer didn&#8217;t draw houses in kindergarten. Yes, it can draw amazingly intricate houses with fantastic degrees of detail, but you&#8217;ll need code that very precisely instructs it to do so.</p>



<p>Consider the calculator application that is installed by default on your computer.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="464" height="642" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/calculator.png?resize=464%2C642&#038;ssl=1" alt="Front-End vs Back-End Developer - Calculator example" class="wp-image-2585" title="The Calculator app on MacOS" srcset="https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/calculator.png?w=464&amp;ssl=1 464w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/calculator.png?resize=217%2C300&amp;ssl=1 217w" sizes="(max-width: 464px) 100vw, 464px" /><figcaption>The Calculator application on MacOS</figcaption></figure></div>



<p>A programmer wrote a bunch of code so that when you click on the Calculator icon, the computer launches the application on your screen, presenting you with a series of numbers and operators to choose from.</p>



<p>As you interact with the application, for example by pressing <code>6</code>, <code>x</code>, <code>7</code> and <code>=</code>, the computer, instructed by the programmer&#8217;s code, will know what to do. (Namely, multiplying the two numbers and displaying the result for you.)</p>



<h2 class="wp-block-heading">What&#8217;s the difference between a program and an application?</h2>



<p>Some computer programs do not have a visual user interface at all, in which case we do not call them applications. </p>



<p>That&#8217;s the main difference between a program and an application. They both require code, but only applications have some kind of visual user interface that the user can interact with.</p>



<p>The user interface (UI) doesn&#8217;t have to be a window within your desktop operating system (e.g., Windows or MacOS). It can be on your mobile device or even a web page that you access through a web browser like Chrome or Firefox.</p>



<h2 class="wp-block-heading">Different types of applications and developers</h2>



<p>An application that you access on your desktop computer is called… drum roll… a desktop application. One that you access on your mobile device (e.g., Apple or Android smartphone) is called a mobile application. And one that you access through a web browser? You guessed it, a web application.</p>



<p>It turns out that the type of code we must write to create these different types of applications is somewhat different depending on the type of application we are creating.</p>



<p>Many of the concepts are the same but the programming languages, libraries (essentially, prewritten code), tools, and problems you&#8217;ll face as a programmer will be different depending on which platform you are targeting.</p>



<p>This is why professional programmers will often specialize in one or maybe two of these types of application development. So, you can be a desktop developer (less common these days), a mobile developer, or a web developer. </p>



<p>Sometimes, you&#8217;ll hear the term &#8220;app developer&#8221; which is a synonym for a mobile developer, given that &#8220;app&#8221; is often used to specifically refer to mobile applications.</p>



<p>Some programmers specialize even further, and are just iOS developers or Android developers, depending on the type of mobile devices they target.</p>



<p>Since not all programs are applications, it&#8217;s worth noting that there are many other types of developers who don&#8217;t work on applications. </p>



<p>For example, those who work on the operating system itself, programs that facilitate networks of computers to communicate, or code that enables hardware components to communicate with each other.</p>



<h2 class="wp-block-heading">The Web won</h2>



<p>There are plenty of viable careers to be had in mobile and other types of development, however since the aim of this guide is to help you become a web developer, we are going to focus on this particular subset of the development landscape.</p>



<p>Twenty-five years ago, the majority of developers were desktop developers (or a specialized version, like a Windows developer).</p>



<p>Over the past two decades, the web exploded in popularity. So it might reassure you to know that today the overwhelming majority of programmers are web developers.</p>



<p>The web is certainly not going anywhere, so the skills you acquire will serve you well for a long time to come.</p>



<h2 class="wp-block-heading">Static vs dynamic pages</h2>



<p>Alright, let&#8217;s focus on web applications. What are they and how do they work?</p>



<p>Let&#8217;s start with a simple web page, rather than a full-blown web application. When you visit <a rel="noreferrer noopener" href="https://antoniocangiano.com/" target="_blank">https://antoniocangiano.com</a>, my homepage, you are visiting a very simple static page.</p>



<p>My homepage is a so-called &#8220;static page&#8221; because it doesn&#8217;t dynamically change. For example, it doesn&#8217;t pull the data from a database like when you search for a product on Amazon.</p>



<p>It&#8217;s just a static document containing some text, images, and links organized in a somewhat logical and pleasing (if minimalist) manner.</p>



<p>When the web first come about in the early 90s, that&#8217;s all it was for the most part. A bunch of static pages linking to each other.</p>



<p>When server-side dynamic web pages became common, it transformed the web. We could now, among other things, collect information from the user, store it in a database, and dynamically display to the user content on the basis of their request.</p>



<p>You could even customize the page that was rendered to the user on the basis of who was logged in, for example.</p>



<p>Over time, these capabilities evolved to a point where web applications can deliver rich desktop-like interfaces and user experience.</p>



<p>Technically, this blog you are reading is a web application written in HTML, CSS, JavaScript, and PHP. It allows me to log in as an administrator and write blog posts. It allows you to comment, search for posts, subscribe to my <a href="https://programmingzen.com/feed" target="_blank" rel="noreferrer noopener">RSS feed</a>, see related content, and much more.</p>



<p>Web applications can be as simple as a plain todo list or as complex as the online version of Microsoft Excel or an elaborate video game.</p>



<h2 class="wp-block-heading">How does requesting a static page work</h2>



<p>When you type <code>https://antoniocangiano.com/</code> in your browser&#8217;s address bar and press enter, the following steps take place:</p>



<ul class="wp-block-list"><li>A DNS (Domain Name System) server is called to translate the hostname <code>antoniocangiano.com</code> to an IP (Internet Protocol) address where the site is actually hosted. You can think of DNS as white pages for the internet, where instead of people&#8217;s names being mapped to their phone numbers, you get website names mapped to their servers&#8217; IP addresses. Knowing the IP address of the server hosting the site will allow your browser to send the request to the right server among the millions of servers available on the internet.</li><li>The request you made tells the server that you want to get the page/information available at <code>/</code>. The server will grab the <code>index.html</code> file for my site and send it back to your browser as a response. (On a static site, <code>/</code> will typically render <code>index.html</code> just like <code>/about</code> would render the content of <code>about.html</code>. This is by convention and not always the case.)</li><li>Within that HTML file, I also reference a CSS file on the server, some images, and a little bit of client-side JavaScript. Your browser will request all of these elements from the server, and ultimately render the HTML page for you to see.</li></ul>



<p>(This is a simplification, but conceptually these are the major steps.)</p>



<p>There is no back-end development going on here. HTML, CSS, and client-side JavaScript are all front-end development technologies.</p>



<p>HTML provides the structure and content of the page. CSS determines the style of the page (font size, spacing, padding, colors, etc.). And JavaScript determines some behaviors of the page as you interact with it.</p>



<p>In the case of my homepage, when you move your mouse over the icons at the top, you&#8217;ll see a little tooltip pop up appear. That&#8217;s a bit of JavaScript in action.</p>



<p>I clarified that it&#8217;s client-side JavaScript because nowadays there is also server-side JavaScript which is indeed in the scope of back-end development. When I say &#8220;client-side&#8221;, I mean JavaScript that is executed by your browser.</p>



<h2 class="wp-block-heading">How does requesting a dynamic page work</h2>



<p>Web applications are collections of dynamic pages (and sometimes dynamic and static pages). Requesting a dynamic page is conceptually similar to requesting a static page, but behind the scenes there are a few more steps taking place.</p>



<p>For example, let&#8217;s say that you enter &#8220;iPad&#8221; in the search box of this site and press enter. You&#8217;ll notice in the address bar that you&#8217;ve made a request for <code>https://programmingzen.com/?s=ipad</code>.</p>



<p>There is no <code>ipad.html</code> file on the server, given that you could have typed anything into the search field.</p>



<p>(Ignore caching for the sake of this simplification, if you are already familiar with the concept.)</p>



<p>So behind the scenes, instead of locating the static file and issuing it in response for the browser to render, there are two extra steps:</p>



<ol class="wp-block-list"><li>The web server understands that you want posts related to the iPad. So the dynamic page will send a request to a database server that contains all my posts. Using a language called SQL (Structured Query Language), it will ask for a list of posts containing the word &#8220;iPad&#8221;.</li><li>With that information available, the web server will execute the code in the dynamic page which will use the list of posts to formulate a response which includes a series of neatly arranged iPad-related posts.</li></ol>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?resize=613%2C384&#038;ssl=1" alt="The iPad results for my blog" class="wp-image-2597" width="613" height="384" title="The iPad results for my blog" srcset="https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?w=2450&amp;ssl=1 2450w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?resize=300%2C188&amp;ssl=1 300w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?resize=1024%2C642&amp;ssl=1 1024w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?resize=768%2C481&amp;ssl=1 768w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?resize=1536%2C963&amp;ssl=1 1536w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?resize=2048%2C1284&amp;ssl=1 2048w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2020/05/ipad-results-1.png?w=2120&amp;ssl=1 2120w" sizes="(max-width: 613px) 100vw, 613px" /><figcaption>The page dynamically generated from my &#8220;iPad&#8221; search</figcaption></figure></div>



<p>Ultimately, what&#8217;s sent to your browser is still a bunch of HTML, CSS, and JavaScript. However, it didn&#8217;t come from a file on your server. It was dynamically generated based on information stored in the database.</p>



<p>Imagine for a moment that some posts on my site were available only to subscribers. The code of the dynamic page would need to check whether the person is logged in or not, whether they are a subscriber, and then alter the response accordingly.</p>



<p>If the user is a subscriber, include subscriber-only iPad posts in the list, if they are not, exclude those posts and just return the free ones available to everyone.</p>



<p>As you can imagine, the ability to dynamically generate the response depending on certain conditions is quite powerful and is the basis of how web applications work.</p>



<h2 class="wp-block-heading">Front-End vs Back-End technologies</h2>



<p>In terms of technology, what did we add to the HTML, CSS, and JavaScript front-end stack? We added code to the dynamic pages which can then make calls to a database and generate a customized response. PHP and SQL code in my case.</p>



<p>This code can be written in a variety of programming languages, however. Some popular examples are Python, Ruby, Java, Elixir, and even server-side JavaScript.</p>



<p>We&#8217;ll discuss <a href="https://programmingzen.com/what-to-study-to-become-a-web-developer/">why you&#8217;d use one language over another or which to choose</a> to land a job, in the next installment of this guide. For now, know that back-end development will require you to be familiar with a server-side programming language.</p>



<p>You&#8217;ll also need to know SQL and be familiar with how databases work.</p>



<p>Truth be told, back-end developers will need to know quite a bit more than just another programming language and databases.</p>



<p>For example, they&#8217;ll typically leverage a web framework like Ruby on Rails, Django, Flask, or Express.js to be more productive and write fewer lines of code to implement the features needed by the web application.</p>



<p>So you&#8217;ll also need to develop familiarity with whichever framework is most popular for your language of choice.</p>



<p>A lot of front-end developers are not writing plain JavaScript either. They too have to worry about frameworks and libraries, typically for JavaScript (and even CSS). Popular JavaScript options are React, Vue, Angular, and Ember.js.</p>



<p>Front-end developers will also need to worry about accessibility and providing a good user experience (UX) for the end-user. Huge topics that have dedicated specialists in their own right.</p>



<p>We&#8217;ll cover what you need to study in the <a href="https://programmingzen.com/what-to-study-to-become-a-web-developer/">next article</a> of this guide.</p>



<h2 class="wp-block-heading">Front-End vs Back-End developers</h2>



<p>While it is good to have an understanding of both front-end and back-end, most web developers end up specializing in either front-end or back-end.</p>



<p>Historically, front-end development had a certain stigma. It was perceived as easier. These days, I don&#8217;t believe this is a valid stance anymore.</p>



<p>The capability of web interfaces has grown dramatically over the years and so did the complexity of technologies leveraged to build such interactive and rich user interfaces.</p>



<p>It&#8217;s worth noting that back-end developers&#8217; salaries still tend to be higher than front-end developers&#8217; ones. But this might be at least in part because the majority of beginner web developers start with front-end technologies.</p>



<p>After all, you can&#8217;t be a back-end developer without knowing the fundamentals of HTML, CSS, and JavaScript, but you could in theory be a good front-end developer without knowing server-side languages and SQL.</p>



<p>Of course, exposure to both sides of the Web development line is always beneficial.</p>



<h2 class="wp-block-heading">Full-Stack developer</h2>



<p>Full-Stack developers are unicorns born in an enchanted forest located where the Hanson and the Eich rivers meet.</p>



<p>More seriously, it&#8217;s rare for someone to be amazing at both front-end and back-end development, but there are plenty of developers who are competent at both.</p>



<p>Larger companies tend to prefer specialized people, because they have the resources to hire larger teams that will include both front-end and back-end developers.</p>



<p>Startups and other smaller businesses might only be able to have one or two developers on hand, and therefore might find a full-stack developer who can build the entire web application to be a more practical option.</p>



<h2 class="wp-block-heading">DevOps specialists</h2>



<p>Writing web applications is only one part of the equation. You then need to deploy them somewhere on the internet so that they&#8217;re available to the public. (Pushing code to production, to use common lingo.)</p>



<p>You also need strategies to keep them running smoothly and handle updates and new releases of the code you write.</p>



<p>In smaller operations, this often falls on the web developer&#8217;s shoulders. Over the years, however, the role of <a rel="noreferrer noopener" href="https://en.wikipedia.org/wiki/DevOps" target="_blank">DevOps</a> engineer became its own profession.</p>



<p>Today, larger organizations will hire DevOps specialists/engineers to work alongside developers and system operators/administrations to ensure the best deployment practices.</p>



<p>As you work on becoming a web developer, you&#8217;ll inevitably pick up some of the skills possessed by DevOps. However, you don&#8217;t need to become a DevOps expert, unless you discover that it&#8217;s what you enjoy the most and decide to pursue that as your career.</p>



<h2 class="wp-block-heading">Which one should you choose?</h2>



<p>It&#8217;s way too early for you to commit to becoming a front-end, back-end, or full-stack developer.</p>



<p>The best you can do is learn the fundamentals and then decide on the basis of what you enjoy the most, what comes more naturally to you, and ultimately what you tend to be good at.</p>



<p>Some people might struggle with grokking databases but are capable of creating wonderful user interfaces. Others might be very good at solving algorithmic problems but fail miserably at putting together a user-friendly UI.</p>



<p>You&#8217;ll find out where you fit very soon.</p>



<h2 class="wp-block-heading">What&#8217;s next?</h2>



<p>In the next article of this <a href="https://programmingzen.com/how-to-become-a-web-developer-and-get-a-job/">How to Become a Web Developer and Get a Job</a> guide, we&#8217;ll cover the <a href="https://programmingzen.com/what-to-study-to-become-a-web-developer/">technology stacks I recommend</a> to maximize your chances of becoming a professional web developer and landing a job.</p>



<p>I&#8217;ll also discuss which languages, technologies, and tools you need to study to break into this industry. </p>



<p>That master list can act as a road map of skills you must acquire in the upcoming months to become a web developer.</p>
<p>The post <a href="https://programmingzen.com/front-end-vs-back-end-developer/">Front-End vs Back-End Developer</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/front-end-vs-back-end-developer/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2579</post-id>	</item>
		<item>
		<title>Learn New Programming Languages with Project Euler</title>
		<link>https://programmingzen.com/learn-new-programming-languages-with-project-euler/</link>
					<comments>https://programmingzen.com/learn-new-programming-languages-with-project-euler/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Tue, 02 Dec 2014 16:09:05 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[beginners]]></category>
		<category><![CDATA[exercises]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[project-euler]]></category>
		<guid isPermaLink="false">http://programmingzen.com/?p=1573</guid>

					<description><![CDATA[<p>Lately I&#x2019;ve been thinking a lot about beginners and the very understandable struggle to grasp programming that many of them face. This post is mostly aimed at those who currently find themselves in this position. When it comes to creating, there is no substitute for hands-on experience and the same rings true for programming as well. If you can spend three months reading a 1,000 page reference book on a given programming language, you&#x2019;ll almost certainly walk away with some theoretical knowledge. Useful, but not very practical on its own. You&#x2019;ll get the big picture, no doubt, but you won&#x2019;t </p>
<p>The post <a href="https://programmingzen.com/learn-new-programming-languages-with-project-euler/">Learn New Programming Languages with Project Euler</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Lately I’ve been thinking a lot about beginners and the very understandable struggle to grasp programming that many of them face. This post is mostly aimed at those who currently find themselves in this position.</p>
<p>When it comes to creating, there is no substitute for hands-on experience and the same rings true for programming as well.</p>
<p>If you can spend three months reading a 1,000 page reference book on a given programming language, you’ll almost certainly walk away with some theoretical knowledge. Useful, but not very practical on its own. You’ll get the big picture, no doubt, but you won’t be productive or have much confidence in your newfound knowledge until you actually start writing code.</p>
<p>To me this is akin to reading a large DYI book cover to cover. I won’t be an expert on mending a fence, turning a table leg on lathe, or putting up storm drains simply because I know how such things are done in theory. It’s possible, nay, likely that when the first problem arises, I won’t know how to handle it, save for employing common sense. I’ll have to figure things out, try, make mistakes, and (hopefully) ultimately fix them. It is in this struggle that real skill is developed, honed, and ultimately mastered.</p>
<p>For that reason, I’m a huge fan of seeing beginners get their hands dirty. To this day even, when I’m learning a new programming language or framework, I like to solve practical problems as a way to quickly get acquainted with the ins and outs of said language.</p>
<p>Being passionate about mathematics, my go-to place when I’m learning a new programming language is <a href="https://projecteuler.net">Project Euler</a>. <a id="fnref:1" class="footnote" title="see footnote" href="#fn:1">[1]</a></p>
<div style="text-align: center;">
<p><div id="attachment_1574" style="width: 310px" class="wp-caption aligncenter"><a href="https://i0.wp.com/programmingzen.com/wp-content/uploads/2014/12/project-euler.png?ssl=1" target="_blank"><img data-recalc-dims="1" decoding="async" aria-describedby="caption-attachment-1574" class="wp-image-1574 size-medium" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2014/12/project-euler-300x257.png?resize=300%2C257&#038;ssl=1" alt="Project Euler" width="300" height="257" srcset="https://i0.wp.com/programmingzen.com/wp-content/uploads/2014/12/project-euler.png?resize=300%2C257&amp;ssl=1 300w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2014/12/project-euler.png?resize=1024%2C877&amp;ssl=1 1024w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2014/12/project-euler.png?w=1066&amp;ssl=1 1066w" sizes="(max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1574" class="wp-caption-text">Click for a larger image</p></div></p>
</div>
<p>I like the approach that it presents for for several reasons:</p>
<ul>
<li>The self-contained problems go from extremely obvious to fairly hard. The progression is gradual.</li>
<li>In the process of solving problems, you will, out of necessity, end up learning about numbers, string manipulation, files, conditionals, functions, classes, etc. All of the basics that you should master in order to get started on real projects will be exercised to some degree.</li>
<li>The emphasis is on getting the result, but many problems will not be solvable with naive algorithms, particularly when using scripting languages like Ruby and Python. This is an opportunity to learn more about algorithms (if you are a beginner) or more about optimizing code in a given language (if you are learning that language, but are otherwise an experienced programmer).</li>
<li>You can look at other people’s solutions, which are often posted in a forum that’s accessible to those who have solved the problem themselves. You’ll learn about algorithms, more elegant ways to accomplish the same result, and even discover new languages you haven’t heard of before.</li>
<li>There is an element of gamification. It’s fun to see yourself go up in the leaderboard as you solve more problems.</li>
</ul>
<p>The only downside is that it’s quite math heavy and that can scare away some beginners. If this doesn’t put you off tough, I highly recommend giving it a shot. <a id="fnref:2" class="footnote" title="see footnote" href="#fn:2">[2]</a> Be forewarned though, it can be rather addictive. 🙂</p>
<p><strong>UPDATE</strong>: Follow up post about alternative<a href="https://programmingzen.com/2014/12/04/10-programming-challenges-sites/"> programming challenges sites</a>.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">They got hacked at some point, so I no longer have my existing account. I created a brand new one while writing this post. <a class="reversefootnote" style="text-decoration: none;" title="return to article" href="#fnref:1">^</a></li>
<li id="fn:2">Of course, Project Euler isn’t exactly unknown at this point. So if you’re an existing programmer, your reply to this might be “duh!”. <a class="reversefootnote" style="text-decoration: none;" title="return to article" href="#fnref:2">^</a></li>
</ol>
</div>
<p>The post <a href="https://programmingzen.com/learn-new-programming-languages-with-project-euler/">Learn New Programming Languages with Project Euler</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/learn-new-programming-languages-with-project-euler/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1573</post-id>	</item>
	</channel>
</rss>
