<?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>learning Archives | Programming Zen</title>
	<atom:link href="https://programmingzen.com/tag/learning/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmingzen.com/tag/learning/</link>
	<description>Meditations on programming, startups, and technology</description>
	<lastBuildDate>Tue, 31 May 2016 09:54:15 +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>Tip #4 for Young Programmers: Get Familiar with the Command Line</title>
		<link>https://programmingzen.com/tip-4-for-young-programmers/</link>
					<comments>https://programmingzen.com/tip-4-for-young-programmers/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Tue, 31 May 2016 14:00:47 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[how to become a programmer]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[programming advice]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tips for young programmers]]></category>
		<guid isPermaLink="false">http://programmingzen.com/?p=1671</guid>

					<description><![CDATA[<p>Back in my day, and I&#x2019;m not that old, programmers&#xA0;were a subset of people who were &#x201C;really good with computers&#x201D;. It would be hard to find a programmer who didn&#x2019;t know how to use the operating system of their choosing far beyond end user level. These days things are a little different. Now we&#x2019;re encouraging everyone to code and become a programmer, so a lot of newcomers no longer have many a sleepless night fighting with, say, SuSE CDs, under their belts. As a result, you run into people who can be somewhat competent within a given development environment, who </p>
<p>The post <a href="https://programmingzen.com/tip-4-for-young-programmers/">Tip #4 for Young Programmers: Get Familiar with the Command Line</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img data-recalc-dims="1" decoding="async" class="alignright size-thumbnail wp-image-1672" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/iterm.png?resize=150%2C150&#038;ssl=1" alt="iTerm" width="150" height="150" srcset="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/iterm.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/iterm.png?resize=200%2C200&amp;ssl=1 200w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/iterm.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/iterm.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="(max-width: 150px) 100vw, 150px" />Back in my day, and I’m not that old, programmers were a subset of people who were “really good with computers”. It would be hard to find a programmer who didn’t know how to use the operating system of their choosing far beyond end user level.</p>
<p>These days things are a little different. Now we’re encouraging everyone to code and become a programmer, so a lot of newcomers no longer have many a sleepless night fighting with, say, SuSE CDs, under their belts.</p>
<p>As a result, you run into people who can be somewhat competent within a given development environment, who don’t know how to create a symbolic link or tail a log.</p>
<p>This is not said to disparage newcomers. On the contrary, it’s quite commendable how quickly many young programmers are now able to learn a whole stack of technologies in order to create applications.</p>
<p>It is, however, an impediment to their ability to become productive and successful programmers.</p>
<p>So my advice today is to break free of that limitation by learning the command line. You don’t need to become a wizard, but, as usual, you should get acquainted enough with it that you know how to use the command line to accomplish tasks that are simply not exposed in GUI interfaces.</p>
<p>I’m specifically talking about the Unix-based command line, such as Bash. Technically it can be used on Windows as well, but realistically hardcore Windows programmers might find learning the Windows Powershell to be more useful.</p>
<p>Where to start? There are countless tutorials and books on the subject. I personally recommend Michael Hartl’s <a href="https://programmingzen.com/learnenoughshell">learn enough command line tutorial</a>, as it’s specifically aimed at newer developers.</p>
<p>The post <a href="https://programmingzen.com/tip-4-for-young-programmers/">Tip #4 for Young Programmers: Get Familiar with the Command Line</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/tip-4-for-young-programmers/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1671</post-id>	</item>
		<item>
		<title>Tip #3 for Young Developers: Master an Editor</title>
		<link>https://programmingzen.com/tip-3-for-young-developers/</link>
					<comments>https://programmingzen.com/tip-3-for-young-developers/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Tue, 10 May 2016 14:00:10 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[how to become a programmer]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming advice]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tips for young programmers]]></category>
		<category><![CDATA[vim]]></category>
		<guid isPermaLink="false">http://programmingzen.com/?p=1653</guid>

					<description><![CDATA[<p>As a developer, you&#x2019;ll spend a lot of your time writing code. Less than you&#x2019;d think, as we&#x2019;ll see in future tips in the series, but still thousands of hours. It pays dividends to master your code editor. A powerful editor, properly used, will provide a myriad of benefits. Benefits of a code editor The following incomplete list will give you an idea of some of the ways in which an editor can serve you: Speed up the process of writing code by autocompleting parts of the code you write. Highlight and indent your code for readability. Simplify the process </p>
<p>The post <a href="https://programmingzen.com/tip-3-for-young-developers/">Tip #3 for Young Developers: Master an Editor</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>As a developer, you’ll spend a lot of your time writing code. Less than you’d think, as we’ll see in future tips in the series, but still thousands of hours.</p>
<p>It pays dividends to master your code editor. A powerful editor, properly used, will provide a myriad of benefits.</p>
<h3 id="benefitsofacodeeditor">Benefits of a code editor</h3>
<p>The following incomplete list will give you an idea of some of the ways in which an editor can serve you:</p>
<ul>
<li>Speed up the process of writing code by autocompleting parts of the code you write.</li>
<li>Highlight and indent your code for readability.</li>
<li>Simplify the process of refactoring code (e.g., consistently change the name of a variable across your program).</li>
<li>Point out obvious typos.</li>
<li>Easily find code within your project (e.g., through finders or through the ability to jump to definitions).</li>
<li>En mass manipulation of text and code, without having to manually perform changes lines per line (e.g., replacing strings, commenting out large sections of code, etc).</li>
<li>Execute code directly without having to step out of the current window.</li>
<li>Folding your code, so that you can focus on the current method or class, and ignore the rest of your code base.</li>
<li>Visually identify files that have changes from your <a href="/2016/05/03/tip-2-for-young-programmers/">git repo</a>.</li>
</ul>
<p>Honestly, this isn’t even scratching the surface. Just take my word for it, being well acquainted with your editor of choice will eliminate a world of frustration from your coding experience.</p>
<h3 id="choosingaprogrammingeditor">Choosing a programming editor</h3>
<p><img data-recalc-dims="1" fetchpriority="high" decoding="async" class="alignright size-full wp-image-1654" style="float: right;" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/atom-editor.png?resize=256%2C256&#038;ssl=1" alt="Github's Atom editor" width="256" height="256" srcset="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/atom-editor.png?w=256&amp;ssl=1 256w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/atom-editor.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/atom-editor.png?resize=200%2C200&amp;ssl=1 200w" sizes="(max-width: 256px) 100vw, 256px" />A natural follow-up question to the previous paragraph would be, “Which programming editor should I use?”. Ask ten programmers and you’ll get at least five different answers. It’s a highly personal choice and people get religious about their editor of choice.</p>
<p>I’m going to share my opinion and you can then find out for yourself what works best for you.</p>
<p>I would divide most editors into five categories:</p>
<ol>
<li>Shell-based text editors. These are historic text editors that include such offerings as such as Vi/Vim and Emacs. <a id="fnref:1" class="footnote" title="see footnote" href="#fn:1">[1]</a> They are extremely powerful and customizable but come at the expense of a high learning curve. <a id="fnref:2" class="footnote" title="see footnote" href="#fn:2">[2]</a></li>
<li>WYSIWYG text editors. Examples of this type of text editor are Notepad++, Atom, and Sublime Text. Much less of a learning curve than something like Vim, but still quite powerful.</li>
<li>Integrated Development Environments (IDE) that are specific to a particular <a href="/2016/04/26/tip-1-for-young-programmers/">development stack</a>. Some will argue that these are not code editors, but they certainly include one, among a whole host of other features, often including a way to visually design your application. Examples of IDEs are Android Studio, XCode (for iOS and Mac OS X apps), and Visual Studio (for .NET applications).</li>
<li>Niche specific editors. For example <a href="https://panic.com/coda/">Coda</a> for front end web design.</li>
<li>Cloud editors that enable you to develop directly from your browser. One example of this sort of editor and development environment is <a href="https://c9.io/">Cloud9</a>.</li>
</ol>
<p>Any editor will do (well, don’t use Microsoft Word), but the choice will be very dependent on the kind of development you intend to do.</p>
<p>For example, if you plan to develop for the web:</p>
<ul>
<li>Learn the basics of Vim or Emacs for when you are remotely shelled into a Linux / BSD server.</li>
<li>Master Atom or Sublime Text for your main development.</li>
</ul>
<p>Conversely, if you plan to develop mobile apps:</p>
<ul>
<li>Learn the basics of Atom or Sublime Text for incidental file editing.</li>
<li>Master your app platform IDE (e.g., Android Studio, XCode, Xamarin).</li>
</ul>
<p>In general, I would recommend that you learn the basics of Vim so that you can quickly change files when connected to a remote server via the shell. <a id="fnref:3" class="footnote" title="see footnote" href="#fn:3">[3]</a></p>
<p>Vim or one of its variants is almost always installed on Linux/Unix servers already or can be easily installed if you have admin rights.</p>
<p>If you love it enough to master it, you might even want to stick with it as your main code editor. Many developers do.</p>
<p>Regardless of what you choose or do, spend the time to become proficient in the tool you decide to use to edit your code (including reading a book on the subject if your editor or IDE is quite advanced).</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">GUI versions of these editors have been developed. Generally speaking, they don’t make the editors all that much easier to learn. <a class="reversefootnote" title="return to article" href="#fnref:1"> ^</a></li>
<li id="fn:2">Technically, there are shell-based text editors that are easy to use, but they’re not as powerful as Vim or Emacs. Nano is one of them. <a class="reversefootnote" title="return to article" href="#fnref:2"> ^</a></li>
<li id="fn:3">Obviously, if you operate in the Windows world, this doesn’t apply to you. <a class="reversefootnote" title="return to article" href="#fnref:3"> ^</a></li>
</ol>
</div>
<p>The post <a href="https://programmingzen.com/tip-3-for-young-developers/">Tip #3 for Young Developers: Master an Editor</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/tip-3-for-young-developers/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1653</post-id>	</item>
		<item>
		<title>Tip #2 for Young Programmers: Learn Revision Control</title>
		<link>https://programmingzen.com/tip-2-for-young-programmers/</link>
					<comments>https://programmingzen.com/tip-2-for-young-programmers/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Tue, 03 May 2016 14:00:27 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[how to become a programmer]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming advice]]></category>
		<category><![CDATA[revision control]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tips for young programmers]]></category>
		<category><![CDATA[version control]]></category>
		<guid isPermaLink="false">http://programmingzen.com/?p=1650</guid>

					<description><![CDATA[<p>A surprising amount of people in our profession are&#xA0;not familiar with revision control software. In the world of computer software engineering, revision control is any kind of practice that tracks and provides control over changes to source code. Software developers sometimes use revision control software to maintain documentation and configuration files as well as source code. &#x2014; Wikipedia Over the past ten years, the growing prominence of open source software has helped to make several best practices far more established, but it&#x2019;s still all too common to encounter developers who are not familiar with revision/version control software such as Git, </p>
<p>The post <a href="https://programmingzen.com/tip-2-for-young-programmers/">Tip #2 for Young Programmers: Learn Revision Control</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A surprising amount of people in our profession are not familiar with revision control software.</p>
<blockquote><p>In the world of computer software engineering, revision control is any kind of practice that tracks and provides control over changes to source code. Software developers sometimes use revision control software to maintain documentation and configuration files as well as source code. — <a href="https://en.wikipedia.org/wiki/Version_control" target="_blank">Wikipedia</a></p></blockquote>
<p>Over the past ten years, the growing prominence of open source software has helped to make several best practices far more established, but it’s still all too common to encounter developers who are not familiar with revision/version control software such as Git, Mercurial, or Apache Subversion (SVN).</p>
<p>Understandably, this lack of knowledge is much more noticeable among young developers and students.</p>
<p>Let me be absolutely clear about this: there is no software development today without revision control. Anything non-trivial will require that you use revision control, whether developing in a large team, a startup, or even on your own.</p>
<p><img data-recalc-dims="1" decoding="async" style="float: right;" class="alignright size-medium wp-image-1651" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/git-logo.png?resize=300%2C125&#038;ssl=1" alt="Git logo" width="300" height="125" srcset="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/git-logo.png?resize=300%2C125&amp;ssl=1 300w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/git-logo.png?resize=768%2C321&amp;ssl=1 768w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/05/git-logo.png?w=910&amp;ssl=1 910w" sizes="(max-width: 300px) 100vw, 300px" />If you’re an aspiring developer, your career in our field will be enhanced by studying Git. Why Git specifically? It provides several advantages over SVN (mostly due to its distributed nature), and it’s more popular than the also excellent Mercurial.</p>
<p>It’s worth noting that twelve years ago I would have recommended that you learn SVN. Things change, and it’s possible that in another ten or fifteen years, Git will no longer be the reigning king in this arena.</p>
<p>I’m operating, however, under the fair assumption that you want to work today or in the near future. If so, learn Git. <a id="fnref:1" class="footnote" title="see footnote" href="#fn:1">[1]</a></p>
<p>Bear in mind that you don’t need to become an expert in what is a fairly complex system. Just master the basics, so that you’re competent enough to resolve most common situations and collaborate with fellow developers in your team.</p>
<p>Learn how to create a repository, clone it, pull, add, delete, commit, push, create and merge branches, diff files, revert changes, and so on. Basic stuff you’ll do day in and day out when changing code.</p>
<p>It won’t take you more than a couple of weeks of practice to really nail the fundamentals.</p>
<p>Another couple of related suggestions:</p>
<ol>
<li>Add Git to your resume. <a id="fnref:2" class="footnote" title="see footnote" href="#fn:2">[2]</a></li>
<li>You’ll need a place to host your Git repositories. Sign up with <a href="https://github.com">Github</a> <a id="fnref:3" class="footnote" title="see footnote" href="#fn:3">[3]</a> (and if you want a private repository for free,<a href="https://BitBucket.com">BitBucket</a>). Even if you’re not at a point where you can commit code to your repository, you can still practice Git by changing and pushing text files to it.</li>
</ol>
<p>To learn the basics of Git I recommend that you use these two resources:</p>
<ol>
<li><a href="https://try.github.io/levels/1/challenges/1">Try Git</a>.</li>
<li><a href="https://try.github.io/levels/1/challenges/1">https://www.learnenough.com/git-tutorial</a> by Michael Hartl</li>
</ol>
<p>They should get you well on your way to Git productivity.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">The principles of how revision control software works remain the same, even if a different solution were to show up on the market at a later date. <a href="#fnref:1"> ^</a></li>
<li id="fn:2">While interviewers will just assume that you know Git, placing this skill on your resume, especially if you’re a student or inexperienced developer, will clear up any doubts they may have. <a class="reversefootnote" title="return to article" href="#fnref:2"> ^</a></li>
<li id="fn:3">If you have a Github profile that you use to contribute to open source, make sure that it is listed on your resume, too. Watch for more on this specific point in a future post. <a class="reversefootnote" title="return to article" href="#fnref:3"> ^</a></li>
</ol>
</div>
<p>The post <a href="https://programmingzen.com/tip-2-for-young-programmers/">Tip #2 for Young Programmers: Learn Revision Control</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/tip-2-for-young-programmers/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1650</post-id>	</item>
		<item>
		<title>Tip #1 for Young Programmers: Specialize in Something</title>
		<link>https://programmingzen.com/tip-1-for-young-programmers/</link>
					<comments>https://programmingzen.com/tip-1-for-young-programmers/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Tue, 26 Apr 2016 15:13:33 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[how to become a programmer]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming advice]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tips for young programmers]]></category>
		<guid isPermaLink="false">http://programmingzen.com/?p=1647</guid>

					<description><![CDATA[<p>Over the years, I&#x2019;ve toyed with the idea of writing a series of posts aimed at young programmers.  My advice will be aimed at aspiring programmers, students, and programmers who are just starting out. I&#x2019;m going to skip the part in which I motivate you by telling you why learning to code is a great idea and akin to acquiring a super power. In this series, I&#x2019;m just going to assume that you&#x2019;re interested and highly motivated in becoming a programmer. If you&#x2019;re not, find your &#x201C;why&#x201D; first. The why is more important than the how and you&#x2019;re going </p>
<p>The post <a href="https://programmingzen.com/tip-1-for-young-programmers/">Tip #1 for Young Programmers: Specialize in Something</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Over the years, I’ve toyed with the idea of writing a series of posts aimed at young programmers. <a id="fnref:1" class="footnote" title="see footnote" href="#fn:1">[1]</a></p>
<p>My advice will be aimed at aspiring programmers, students, and programmers who are just starting out.<a id="fnref:2" class="footnote" title="see footnote" href="#fn:2">[2]</a></p>
<p>I’m going to skip the part in which I motivate you by telling you why learning to code is a great idea and akin to <a href="https://programmingzen.com/2011/03/21/programming-is-a-super-power/">acquiring a super power</a>.</p>
<p>In this series, I’m just going to assume that you’re interested and highly motivated in becoming a programmer. If you’re not, find your “why” first. The why is more important than the how and you’re going to need both in order to succeed.</p>
<p>My tips are going to be presented in a more or less random fashion, as I don’t have a pre-arranged list that I’m working from. I’m certain that I’ll come up with more as we go along.</p>
<p>I’m going to number them here nevertheless so that it’s easier to reference them in discussions.</p>
<h3 id="tip1:specializeinsomething">Tip #1: Specialize in something</h3>
<p>Last year I interviewed over 100 candidates for IBM.<a id="fnref:3" class="footnote" title="see footnote" href="#fn:3">[3]</a> Most candidates were students from elite universities and were by all accounts, impressive young people.</p>
<p>University had opened them up to a wide variety of topics in computer science. The logic behind such an approach is sound. Syllabuses are intentionally designed to prepare students to think like a computer scientist, and to expose them to as much computer science as they can cram into four years.</p>
<p>The idea is to show students what’s out there so that they can then decide what interests them so that they might pursue further specialization academically or on the job.</p>
<p>The downside of this approach is that unless you do independent work in your spare time, you might graduate with very little code under your belt.</p>
<p>More importantly, you’ll simply be a bundle of potential.<a id="fnref:4" class="footnote" title="see footnote" href="#fn:4">[4]</a> You could specialize in anything you want to. You could become a good programmer, but you haven’t likely reached that point in either case yet.</p>
<p>There are certainly companies willing to hire you on the basis of that potential. I mean, you graduate from an ivy league school, with top grades, and naturally there will be big companies who are interested in you.</p>
<p>To widen your job prospectives, however, I suggest that you specialize on your own.</p>
<p>The market will pay you for the value you bring to it.<a id="fnref:5" class="footnote" title="see footnote" href="#fn:5">[5]</a> This is true whether you are an employee, freelancer, or opt to launch your own startup.</p>
<p>This is why I fully respected, appreciated, and even hired candidates with plenty of potential and not much experience. My favorite candidates, though, remained those who independently developed a keen interest in a particular area of the information technology world, and learned as much as they could in parallel to their more formal studies.</p>
<p>This tip could very be easily phrased as, “Be useful at something”. If I hire you to do something, it really helps if, on top of having the potential, you also have a degree of experience and expertise in that something, that will aid us in developing your skills further.</p>
<p>To date, there are still students around the world who graduate and come to the market with very little knowledge regarding things like the command line, any editor that isn’t an IDE, who have no idea what git is, and whose memories of subjects (e.g., web development) they touched upon a couple of years back are often hazy at best.</p>
<p>Whether you’re a student or not, my first tip is, therefore, to become useful at the creation of a particular type of product.</p>
<p>Here are some examples of “stacks” you can specialize in:</p>
<ul>
<li>Learn how to develop Android apps</li>
<li>Learn how to develop iOS apps</li>
<li>Learn how to develop web applications with Rails</li>
<li>Learn how to do data science with Python (or R)</li>
<li>Learn how to hack hardware</li>
</ul>
<p>No matter what you choose, try to become experienced enough so that you have an essential understanding of the lingo, best practices, and challenges of that particular type of development.</p>
<p>Once you’ve determined the type of software you want to build, it becomes much easier to focus your efforts towards what needs to be learned, what books should be read, and what code you need to write.</p>
<p>Want to become a web app developer? Learn HTML, CSS, JavaScript, Ruby, and the Ruby on Rails web framework, for example. Then start creating projects by first following along with <a href="https://www.railstutorial.org/">tutorials</a>, then on your own.</p>
<p>Want to become an Android developer? Learn Java, then how Android apps are built (you’ll have to become well acquainted with Android Studio and the SDK).</p>
<p>Speaking of Android, I’m particularly reminded of one of the best performing students from my <a href="https://programmingzen.com/2015/07/03/on-assignment-in-san-francisco-for-ibm-leading-to-africa/">LEADing to Africa</a> summer internship in San Francisco.</p>
<div id="attachment_1649" style="width: 610px" class="wp-caption aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" aria-describedby="caption-attachment-1649" class="size-full wp-image-1649" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/04/my-l2a-summer-interns.jpg?resize=600%2C400&#038;ssl=1" alt="My L2A summer interns" width="600" height="400" srcset="https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/04/my-l2a-summer-interns.jpg?w=600&amp;ssl=1 600w, https://i0.wp.com/programmingzen.com/wp-content/uploads/2016/04/my-l2a-summer-interns.jpg?resize=300%2C200&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /><p id="caption-attachment-1649" class="wp-caption-text">My L2A summer interns</p></div>
<p>Not only he had a comparable foundation in computer science to that of other students I&#8217;ve interviewed, but he had also taken the time to independently learn enough Android to be “useful” (or dangerous, depending on who you ask :)) on that front.</p>
<p>You could ask him to create a fairly complex Android app, and he’d know how to approach it and make it happen in a reasonable timeframe. That’s adding value to the market.</p>
<p>Be like that student. Be a mile wide, and an inch deep, but specialize enough in something to be useful.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">I’m not sure why I didn’t commit to it before now. Perhaps, it was because I expected the subjective nature of my advice to elicit the wrong kind of response among fellow programmers (we are after all an unabashedly opinionated bunch). I realized however that there is more value in providing the advice, even if some will disagree with it, then provide no guidance at all. Yes, others have written about this topic. <a href="https://programmingzen.com/recommends/?020161622X">Entire</a> <a href="https://programmingzen.com/recommends/?1934356344">books</a> in fact. But this is my take on it, and it has served me (and those who I mentor) well so far. <a class="reversefootnote" title="return to article" href="#fnref:1"> ^</a></li>
<li id="fn:2">It’s more about experience than age. If you are 60 and only now getting started with programming, this series should help. It’s never too late. <a class="reversefootnote" title="return to article" href="#fnref:2"> ^</a></li>
<li id="fn:3">We ended up hiring a couple of dozens of them (the majority, as interns). <a class="reversefootnote" title="return to article" href="#fnref:3"> ^</a></li>
<li id="fn:4">Hopefully, you learned how to learn; that’s an invaluable skill. <a class="reversefootnote" title="return to article" href="#fnref:4"> ^</a></li>
<li id="fn:5">Money is really a score of the value you’ve created and captured. <a class="reversefootnote" title="return to article" href="#fnref:5"> ^</a></li>
</ol>
</div>
<p>The post <a href="https://programmingzen.com/tip-1-for-young-programmers/">Tip #1 for Young Programmers: Specialize in Something</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/tip-1-for-young-programmers/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1647</post-id>	</item>
	</channel>
</rss>
