<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Ryan Peden</title>
	<atom:link href="https://ryanpeden.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://ryanpeden.com/</link>
	<description>Full Stack DevRel</description>
	<lastBuildDate>Wed, 11 Jan 2023 04:09:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3.2</generator>
<site xmlns="com-wordpress:feed-additions:1">155423463</site>	<item>
		<title>Prioritizing What Matters in Software Development</title>
		<link>https://ryanpeden.com/prioitizing-what-matters-in-software-development/</link>
					<comments>https://ryanpeden.com/prioitizing-what-matters-in-software-development/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Tue, 10 Jan 2023 13:10:48 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=207</guid>

					<description><![CDATA[<p>As a software engineer, it&#8217;s easy to get caught up in the details of programming languages and practices. Maybe you believe that one language is superior to all others, or that microservices are better than monoliths. But here&#8217;s the question you need to ask yourself: how much do these things</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/prioitizing-what-matters-in-software-development/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/prioitizing-what-matters-in-software-development/">Prioritizing What Matters in Software Development</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img decoding="async" fetchpriority="high" width="1000" height="667" data-attachment-id="215" data-permalink="https://ryanpeden.com/prioitizing-what-matters-in-software-development/mohammad-rahmani-oxlxu2qukge-unsplash/" data-orig-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/mohammad-rahmani-oXlXu2qukGE-unsplash.jpg?fit=6720%2C4480&amp;ssl=1" data-orig-size="6720,4480" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="mohammad-rahmani-oXlXu2qukGE-unsplash" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/mohammad-rahmani-oXlXu2qukGE-unsplash.jpg?fit=300%2C200&amp;ssl=1" data-large-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/mohammad-rahmani-oXlXu2qukGE-unsplash.jpg?fit=1000%2C667&amp;ssl=1" src="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/mohammad-rahmani-oXlXu2qukGE-unsplash.jpg?resize=1000%2C667&#038;ssl=1" alt="" class="wp-image-215" data-recalc-dims="1"/><figcaption class="wp-element-caption">Photo by <a href="https://unsplash.com/@afgprogrammer?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Mohammad Rahmani</a> on <a href="https://unsplash.com/photos/oXlXu2qukGE?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure>



<p>As a software engineer, it&#8217;s easy to get caught up in the details of programming languages and practices. Maybe you believe that one language is superior to all others, or that microservices are better than monoliths. </p>



<p>But here&#8217;s the question you need to ask yourself: how much do these things really matter in the grand scheme of things?</p>



<h2 class="wp-block-heading">I Was a True Believer</h2>



<p>I used to think that picking the right programming language mattered more than anything else. </p>



<p>When I was a junior developer, I was convinced that picking the right programming language was the key to innovation. I read Paul Graham&#8217;s <a href="http://www.paulgraham.com/avg.html">Beating the Averages</a> with zeal. I learned everything I could about <a href="https://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>, <a href="https://common-lisp.net/">Lisp</a>, and <a href="https://www.haskell.org/">Haskell</a>.</p>



<p>I still think that many &#8216;modern&#8217; programming and DevOps tools feel like trying to build a skyscraper with sticks and stones compared to the magic available 40+ years ago <a href="https://en.wikipedia.org/wiki/Genera_(operating_system)">on Lisp machines</a> and in <a href="https://github.com/dbanay/Smalltalk/blob/master/images/desktop.png">Smalltalk-80</a>.</p>



<h2 class="wp-block-heading">Technology Matters Less Than You Hope</h2>



<p>But the truth is, in a world with amazing open-source tools like <a href="https://www.djangoproject.com/">Django</a>, <a href="https://fastapi.tiangolo.com/">FastAPI</a>, <a href="https://rubyonrails.org/">Ruby on Rails</a>, <a href="https://www.qt.io/product/framework">Qt</a>, and countless others, it&#8217;s tough to beat the averages because the averages are now pretty darn good. And beating them doesn&#8217;t buy you as much as it used to.</p>



<p>Regardless, the average user doesn&#8217;t care what programming language you built your app with.</p>



<p>As engineers, we&#8217;re tempted to think everyone cares about technical details as much as we do, but most people just want things to work. And when the chips are down, engineers usually don&#8217;t care either.</p>



<p>For example, read <a href="https://twitter.com/levelsio/status/1381709793769979906">this tweet</a> by <a href="https://twitter.com/levelsio">@levelsio</a> discussing how <a href="https://remoteok.com/">RemoteOK</a> generates over $100,000 per month in revenue with a single PHP file as its backend. </p>



<p>Of all the engineers and techies who found remote jobs via RemoteOK, how many of them do you think got upset about its backend? I&#8217;d bet it&#8217;s a rounding error.</p>



<h2 class="wp-block-heading">Make Pragmatic Engineering Choices, But Don&#8217;t Be Reckless</h2>



<p>None of this means good engineering doesn&#8217;t matter at all. A maintainable, readable, and clean codebase is certainly better than a messy, hard-to-understand codebase. <a href="https://en.wikipedia.org/wiki/Software_testing">Testing</a> is crucial, and following <a href="https://owasp.org/">best practices for security</a> and performance is vital. </p>



<h3 class="wp-block-heading">Beware fake productivity</h3>



<p>But it&#8217;s also important to recognize that debating languages and tools and conceptual purity can feel like productivity, when in reality it&#8217;s a waste of time.</p>



<p>A team that chooses &#8216;boring&#8217; tools like PHP and Laravel and gets down to work will likely progress more quickly than a team that spends its first month arguing about whether to use <a href="https://www.rust-lang.org/">Rust</a>, <a href="https://go.dev/">Go</a>, or <a href="https://elixir-lang.org/">Elixir</a>.</p>



<h3 class="wp-block-heading">Pick tools that get the job done</h3>



<p>The same is true when it comes to the trade-offs between different libraries and tools. For example, choosing between a relational database or a document database can be a contentious topic. </p>



<p>But will using <a href="https://www.postgresql.org/">Postgres</a> instead of <a href="https://www.mongodb.com/">MongoDB</a> make or break your company? Probably not.</p>



<p> Will choosing <a href="https://expressjs.com/">Express</a> over <a href="https://www.fastify.io/">fastify</a> ruin you? Unlikely.</p>



<p>Ultimately, the best choice depends on what you&#8217;re creating. In many cases, the specific tech you choose matters less than you wish it did.</p>



<p>Yes, you might make the wrong choice. It happens. Make the best choice you can with everything you know right now, and change your mind down the road if necessary.</p>



<h3 class="wp-block-heading">The smaller you are, the more pragmatism matters</h3>



<p>The idea that technology choices don&#8217;t matter as much as we think applies doubly to solopreneurs and early-stage startups. Getting a product to market and learning about customer needs is paramount. </p>



<p>Use, <a href="https://www.php.net/">PHP</a>, <a href="https://rubyonrails.org/">Ruby on Rails</a>, <a href="https://www.qt.io/product/framework">Qt</a>, <a href="https://reactnative.dev/">React Native</a>, or whatever lets you start delivering value to users ASAP.</p>



<h2 class="wp-block-heading">Sometimes, Technology Gives You An Advantage</h2>



<p>With all that in mind, you should still use your brain. Remember that sometimes technology <em>does </em>matter, especially when it gives you a competitive advantage. </p>



<p>For example, if you&#8217;re building app aimed at a niche that values real-time UI and dashboards, using  <a href="https://elixir-lang.org/">Elixir</a>, <a href="https://www.phoenixframework.org/">Phoenix</a>, and <a href="https://github.com/phoenixframework/phoenix_live_view">LiveView</a> might help run you circles around competitors struggling to build  similar solutions using <a href="https://nodejs.org/en/">Node.js</a>, <a href="https://socket.io/">Socket.io</a>, <a href="https://reactjs.org/">React</a>, <a href="https://recoiljs.org/">Recoil</a>, duct tape, and hope.</p>



<p>In short, remain aware of how can help you compete. If you like the idea of disrupting a market with technology, work hard to stay up to speed on markets you care about <em>and </em>technology that might help you disrupt them.</p>



<h2 class="wp-block-heading">The Game Changes When You Need To Scale&#8230;</h2>



<p>Making simple technology choices early means you&#8217;ll need to revisit them as you scale. For example, a startup that has found product-market fit and is consequently growing rapidly should spend serious time, thought, and salary on architecture and engineering.</p>



<p>But even when you&#8217;re scaling, remain cautious and try not get caught up in technical bike shedding. Twitter got a long way using Ruby on Rails, not exactly known for its speed. Yes, the <a href="https://www.theatlantic.com/technology/archive/2015/01/the-story-behind-twitters-fail-whale/384313/">fail whale</a> showed up too often. But people kept using the platform. </p>



<p>And <a href="https://www.shopify.com/ca">Shopify</a>, a $60 billion company, is at its core still a monolithic Rails app (albeit with plenty of help from Go, React, and others.)</p>



<h2 class="wp-block-heading">&#8230;Or When You&#8217;re Already At Scale</h2>



<p>Similarly, when working on an app already operating at scale, aim for engineering excellence. Think about performance and maintainability. </p>



<p>And don&#8217;t forget that scale is relative. Ten thousand simultaneous users might seem like a lot right now. But if you&#8217;ve reached that level, there&#8217;s a good chance you&#8217;ll need to handle ten times as many in a year, so plan accordingly. </p>



<p>Remain vigilant, however, and remember to balance engineering goals with practicality and the need to deliver value to your users.</p>



<p>Finally, if you work for a behemoth like Google, Amazon, Microsoft, or Netflix, you might need to create an app that handles thousands or millions of users on day one. In that case, it&#8217;s crucial to engineer for scalability from the beginning. </p>



<p>Even then, you&#8217;re not focusing on technology for its own sake. You&#8217;re doing it because you <em>must</em> do it to meet user expectations.</p>



<h2 class="wp-block-heading">Takeaway</h2>



<p>Whether you&#8217;re a solopreneur or a cog in a big corporate machine, always consider the trade-offs imposed by your technical choices. The most important thing is delivering value to the users and meeting the requirements of the business.</p>



<p>Maybe you&#8217;re wondering what the heck I&#8217;m talking about because you&#8217;ve always worked on teams that made pragmatic tech choices. </p>



<p>If so, I envy you. I&#8217;ve worked on some great teams alongside amazing software engineers and even then, we wasted too much time on technical <a href="https://seths.blog/2005/03/dont_shave_that/">yak shaving</a> that ultimately didn&#8217;t matter.</p>



<p>So next time you find yourself getting caught up in debates about the superiority of one language or engineering practice over another, remember: what really matters is building things that people want to use. </p>



<p>Without users and the business they support, there won&#8217;t be any money to pay for technology! As long as you prioritize practicality and results over conceptual purity, you&#8217;ll be on the right track.</p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/prioitizing-what-matters-in-software-development/">Prioritizing What Matters in Software Development</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/prioitizing-what-matters-in-software-development/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">207</post-id>	</item>
		<item>
		<title>Don&#8217;t Get Lost in the Code</title>
		<link>https://ryanpeden.com/dont-get-lost-in-the-code-career-advice-for-developers/</link>
					<comments>https://ryanpeden.com/dont-get-lost-in-the-code-career-advice-for-developers/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Sat, 07 Jan 2023 03:15:48 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[DevRel]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=196</guid>

					<description><![CDATA[<p>As a software developer, I know firsthand the allure of diving deep into the technicalities of creating complex applications. But it&#8217;s important not to get lost in the code. Some of the best career advice I can give other developers is that they should learn to look beyond the code</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/dont-get-lost-in-the-code-career-advice-for-developers/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/dont-get-lost-in-the-code-career-advice-for-developers/">Don&#8217;t Get Lost in the Code</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img decoding="async" width="1000" height="563" data-attachment-id="204" data-permalink="https://ryanpeden.com/dont-get-lost-in-the-code-career-advice-for-developers/james-harrison-vpoexr5wmr4-unsplash/" data-orig-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/james-harrison-vpOeXr5wmR4-unsplash.jpg?fit=6000%2C3376&amp;ssl=1" data-orig-size="6000,3376" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="james-harrison-vpOeXr5wmR4-unsplash" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/james-harrison-vpOeXr5wmR4-unsplash.jpg?fit=300%2C169&amp;ssl=1" data-large-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/james-harrison-vpOeXr5wmR4-unsplash.jpg?fit=1000%2C563&amp;ssl=1" src="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2023/01/james-harrison-vpOeXr5wmR4-unsplash.jpg?resize=1000%2C563&#038;ssl=1" alt="" class="wp-image-204" data-recalc-dims="1"/><figcaption class="wp-element-caption">Photo by <a href="https://unsplash.com/@jstrippa?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">James Harrison</a> on <a href="https://unsplash.com/s/photos/code?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure>



<p>As a software developer, I know firsthand the allure of diving deep into the technicalities of creating complex applications. But it&#8217;s important not to get lost in the code. Some of the best career advice I can give other developers is that they should learn to look beyond the code they&#8217;re writing. </p>



<h3 class="wp-block-heading">Getting Lost in Code</h3>



<p>I still remember my early days of programming, when I was so excited to learn about all the latest tools and techniques. I spent hours studying code and trying out new frameworks. That was an incredibly valuable learning experience for me.</p>



<p>However, as I gained more experience and my projects became more complex, like creating big .NET backends and sophisticated React front-ends, I found that getting caught up in the technical details wasn&#8217;t always helpful. </p>



<p>It wasn&#8217;t that technical details weren&#8217;t interesting. They were! Maybe <em>too</em> interesting. </p>



<p>But getting getting caught up in technical details meant I didn&#8217;t always keep the end goal in sight. I would get lost in the code and lose track of what I was trying to accomplish.</p>



<h3 class="wp-block-heading">Remember Your Users</h3>



<p>This same dynamic can play out in development teams, whether at startups or larger companies. Developers often get caught up in debates about the minute differences between frameworks or the latest and greatest tools, rather than focusing on the needs of their users. </p>



<p>It&#8217;s important we ensure our work is technically sound, but it&#8217;s also crucial to remember we&#8217;re creating products and services for real people.</p>



<p>Coding for its own sake can get boring after a while. The real joy comes from making things that other people use and love. That&#8217;s why it&#8217;s so important for developers to keep their eye on the prize and think about the bigger picture. </p>



<p>Solving problems in a performant, scalable, and maintainable way is still important, but it&#8217;s also crucial to consider the needs of our users and how our work fits into the overall goals of our team, our company, and our users.</p>



<h3 class="wp-block-heading">Why I Like DevRel</h3>



<p>Focusing on awesome user outcomes and not just code is why I&#8217;ve gravitated toward DevRel and DevEx engineering over the past few years. In these roles, I still get to write as much code as I want to, and I still get to work on product features. </p>



<p>But I also spend a lot of time connecting with the developers who use the product. It&#8217;s incredibly rewarding to see how my work helps to create tools  that developers love, and then helps the developer community discover and learn how to use those tools. </p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/dont-get-lost-in-the-code-career-advice-for-developers/">Don&#8217;t Get Lost in the Code</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/dont-get-lost-in-the-code-career-advice-for-developers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">196</post-id>	</item>
		<item>
		<title>Make Your DevRel Strategic, Not Operational</title>
		<link>https://ryanpeden.com/make-devrel-strategic-not-operational/</link>
					<comments>https://ryanpeden.com/make-devrel-strategic-not-operational/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Mon, 02 May 2022 02:51:46 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=181</guid>

					<description><![CDATA[<p>As software continues to eat the world, the role of the developer advocate or evangelist &#8211; and DevRel in general &#8211; is becoming more critical. Companies now see the value in having employees who focus on building relationships with developers. Yet instead of making DevRel strategic, too many companies treat</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/make-devrel-strategic-not-operational/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/make-devrel-strategic-not-operational/">Make Your DevRel Strategic, Not Operational</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As software continues to eat the world, the role of the developer advocate or evangelist &#8211; and DevRel in general &#8211; is becoming more critical. Companies now see the value in having employees who focus on building relationships with developers. Yet instead of making DevRel strategic, too many companies treat it as an operational activity. </p>



<p>This is a mistake. Companies targeting developers should treat DevRel as a strategic activity vital to achieving business goals.</p>



<h2 class="wp-block-heading">Strategic vs. Operational</h2>



<p></p>



<figure class="wp-block-image size-large is-style-default"><img decoding="async" width="1000" height="677" data-attachment-id="182" data-permalink="https://ryanpeden.com/make-devrel-strategic-not-operational/brands-people-ax8ia8gajvg-unsplash/" data-orig-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2022/05/brands-people-Ax8IA8GAjVg-unsplash.jpg?fit=4860%2C3291&amp;ssl=1" data-orig-size="4860,3291" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="brands-people-Ax8IA8GAjVg-unsplash" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2022/05/brands-people-Ax8IA8GAjVg-unsplash.jpg?fit=300%2C203&amp;ssl=1" data-large-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2022/05/brands-people-Ax8IA8GAjVg-unsplash.jpg?fit=1000%2C677&amp;ssl=1" src="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2022/05/brands-people-Ax8IA8GAjVg-unsplash.jpg?resize=1000%2C677&#038;ssl=1" alt="A picture of a person writing on post-it notes and placing them on a board." class="wp-image-182" data-recalc-dims="1"/></figure>



<p>What do I mean, exactly, when I talk about strategic and operational?</p>



<p>The business world uses the term &#8220;strategy&#8221; in different ways. I&#8217;m talking about <a href="https://www.isc.hbs.edu/strategy/Pages/strategy-explained.aspx">Michael Porter&#8217;s definition</a>. The idea that a company should undertake a unique mix of actions to help it build a moat &#8211; actions that set it aside from its competitors. These activities can provide the company a unique and defensible strategic market position.</p>



<p>Operational activities are different. They&#8217;re what you do daily to keep the business running. You need to do them, but they won&#8217;t help you build a competitive advantage. Operational innovations are easy for competitors to copy.&nbsp;</p>



<p>Think of things like accounting or HR. They&#8217;re operational. Even the act of writing code is usually operational. You&#8217;re not going to develop a revolutionary way of writing code unless you&#8217;re Google. The things your code&nbsp;<em>does</em>&nbsp;might be strategic. But the fact you use Scrum shouldn&#8217;t be part of your strategic positioning.</p>



<p>Activities like DevRel that&nbsp;<em>should</em>&nbsp;be strategic can be merely operational. This happens if you tick the standard boxes that everyone ticks. Things like doing a bit of advertising. Or writing some uninspiring blog posts. Or setting up a Discourse forum but don&#8217;t engage with anyone who asks questions.</p>



<h2 class="wp-block-heading">Why Make DevRel Strategic?</h2>



<p></p>



<p>So why, exactly, should you treat DevRel as strategic? There are a few reasons why you should consider it.</p>



<p>First, it helps you build&nbsp;<em>real</em>&nbsp;trust with developers. I&#8217;m not one of those hipsters who will preach about the importance of &#8220;authenticity&#8221; when addressing developers. Instead, I&#8217;ll say you need to be bullshit-free. Building trust is difficult if you treat DevRel as a operational checkbox on a list of things you think you&#8217;re supposed to do. Instead, treat it as a core part of who you are.</p>



<p>This trust is important because developers are becoming the gatekeepers of technology. They decide which products and services to use and recommend to their colleagues. As a result, developers are more likely to use and recommend the products of a company they trust.</p>



<p>Next, DevRel &#8211; if done strategically &#8211; can help a company understand the needs of developers. Developers are a key customer segment for many companies, so it&#8217;s essential to understand their needs. Strategic DevRel helps build these relationships by talking to developers about their needs. These relationships lead to insights that can improve products and services. Operational DevRel is rarely comprehensive enough to lead to iinsight.</p>



<p>DevRel can also help a company position itself as a thought leader in its industry. By making itself known as the kind of company that gets developers, cares about the things they care about, and is actively invested in making their lives better, a company can set itself apart from its competitors.&nbsp;</p>



<p>As an extra benefit, thought leadership can also help a company attract top talent. The best developers want to work for companies at the forefront of their industry. By positioning themselves as thought leaders, a company can attract these top developers to its team.</p>



<p>But if your treating DevRel as operational, you might not be thinking thoughts developers would consider leadership.</p>



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



<p></p>



<p>DevRel can be a considerable driver of company growth &#8211;&nbsp;<em>if</em>&nbsp;you do it right. But you will not see the benefits if you treat it as a token effort rather than a core part of your identity. If you make it part of who you are as a company, however, you can reap the rewards of faster growth, better products, and a stronger position in your industry.</p>



<p>The next question:&nbsp;<em>how&nbsp;</em>do you make your DevRel efforts strategic from the start? And how do you&nbsp;<em>move</em>&nbsp;DevRel in a strategic direction if you have it, but it is operational and ineffective? That&#8217;s a topic for another post.</p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/make-devrel-strategic-not-operational/">Make Your DevRel Strategic, Not Operational</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/make-devrel-strategic-not-operational/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">181</post-id>	</item>
		<item>
		<title>The Top 5 Reasons Why Software Engineers Hate DevOps</title>
		<link>https://ryanpeden.com/the-top-5-reasons-why-software-engineers-hate-devops/</link>
					<comments>https://ryanpeden.com/the-top-5-reasons-why-software-engineers-hate-devops/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Mon, 15 Nov 2021 20:55:44 +0000</pubDate>
				<category><![CDATA[Opinion]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=176</guid>

					<description><![CDATA[<p>Note: This article was written by a neural network. It&#8217;s part of a series of experiments I&#8217;m doing to see how well AI can generate plausible and not-totally-awful clickbait. But I promise I don&#8217;t actually hate DevOps. DevOps was supposed to be the silver bullet that would fix all the</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/the-top-5-reasons-why-software-engineers-hate-devops/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/the-top-5-reasons-why-software-engineers-hate-devops/">The Top 5 Reasons Why Software Engineers Hate DevOps</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>Note</strong>: <strong>This article was written by a neural network. It&#8217;s part of a series of experiments I&#8217;m doing to see how well AI can generate plausible and not-totally-awful clickbait.</strong> <strong>But I promise I don&#8217;t actually hate DevOps.</strong></p>



<p>DevOps was supposed to be the silver bullet that would fix all the problems caused by agile development. Unfortunately, most developers hate DevOps. The overall cause is simple: DevOps requires developers to change how they think about software.</p>



<p>There are five main reasons why devs hate DevOps. Let&#8217;s talk about each one in turn.</p>



<h2 class="wp-block-heading">Reason 1: Developers Don&#8217;t Like Change</h2>



<p>DevOps is based on the idea of continuous integration and delivery. In other words, it encourages constant feedback loops. This means that every developer must check in their code frequently. Then, they have to test it. Finally, they have to release it to production.</p>



<p>All of this happens automatically. This makes it easy to automate. It also ensures that any bugs are found early. This gives the team time to make fixes. And it prevents problems from spreading through the whole organization.</p>



<p>As a result, DevOps eliminates a lot of the chaos that used to happen during both waterfall and agile development.</p>



<p>Unfortunately, many developers don&#8217;t like change. They prefer the stability of traditional methods. So they resist DevOps.</p>



<p>One example of this is the use of CI/CD tools. Many developers believe that these systems cause too much friction. These devs feel that it slows down their workflow.</p>



<p>Another example is the idea of automated testing. Most devs don&#8217;t like this. They worry that it will slow them down.</p>



<p>Finally, some devs dislike the idea of automating deployments. They don&#8217;t want to give up control over their servers.</p>



<p>The bottom line is that many developers don&#8217;t like change. That&#8217;s why DevOps is so difficult for them.</p>



<h2 class="wp-block-heading">Reason 2: Developers Don&#8217;t Understand the Value of Automation</h2>



<p>A big problem with DevOps is that most developers don&#8217;t understand what it does. For instance, they often assume that it will increase their productivity.</p>



<p>But that&#8217;s not true. DevOps isn&#8217;t about increasing the number of features your application can do. It&#8217;s about making sure those features are tested and released quickly.</p>



<p>In fact, DevOps is more efficient than traditional methods. With DevOps, you only have to deal with the problems that occur after someone else has fixed the ones that happened earlier.</p>



<p>So why do developers hate DevOps? Because they think it will reduce the amount of time they spend adding new features.</p>



<p>They&#8217;re wrong.</p>



<p>DevOps doesn&#8217;t mean that you won&#8217;t add features. It simply means that you&#8217;ll be able to find and fix problems before they get out into the wild.</p>



<p>That way, when something goes wrong, it&#8217;s easier to fix.</p>



<p>And if you don&#8217;t have to waste time fixing things, you can focus on building new stuff.</p>



<h2 class="wp-block-heading">Reason 3: Developers Don&#8217;t Want to Deal with New Tools</h2>



<p>DevOps uses a variety of tools. Some of these include containers, Kubernetes, Jenkins, GitHub, Docker, etc.</p>



<p>Many devs hate dealing with these tools.</p>



<p>Why?</p>



<p>Because they think they&#8217;ll slow them down.</p>



<p>For example, many devs believe that using a container will increase their deployment times. And since DevOps relies on frequent releases, they assume that they need to make frequent changes to the images.</p>



<p>These assumptions are incorrect.</p>



<p>Containers speed up the process of deploying applications. They help prevent errors from getting out to the rest of the world. And they allow teams to deploy different versions of the same app at the same time.</p>



<p>As a result, DevOps saves time.</p>



<p>However, there are still a few issues.</p>



<p>First, DevOps tools aren&#8217;t perfect. There may be bugs or security holes in them. As a result, some developers will avoid using them.</p>



<p>Second, it takes time to learn how to use DevOps tools.</p>



<p>Some devs might try to use the tools without learning how to use them properly. This could lead to serious problems.</p>



<p>Finally, it&#8217;s important to remember that DevOps tools aren&#8217;t magic. They can&#8217;t fix everything. You still need to write tests. And you still need to keep track of your code.</p>



<p>You just have to do it differently.</p>



<h2 class="wp-block-heading">Reason 4: Developers Are Afraid of Making Mistakes</h2>



<p>DevOps encourages developers to take responsibility for their own mistakes.</p>



<p>Most devs don&#8217;t like this idea. After all, they&#8217;re afraid of making mistakes.</p>



<p>If they make a mistake, they&#8217;ll get fired.</p>



<p>So they avoid taking risks.</p>



<p>Unfortunately, this approach usually leads to bad results.</p>



<p>When you use DevOps, you should always be looking for ways to eliminate risk. If possible, you should never have to fix a bug.</p>



<p>Of course, this is easier said than done. Sometimes you can&#8217;t completely eliminate the risk. But you can minimize it.</p>



<p>For example, you might decide to automate the entire build-test cycle. This would remove the human element from the process. It also reduces the chance of a human making a mistake.</p>



<p>Similarly, you can use containers to isolate code. Doing this prevents you from accidentally breaking your application.</p>



<p>Finally, you can use automated testing to catch mistakes as soon as they happen.</p>



<p>The point is that DevOps encourages you to accept some level of risk. This is why DevOps is so hard for many devs.</p>



<h2 class="wp-block-heading">Reason 5: Developers Hate Working with Other People</h2>



<p>DevOps encourages collaboration between software engineers and operations. This means that you have to work closely with other people. Unfortunately, many developers don&#8217;t like this idea.</p>



<p>They&#8217;re scared of interacting with others. They&#8217;re afraid of being criticized. And they worry that working together will cause conflict.</p>



<p>Of course, it&#8217;s important to collaborate with your team. But it&#8217;s equally important to know when to step back.</p>



<p>It&#8217;s okay to disagree sometimes. But it&#8217;s not okay to argue constantly.</p>



<p>Finally, it&#8217;s also important to recognize that everyone makes mistakes.</p>



<p>No one is perfect. Everyone needs to admit that they&#8217;ve made a mistake. Then they need to move on.</p>



<p>The bottom line is that DevOps requires you to interact with others. And that can be scary.</p>



<p>That&#8217;s why so many devs hate DevOps.</p>



<h2 class="wp-block-heading">Conclusion: The Bottom Line</h2>



<p>To sum up, here are the five main reasons why devs hate DevOps.</p>



<p>1. Developers Don&#8217;t Like Change</p>



<p>2. Developers Don&#8217;t Understand the Value of Automation</p>



<p>3. Developers Don&#8217;t Want to Deal with New Tools</p>



<p>4. Developers Are Afraid of Making Mistakes</p>



<p>5. Developers HATE Interacting with Others</p>



<p>Now, the real question is: are developers right, or should they give DevOps another chance?</p>



<p>Well, I think it&#8217;s worth giving DevOps a second look. But only if we make sure to address all of its problems.</p>



<p>Here are three steps that you can take to improve DevOps:</p>



<p><strong>Step 1: Make Sure Your Team Knows What DevOps Is</strong></p>



<p>First, make sure that everyone knows what DevOps is. DevOps isn&#8217;t about tools. It&#8217;s about a mindset. Once you understand that, it will be much easier to adopt DevOps.</p>



<p><strong>Step 2: Teach Everyone How to Use DevOps Tools</strong></p>



<p>Next, teach everyone how to use DevOps tools. It doesn&#8217;t matter whether you&#8217;re using Jenkins, GitLab, CircleCI, etc. Just show them how to use them. Make sure they understand the basic concepts.</p>



<p>Don&#8217;t worry about automating everything. That will come later. Just focus on teaching them how to do things manually first. Remember, DevOps tools aren&#8217;t magic. They can&#8217;t fix every problem.</p>



<p>They can, however, help you reduce the amount of manual effort needed to complete your tasks.</p>



<p><strong>Step 3: Find Ways To Eliminate Risk</strong></p>



<p>Finally, find ways to eliminate risk. You can start by eliminating bugs. Then you can automate more of your processes.</p>



<p>Also, try to limit the number of people who have access to your servers. This will prevent unauthorized changes from spreading through the organization.</p>



<p>The goal is to create an environment where you don&#8217;t have to worry about making mistakes. With these three steps, you&#8217;ll be able to use DevOps without having to deal with all of its problems.</p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/the-top-5-reasons-why-software-engineers-hate-devops/">The Top 5 Reasons Why Software Engineers Hate DevOps</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/the-top-5-reasons-why-software-engineers-hate-devops/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">176</post-id>	</item>
		<item>
		<title>How to find the version of a globally installed NPM package</title>
		<link>https://ryanpeden.com/how-to-find-the-version-of-a-globally-installed-npm-package/</link>
					<comments>https://ryanpeden.com/how-to-find-the-version-of-a-globally-installed-npm-package/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Tue, 21 Jan 2020 14:49:44 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=171</guid>

					<description><![CDATA[<p>Sometimes, you really want to know the version of a globally installed NPM package. That&#8217;s the position I found myself in this morning. Googling didn&#8217;t help me much. Most of the answers I found just didn&#8217;t answer my question. Here what you need to know. If you want to see</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/how-to-find-the-version-of-a-globally-installed-npm-package/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/how-to-find-the-version-of-a-globally-installed-npm-package/">How to find the version of a globally installed NPM package</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Sometimes, you <em>really</em> want to know the version of a globally installed NPM package. That&#8217;s the position I found myself in this morning. Googling didn&#8217;t help me much. Most of the answers I found just didn&#8217;t answer my question. </p>



<p>Here what you need to know. If you want to see the version of a globally installed NPM package, run this:</p>



<p><code>npm ls -g package-name --depth 0</code></p>



<p>Replace <code>package-name</code> with the name of whatever package you&#8217;re looking for. </p>



<p>In most cases, adding <code>--depth 0</code> isn&#8217;t necessary. But in rare cases, the global package you&#8217;re searching for is <em>also</em> a dependency of other globally installed packages. When this happens, you&#8217;ll see the package you want, but you&#8217;ll also see a partial dependency tree of all of the packages that <em>use</em> the package you&#8217;re searching for. </p>



<p>Adding <code>--depth 0</code> eliminates this problem. Feel free to leave that part out and only add it if you need it. </p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/how-to-find-the-version-of-a-globally-installed-npm-package/">How to find the version of a globally installed NPM package</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/how-to-find-the-version-of-a-globally-installed-npm-package/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">171</post-id>	</item>
		<item>
		<title>WebStorm vs Visual Studio Code</title>
		<link>https://ryanpeden.com/webstorm-vs-visual-studio-code/</link>
					<comments>https://ryanpeden.com/webstorm-vs-visual-studio-code/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Fri, 20 Dec 2019 02:07:41 +0000</pubDate>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[VS Code]]></category>
		<category><![CDATA[WebStorm]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=168</guid>

					<description><![CDATA[<p>I often see developers comparing JetBrains WebStorm and Visual Studio Code. There&#8217;s often some argument about which one is better. Since is the internet and every else shares their opinion here, I figure I&#8217;ll do the same. Here&#8217;s what I think: I love VS Code and use it every day.</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/webstorm-vs-visual-studio-code/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/webstorm-vs-visual-studio-code/">WebStorm vs Visual Studio Code</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I often see developers comparing <a href="https://www.jetbrains.com/webstorm/">JetBrains WebStorm</a> and <a href="https://code.visualstudio.com/">Visual Studio Code</a>. There&#8217;s often some argument about which one is better. Since is the internet and every else shares their opinion here, I figure I&#8217;ll do the same. Here&#8217;s what I think:</p>



<p>I love VS Code and use it every day.</p>



<p>But I often like JetBrains&#8217; IDEs even more, because when I&#8217;m really in the zone it feels like I&#8217;m pair programming with a psychic. If I know a symbol (class, function, constant, whatever) is defined <em>somewhere</em> in my code, or in a library my project can see&#8230;I just start typing the name of the thing I want to use, even if I haven&#8217;t imported it into the file I&#8217;m working on.</p>



<p>99 times out of 100, WebStorm (or PyCharm, or IntelliJ, or Rider, depending on what language I&#8217;m working in) knows what I intended to use well before I&#8217;m done typing it. So with a single keystroke, I&#8217;m able to autocomplete the line I&#8217;m typing, and the IDE will, if necessary, auto-add the import to the file I&#8217;m in so I don&#8217;t have to do that manually.</p>



<p>At various times I&#8217;ve come close to this experience in VS Code &#8211; but it varies a lot based on the language. The code indexing and intelligent code completion in the JetBrains IDEs just seems very in tune with my thinking and my workflow, and it&#8217;s very consistent across languages&#8230;whether I&#8217;m working in JS, Java, Python, C#, or TypeScript, the overall experience has the same smooth &#8220;feel&#8221; to it. So I&#8217;m very aware that my positive experience with these IDEs may be very specific to the way my brain is wired.</p>



<p>I find that the JetBrains IDEs also have better debuggers and better profiling tools.</p>



<p>That&#8217;s not to take anything away from VS Code. As I mentioned, I love it. Most days, I&#8217;ve got a JetBrains IDE and VS Code open at the same time, and often on the same codebase. VS Code feels a lot snappier and is quicker to start up. Some days I&#8217;m just in a VS Code sort of mood, and it&#8217;s the only thing I use.</p>



<p>If I&nbsp;<em>had</em>&nbsp;to pick one and couldn&#8217;t use the other&#8230;I suppose I&#8217;d pick IntelliJ/WebStorm. But if I had no choice but to use VS Code exclusively, I&#8217;d still be a happy camper. I think they&#8217;re both awesome tools and I&#8217;m happy I live in a world where I can use both of them.</p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/webstorm-vs-visual-studio-code/">WebStorm vs Visual Studio Code</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/webstorm-vs-visual-studio-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">168</post-id>	</item>
		<item>
		<title>Thoughts on SQL Query Builders and ORMs</title>
		<link>https://ryanpeden.com/thoughts-on-sql-query-builders-and-orms/</link>
					<comments>https://ryanpeden.com/thoughts-on-sql-query-builders-and-orms/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Fri, 20 Dec 2019 02:02:46 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[knex.js]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[query builder]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=165</guid>

					<description><![CDATA[<p>Are SQL query builder libraries and ORMs more trouble than they&#8217;re worth? A couple of days ago, I read Stop using Knex.js via a link on Reddit. I understand the point the author is trying to make. And I used to be pretty firmly opposed to ORMs and query builders.</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/thoughts-on-sql-query-builders-and-orms/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/thoughts-on-sql-query-builders-and-orms/">Thoughts on SQL Query Builders and ORMs</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Are SQL query builder libraries and ORMs more trouble than they&#8217;re worth? A couple of days ago, I read <a href="https://medium.com/@gajus/stop-using-knex-js-and-earn-30-bf410349856c">Stop using Knex.js</a> via a link on Reddit. </p>



<p>I understand the point the author is trying to make. And I used to be pretty firmly opposed to ORMs and query builders.</p>



<p>I like SQL a lot. In one of the large applications I&#8217;ve worked on, every database option from basic CRUD to very complex queries happened in stored procedures in the database. While it was a tad tedious sometimes, it was also really damn fast. And I wrote a heck of a lot of SQL.</p>



<p>But over time, I&#8217;ve come to appreciate the benefits of a full-featured ORM. I think ORMs can be great tools for developers who have lived and breathed SQL for a while. Then, you can reasonably infer what the ORM is going to do under the hood.</p>



<p>Recently, I worked on a new .NET Core project. I used Entity Framework Core with it. I could&#8217;ve written a SQL script to create all the tables for me, but instead, I created my data model in C#, and then let EF Core generate the migrations to create the database tables.</p>



<p>And to be honest, I found that using C# as a notation for describing my tables and relationships between them nicer than using SQL to do it. But if I hadn&#8217;t spent a decent amount of time learning how to create normalized relation data models using SQL, I probably would&#8217;ve done a crappy job of expressing my data model in C#. So I suppose that understanding the relational nature of relational databases is the key here. Using SQL sort of forces you to think relationally. And as a bonus, I ended up with a nice set of C# classes that I can use in my application.</p>



<p>On the query builder side of things, EF Core is pretty darn good. I can generally predict what SQL it&#8217;s going to generate. And if it ever does go off the rails, EF Core offers a raw SQL escape hatch. You just give it the SQL query, tell it what class to map the query back to, and things generally just work. Sure, there are times where I could write better SQL than EF Core generates. But in most cases, the difference isn&#8217;t big enough to matter. And when it <em>does</em> matter, the hand-crafted SQL usually tends to be a short-lived fix. Before long, you&#8217;re on the road to super-fast Redis caching. So the faster SQL doesn&#8217;t end up mattering.</p>



<p>Query builders and ORMs are tools that can be used badly or used poorly. It&#8217;s easy to get into trouble if you use them as a crutch because you don&#8217;t really understand how the relational data you&#8217;re using works. But if you <em>do</em> have a solid grasp of relational fundamentals, you can use ORMs and query builders as force multipliers.</p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/thoughts-on-sql-query-builders-and-orms/">Thoughts on SQL Query Builders and ORMs</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/thoughts-on-sql-query-builders-and-orms/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">165</post-id>	</item>
		<item>
		<title>Is Software Development a Stressful Career?</title>
		<link>https://ryanpeden.com/is-software-development-a-stressful-career/</link>
					<comments>https://ryanpeden.com/is-software-development-a-stressful-career/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Fri, 20 Dec 2019 01:48:27 +0000</pubDate>
				<category><![CDATA[Advice]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=156</guid>

					<description><![CDATA[<p>Software development can, at times, seem like a stressful, thankless career. A recent discussion thread on Reddit got me thinking and reflecting back on the decade I&#8217;ve been working as a software developer. Some people seemed to lament the fact that working as a developer can feel like a thankless</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/is-software-development-a-stressful-career/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/is-software-development-a-stressful-career/">Is Software Development a Stressful Career?</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Software development can, at times, seem like a stressful, thankless career. A <a href="https://www.reddit.com/r/programming/comments/eceqxu/how_to_manage_your_endless_backlog_as_a_software/">recent discussion thread</a> on Reddit got me thinking and reflecting back on the decade I&#8217;ve been working as a software developer. Some people seemed to lament the fact that working as a developer can feel like a thankless task with a backlog that never ends. </p>



<p>A new soon-to-be Computer Science grad mentioned that the found the thread depressing. They seemed to feel like they&#8217;d made a mistake and had a bleak future ahead of them. </p>



<figure class="wp-block-image size-large is-style-circle-mask"><img decoding="async" loading="lazy" width="1000" height="667" data-attachment-id="159" data-permalink="https://ryanpeden.com/is-software-development-a-stressful-career/adult-alone-black-and-white-dark-551588-1/" data-orig-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2019/12/adult-alone-black-and-white-dark-551588-1.jpg?fit=7360%2C4912&amp;ssl=1" data-orig-size="7360,4912" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="adult-alone-black-and-white-dark-551588-1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2019/12/adult-alone-black-and-white-dark-551588-1.jpg?fit=300%2C200&amp;ssl=1" data-large-file="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2019/12/adult-alone-black-and-white-dark-551588-1.jpg?fit=1000%2C667&amp;ssl=1" src="https://i0.wp.com/ryanpeden.com/wp-content/uploads/2019/12/adult-alone-black-and-white-dark-551588-1.jpg?resize=1000%2C667&#038;ssl=1" alt="A very stressed out human" class="wp-image-159" data-recalc-dims="1"/></figure>



<h2 class="wp-block-heading">What should you do?</h2>



<p></p>



<p>To anyone feeling the same way, here&#8217;s what I&#8217;d advise:</p>



<p>Keep in mind that no matter what career you&#8217;re in, there are both good workplaces and terrible ones. Before becoming a developer 10 years ago, I worked in corporate accounting and it was the same there.</p>



<p>The best advice I&#8217;ve ever been given was to scrimp and save and set aside 6 months of living expenses if you can. That gives you the ability to play a bit of hardball when it comes to asking for improvements to bad work environments because it&#8217;s easier for you to walk if you don&#8217;t get what you&#8217;re asking for.</p>



<p>I&#8217;m fortunate to work at a place now where playing hardball like that isn&#8217;t necessary. People are nice. The work is interesting. The schedules are reasonable. And I&#8217;m pretty sure I&#8217;m not the only one who has ended up in a great workplace.</p>



<p>So as a new grad, try not to feel depressed. Just remember that there are good workplaces and bad ones. Sure, software development can be stressful at times. But I&#8217;d be worried if I were in a career where I never feel stressed at all, because that would mean I&#8217;m probably not being pushed or challenged professionally. And lack of challenge quickly leads to boredom. </p>



<p></p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/is-software-development-a-stressful-career/">Is Software Development a Stressful Career?</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/is-software-development-a-stressful-career/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">156</post-id>	</item>
		<item>
		<title>JavaScript Array Push Performance</title>
		<link>https://ryanpeden.com/array-prototype-push-performance/</link>
					<comments>https://ryanpeden.com/array-prototype-push-performance/#respond</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Mon, 07 Oct 2019 16:37:33 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=7</guid>

					<description><![CDATA[<p>This is a short response I wrote to a question on /r/javascript. The user who asked it was curious whether there would be any performance difference between adding elements to a JavaScript array by calling push, or manually adding a new object to an array by making a call like&#160;myArray[myArray.length]</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/array-prototype-push-performance/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/array-prototype-push-performance/">JavaScript Array Push Performance</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>This is a short response I wrote to <a href="https://www.reddit.com/r/javascript/comments/a3qxjj/hello_all_im_a_jr_dev_and_ive_never_dealt_with/">a question on /r/javascript</a>. The user who asked it was curious whether there would be any performance difference between adding elements to a JavaScript array by calling <code>push</code>, or manually adding a new object to an array by making a call like&nbsp;<code>myArray[myArray.length] = obj</code>. Let&#8217;s take a look at the <a href="https://www.ecma-international.org/ecma-262/6.0/">ECMAScript specification</a> to see what it says.&nbsp;&nbsp;</p>



<p>In the case of&nbsp;<a rel="noreferrer noopener" target="_blank" href="https://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.push">Array.prototype.push</a>, the JS runtime must first call&nbsp;<code>toObject</code>&nbsp;on the argument passed to&nbsp;<code>push</code>. It must also do a bit of work to handle the case where more than one item was passed to&nbsp;<code>push</code>, since you are allowed to make a call like this:&nbsp;<code>abc.push(1,2,3)</code>. After from calling&nbsp;<code>toObject</code>&nbsp;and checking how many arguments were provided, it then goes through each one and does a regular property set call, which ends doing the same as&nbsp;<code>myArray[myArray.length] = obj</code>.</p>



<p>If you&#8217;re only adding one thing to your array, you may as well call&nbsp;<code>push</code>, since it is easier to read and the&nbsp;<code>toObject</code>&nbsp;call and args length check is going to make an immeasurably small difference to execution time.</p>



<p>If you&#8217;re adding multiple things to your array, then call&nbsp;<code>myArray.push(...things)</code>. because when you do that, the JS engine&#8217;s compiled C++ will handle all of the iteration, instead of thunking back and forth between native code and JavaScript if you&#8217;re looping through yourself and calling&nbsp;<code>push</code>&nbsp;every time. In reality, with all of the optimization and JITing that modern JS engines do, looping through yourself probably isn&#8217;t all that much slower than passing everything to&nbsp;<code>push</code>at once. I haven&#8217;t tested this to verify, though.</p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/array-prototype-push-performance/">JavaScript Array Push Performance</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/array-prototype-push-performance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7</post-id>	</item>
		<item>
		<title>JavaScript indexOf vs includes performance</title>
		<link>https://ryanpeden.com/javascript-indexof-vs-includes-performance/</link>
					<comments>https://ryanpeden.com/javascript-indexof-vs-includes-performance/#comments</comments>
		
		<dc:creator><![CDATA[Ryan Peden]]></dc:creator>
		<pubDate>Wed, 28 Aug 2019 12:02:16 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://ryanpeden.com/?p=21</guid>

					<description><![CDATA[<p>This is a short response I wrote to&#160;a question on /r/javascript. The user who asked it was curious whether there would be any performance difference between using a JavaScript string&#8217;s indexOf vs includes performance when trying to find a substring within a larger string.&#160; Let’s take a look at the&#160;ECMAScript</p>
<div class="belowpost"><a class="btnmore icon-arrow" href="https://ryanpeden.com/javascript-indexof-vs-includes-performance/"><span>Read More</span></a></div>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/javascript-indexof-vs-includes-performance/">JavaScript indexOf vs includes performance</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>This is a short response I wrote to&nbsp;<a href="https://www.reddit.com/r/javascript/comments/a3qxjj/hello_all_im_a_jr_dev_and_ive_never_dealt_with/">a question on /r/javascript</a>. The user who asked it was curious whether there would be any performance difference between using a JavaScript string&#8217;s <code>indexOf</code> vs <code>includes</code> performance when trying to find a substring within a larger string.&nbsp;</p>



<p>Let’s take a look at the&nbsp;<a href="https://www.ecma-international.org/ecma-262/6.0/">ECMAScript specification</a>&nbsp;to see what it says.&nbsp;&nbsp;</p>



<p>In the case of&nbsp;<code>indexOf</code>&nbsp;vs&nbsp;<code>includes</code>, you&#8217;ll find them right next to each other&nbsp;<a rel="noreferrer noopener" target="_blank" href="https://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.includes">here in the ECMAScript spec</a>. The only difference is that&nbsp;<code>includes</code>&nbsp;checks if you&#8217;ve passed it a regular expression instead of a string, and throws an exception if you have.&nbsp;<code>indexOf</code>&nbsp;will accept a regular expression but always return -1, which isn&#8217;t too helpful.</p>



<p>So while&nbsp;<code>includes</code>&nbsp;will be a tiny, tiny amount slower because it has to check if you passed it a regex, in reality this will make no difference to how fast your code runs. You should use&nbsp;<code>indexOf</code>&nbsp;if you care about&nbsp;<em>where</em>&nbsp;the substring is in the original string. If you don&#8217;t care, just call&nbsp;<code>includes</code>&nbsp;because it makes the intent of your code more clear.</p>



<p>You should also consider that&nbsp;<code>indexOf</code>&nbsp;won&#8217;t find the location of&nbsp;<code>NaN</code>&nbsp;values in an Array. For cases where you really need to find the first location of something that&nbsp;<code>indexOf</code>&nbsp;can&#8217;t find, and you don&#8217;t want to loop the array through yourself, then&nbsp;<code>Array.prototype.findIndex</code>&nbsp;is your friend. You can pass it a function that returns true when it sees the value you&#8217;re looking for. So&nbsp;<code>[1, 2, 3, NaN, 4].findIndex(Number.isNaN)</code>&nbsp;would return 3.</p>



<p>The verdict: in most cases, in terms of JavaScript <code>indexOf</code> vs <code>include</code> performance it doesn&#8217;t matter much whether you use index vs includes. You should pick the one that&#8217;s the clearest fit for the problem you&#8217;re trying to solve. </p>



<p><strong>If you liked this, you might like these other articles I&#8217;ve written:</strong><br><a href="https://www.grapecity.com/blogs/using-web-components-with-react-2019">Using Web Components with React in 2019</a> <br><a href="https://www.grapecity.com/blogs/angular-roadmap-the-past-present-and-future-of-angular">An Angular Roadmap &#8211; The Past, Present, and Future of Angular</a> <br><a href="https://ryanpeden.com/how-do-javascript-arrays-work-under-the-hood/">How do JavaScript Arrays Work Under the Hood?     </a>                  </p>
<p>The post <a rel="nofollow" href="https://ryanpeden.com/javascript-indexof-vs-includes-performance/">JavaScript indexOf vs includes performance</a> appeared first on <a rel="nofollow" href="https://ryanpeden.com">Ryan Peden</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ryanpeden.com/javascript-indexof-vs-includes-performance/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">21</post-id>	</item>
	</channel>
</rss>
