<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Antonio Cangiano</title>
    <description>The latest articles on DEV Community by Antonio Cangiano (@acangiano).</description>
    <link>https://dev.to/acangiano</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F20474%2F26f99a70-51a8-42c5-9576-29a87cd5c7c4.jpg</url>
      <title>DEV Community: Antonio Cangiano</title>
      <link>https://dev.to/acangiano</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/acangiano"/>
    <language>en</language>
    <item>
      <title>25 Pitfalls When Learning to Program</title>
      <dc:creator>Antonio Cangiano</dc:creator>
      <pubDate>Thu, 09 Nov 2017 21:47:41 +0000</pubDate>
      <link>https://dev.to/acangiano/25-pitfalls-when-learning-to-program-1lm2</link>
      <guid>https://dev.to/acangiano/25-pitfalls-when-learning-to-program-1lm2</guid>
      <description>&lt;p&gt;I’m going to share with you what I see as “25” common pitfalls when learning to program (or working towards mastering programming). Many of these points affect both beginners and professionals alike — myself very much included.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0.&lt;/strong&gt; Forgetting that &lt;strong&gt;programming is all about people&lt;/strong&gt;. Yes, the machine will execute your code, but programming is solving problems for people, translating their requirements into code that will be read, maintained, and modified by other people (or yourself down the line).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt;  &lt;strong&gt;Not spending enough time programming&lt;/strong&gt;. Depending on your job or schedule, you might spend a lot of time on tasks that are related to programming but aren’t actually programming itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt;  &lt;strong&gt;Stopping at the surface&lt;/strong&gt; of a given technology you’re learning. Feeling satisfied with having mastered the basics just enough to get stuff done, without ever exploring further or going behind the scenes all that much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt;  &lt;strong&gt;The Magpie approach&lt;/strong&gt; to learning programming. You start learning Rails, half-way through you realize that Phoenix is out there, oh and you need to learn JavaScript so you might as well go with Node.js. But wait... &lt;a href="https://medium.com/@tjholowaychuk/farewell-node-js-4ba9e7f3e52b" rel="noopener noreferrer"&gt;TJ switched to Go&lt;/a&gt;, and hold on… what about Rust? Soon enough your browser history will have, “web development or data science career”, “is Clojure dead?”, “Clojure vs Elixir”, “is Crystal mature enough”, “any good frameworks for Golang”, “Phoenix vs Buffalo” and “Kotlin for web development” all in the same week. :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; Reading books and watching courses online but &lt;strong&gt;not practicing the skills&lt;/strong&gt; presented, therefore quickly forgetting about them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5&lt;/strong&gt;. &lt;strong&gt;Skipping fundamentals&lt;/strong&gt;. So you end up learning about continuation-passing style (CPS) but still can’t do SQL joins without an object-relational mapper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt;  &lt;strong&gt;Not enough patience&lt;/strong&gt; or discipline to progress through the learning process and steps required to master any technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7.&lt;/strong&gt;  &lt;strong&gt;No clear map or schedule for continuing to learn&lt;/strong&gt; through available resources, while you tackle more immediate challenges in your day-to-day programming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8.&lt;/strong&gt;  &lt;strong&gt;Analysis paralysis&lt;/strong&gt;, wasting way too much time choosing amongst various frameworks and libraries (like Angular, React, and Vue), rather than just picking one, using it, and switching to something else only if you actually need to do so. Basically being a &lt;a href="https://www.psychologistworld.com/cognitive/maximizers-satisficers-decision-making" rel="noopener noreferrer"&gt;maximizer instead of a satisficer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9.&lt;/strong&gt; Refusing the polyglot nature of modern-day programming. In most domains, it isn’t reasonable to expect one programming language to be the best fit for every problem. Likewise, &lt;strong&gt;identifying too much as an X or Y programmer&lt;/strong&gt;, rather than just a programmer who prefers X or Y.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10.&lt;/strong&gt;  &lt;strong&gt;Fear of experimenting with new technology&lt;/strong&gt;. Rather than just reading about certain emerging technologies (e.g., blockchain or &lt;a href="https://cognitiveclass.ai/courses/how-to-build-a-chatbot/" rel="noopener noreferrer"&gt;chatbots&lt;/a&gt;), actually firing up a VM to try them out yourself, even if it involves getting your hands dirty with a programming language or API you are not familiar with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11.&lt;/strong&gt;  &lt;strong&gt;Expecting to know everything upfront&lt;/strong&gt;. Being disappointed after finding pointers to the solution via Google, because you didn’t come up with an elegant solution entirely on your own and kicking yourself while thinking, “I should have thought of that myself”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12.&lt;/strong&gt;  &lt;strong&gt;Not creating many small katas&lt;/strong&gt;, exercises, and projects while learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13.&lt;/strong&gt;  &lt;strong&gt;Fear of sharing code&lt;/strong&gt; with others or getting code reviews, lest you be judged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14.&lt;/strong&gt;  &lt;strong&gt;Not seeking one-on-one mentorship&lt;/strong&gt; from more experienced developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15.&lt;/strong&gt; Expecting to learn everything at once with &lt;strong&gt;unrealistic timelines&lt;/strong&gt; (e.g., master iOS development in a month).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;16.&lt;/strong&gt; For the more entrepreneur-minded, &lt;strong&gt;not exploring cool projects because they don’t have a clear path to revenue generation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;17.&lt;/strong&gt; Not asking questions for &lt;strong&gt;fear of coming across as stupid&lt;/strong&gt; or as more of a newbie than you actually are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;18.&lt;/strong&gt; Feeling like you are not a real programmer if you’re creating apps by gluing high-level libraries together, in a high-level language instead of doing “hardcore” algorithms in more complex languages. I dub this &lt;strong&gt;low-level programming envy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;19.&lt;/strong&gt;  &lt;strong&gt;Allowing the desire to learn best practices to hinder your ability to grasp the fundamentals&lt;/strong&gt; of a given language or technology. For example, feeling like you need to learn a whole book on design patterns or master TDD/BDD before you start creating projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;20.&lt;/strong&gt; Perfectionism. &lt;strong&gt;Letting perfect be the enemy of good enough.&lt;/strong&gt; Never shipping anything, getting stuck in the “final touches” phase. (But balance is important, so don’t ship horribly broken software for the sake of shipping.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;21.&lt;/strong&gt; Related to the previous point, &lt;strong&gt;ignoring the progression: make it work, make it faster, make it clean&lt;/strong&gt;. Instead, expecting a polished solution from the get-go. It’s important to accept that the first iteration will be a rough draft to improve upon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;22.&lt;/strong&gt;  &lt;strong&gt;Impostor Syndrome&lt;/strong&gt;. Feeling that you aren’t good enough. This is particularly bad if you don’t fit the current developer stereotype, as a lack of role models that you can relate with might mistakenly confirm your doubts. This is part of why women and minorities representation in tech is so key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;23.&lt;/strong&gt; Writing code and learning about programming from books, but &lt;strong&gt;never reading other people’s code&lt;/strong&gt;. Open Source gives us an amazing resource that can drastically speed up our understanding of programming and best practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;24.&lt;/strong&gt;  &lt;strong&gt;Not getting exposed to other paradigms or domains&lt;/strong&gt;. If you’re a web developer, not learning about other types of development. If you know Object-Oriented programming, not learning about Functional programming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;25.&lt;/strong&gt;  &lt;strong&gt;Not teaching others what you learn&lt;/strong&gt;. Nothing will solidify what you learn as well as trying to explain it to others. Even just studying with the intention of teaching will increase your ability to learn.&lt;/p&gt;

&lt;p&gt;There you have it… &lt;em&gt;25&lt;/em&gt; pitfalls. Oh, don’t forget off-by-one errors, too. ;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;All this to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You’re good enough. You can definitely do it. Just watch out for these pitfalls, make a plan, commit to it, then take it one step at the time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When learning to program (or improving your current mastery of it), I recommend the code/read/teach method. Code one real project, and many small exercises/katas as you learn. Read books but also other people’s code. Finally, teach what you learn online and in person. You don’t need to be an expert to do so.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fprogrammingzen.com%2Fwp-content%2Fuploads%2F2017%2F11%2Flearning-to-program.gif%3Fresize%3D701%252C271%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fprogrammingzen.com%2Fwp-content%2Fuploads%2F2017%2F11%2Flearning-to-program.gif%3Fresize%3D701%252C271%26ssl%3D1" title="Learning to program" alt="Learning to program"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this is somewhat useful. If it is, feel free to share the link online. It’s a list that I, myself, plan to reread once in a while.&lt;/p&gt;

&lt;p&gt;Initially, I shared these thoughts on learning to program as &lt;a href="https://twitter.com/acangiano/status/928316815876300800" rel="noopener noreferrer"&gt;a series of tweets&lt;/a&gt;, but Twitter’s UI had some issues displaying them as a single thread. So I’m reposting them here as a post.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://programmingzen.com/pitfalls-when-learning-to-program/" rel="noopener noreferrer"&gt;25 Pitfalls When Learning to Program&lt;/a&gt; appeared first on &lt;a href="https://programmingzen.com" rel="noopener noreferrer"&gt;Programming Zen&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>howtobecomeaprog</category>
      <category>learningtoprogram</category>
    </item>
    <item>
      <title>So You Want Your Programming Language to Be Popular</title>
      <dc:creator>Antonio Cangiano</dc:creator>
      <pubDate>Thu, 18 Aug 2016 20:32:10 +0000</pubDate>
      <link>https://dev.to/acangiano/so-you-want-your-programming-language-to-be-popular-71i</link>
      <guid>https://dev.to/acangiano/so-you-want-your-programming-language-to-be-popular-71i</guid>
      <description>

&lt;p&gt;Some programming languages become popular. Others don’t. Why is that? Are the popular languages better than the obscure ones?[1] It’s more complicated than that, so let’s grab a long stick and poke at this hornet’s nest.&lt;/p&gt;

&lt;h2&gt;Define popular&lt;/h2&gt;

&lt;p&gt;To start off on the wrong foot, there isn’t really a consensus on the popularity of programming languages. There are various efforts to rank them based on Google searches, StackOverflow questions, GitHub repositories, and so on.&lt;/p&gt;

&lt;p&gt;Depending on which heuristics you consider and how you weigh them in your ranking, you’ll end up being biased in favor or against certain languages.&lt;/p&gt;

&lt;p&gt;For example, there is an obvious correlation between the popularity of a programming language and the number of relevant questions on StackOverflow. However, all things being equal, this metric will penalize simpler and better-documented languages.&lt;/p&gt;

&lt;p&gt;If you take GitHub repositories as an indicator of popularity, you’ll penalize languages for which code tends to be hosted elsewhere. The same applies for languages that are not widely used in the open source world, of course.&lt;/p&gt;

&lt;p&gt;Thankfully, we don’t need exact rankings in order to have a meaningful conversation. Let’s just agree that the ballpark definition of “popular”, as far as this article goes, is making the cut in the top 20 on the &lt;a href="https://www.tiobe.com/tiobe-index/"&gt;TIOBE index&lt;/a&gt; or the &lt;a href="https://redmonk.com/sogrady/2016/02/19/language-rankings-1-16/"&gt;Redmonk index&lt;/a&gt;.[2]&lt;/p&gt;

&lt;h2&gt;Are popular programming languages better?&lt;/h2&gt;

&lt;p&gt;Popular languages are not necessarily better than less popular ones.&lt;/p&gt;

&lt;p&gt;I would argue that the Lisp family is, in many respects, one of the best family of languages. It is, by our definition above, marginally popular at best.&lt;/p&gt;

&lt;p&gt;Without any intent of starting a flame war, I feel obliged to point out that PHP is one of the most popular programming languages in the world.&lt;/p&gt;

&lt;p&gt;Technical merit alone doesn’t separate the winners from the losers. Let’s see what does.&lt;/p&gt;

&lt;h2&gt;Default languages&lt;/h2&gt;

&lt;p&gt;Several of the most popular languages in the list(s) are what I would define as &lt;em&gt;default languages&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Default languages are the natural go-to language for a given platform.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;C&lt;/strong&gt; is the default language for Unix system programming;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript&lt;/strong&gt; is the default language for web browsers;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQL&lt;/strong&gt; is the default query language for relational databases;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Java&lt;/strong&gt; is the default language for Android apps;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swift&lt;/strong&gt; (and before that, Objective-C) is the default language for iOS and Mac applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Default languages are popular because anyone who is interested in developing in a given ecosystem will simply default to them.&lt;/p&gt;

&lt;p&gt;They have a massive advantage over alternative languages.&lt;/p&gt;

&lt;p&gt;Using something else requires research and effort. To borrow an example from within the tech world as well, BASH is far more popular than the arguably superior ZSH and FISH shells, simply because it’s the default on so many *nix systems.&lt;/p&gt;

&lt;h2&gt;Languages backed by tech giants&lt;/h2&gt;

&lt;p&gt;Another category of popular languages are languages backed by tech giants.&lt;/p&gt;

&lt;p&gt;Note that it is not merely sufficient to be backed by a large tech company. Think Google and Dart (particularly prior to Flutter). No, to make it popular, the company must put their weight behind the language.&lt;/p&gt;

&lt;p&gt;Microsoft pushed C# so hard that it virtually became a default language for Windows programming.&lt;/p&gt;

&lt;h2&gt;Large standard libraries&lt;/h2&gt;

&lt;p&gt;With the exception of select default languages that rely on their positional advantage, most popular languages have a large standard library.&lt;/p&gt;

&lt;p&gt;You need to have one in order to appeal to the initial seed group of developers who will, in turn, help you grow the ecosystem of libraries.&lt;/p&gt;

&lt;p&gt;Python is the perfect example of this. Its “batteries included” philosophy made it useful from a very early stage. A great seed for the vast library ecosystem that would develop.&lt;/p&gt;

&lt;p&gt;Often new languages that have emerged and become popular in recent years have leveraged existing platforms as a mean to provide a large standard library and a well-sized ecosystem of libraries right off the bat.&lt;/p&gt;

&lt;p&gt;The most common examples are languages for the JVM, such as Scala, Clojure, and Groovy.&lt;/p&gt;

&lt;p&gt;Give it a few more years and Elixir might become an example of a popular language on BEAM (the Erlang Virtual Machine).&lt;/p&gt;

&lt;h2&gt;Paradigm shifts&lt;/h2&gt;

&lt;p&gt;Sometimes programming languages become popular because they provided an answer to a particular paradigm shift within the industry.&lt;/p&gt;

&lt;p&gt;OOP (e.g., C++, Java), the emergence of the web (e.g., JavaScript, Perl, PHP), mobile programming (e.g., Objective-C, Swift, and more recently Kotlin to some degree), the emergence of data science (e.g., R), come to mind.&lt;/p&gt;

&lt;p&gt;Paradigm shifts don’t occur too often, but when they do, they open the door to new languages.&lt;/p&gt;

&lt;p&gt;Right now, functional languages have a shot at widespread adoption. In part, because they work so well within an increasingly concurrent and parallel world.[3]&lt;/p&gt;

&lt;h2&gt;Killer apps&lt;/h2&gt;

&lt;p&gt;Which bring us to another reason why some languages succeed in terms of adoption.&lt;/p&gt;

&lt;p&gt;Having an absolute killer application within a given domain.&lt;/p&gt;

&lt;p&gt;Ruby is the poster child of this. Outside of Japan, it was a largely ignored language for a decade or so before it started to gain traction elsewhere.&lt;/p&gt;

&lt;p&gt;Then Rails came along – and it was a very compelling proposition for web development.[4] People were impressed enough that they were willing to study this little-known language called Ruby, simply because of Rails.&lt;/p&gt;

&lt;p&gt;And when they did, they discovered what a nice little language it was. Its technical merits were fundamental to its adoption (and the reason why DHH picked it up for Rails), but not sufficient on their own.[5]&lt;/p&gt;

&lt;p&gt;It’s not an overly common scenario, but languages which provide a better answer to a specific problem within a popular domain can experience huge gains in popularity.&lt;/p&gt;

&lt;h2&gt;What else helps? Marketing.&lt;/h2&gt;

&lt;p&gt;Marketing helps. A community that doesn’t shy away from good technical marketing will undoubtedly help the language become more popular.&lt;/p&gt;

&lt;p&gt;Note that marketing is a very encompassing term. Great documentation is good marketing. Not having to spend an hour installing things just to get started is arguably part of your approach to marketing.&lt;/p&gt;

&lt;p&gt;Being accepting, inclusive, and welcoming to newcomers is good marketing. Blogging, organizing conferences, giving speeches at other conferences, writing great books, are all good examples of things a marketing-oriented community does.&lt;/p&gt;

&lt;h2&gt;What else? Familiarity.&lt;/h2&gt;

&lt;p&gt;Familiarity is very important. If your programming language is radically different from anything that the majority of developers are used to, it will struggle to become widely adopted.&lt;/p&gt;

&lt;p&gt;So it has to toe the line. It has to be innovative enough to make it worthwhile, but familiar enough that it won’t immediately induce a negative gut reaction the moment a new developer approaches it.&lt;/p&gt;

&lt;p&gt;This is a struggle numerous Lisp languages have had to face. Most developers are familiar with the Algol/C syntax, however, S-Expressions are somewhat scary and foreign to many.[6]&lt;/p&gt;

&lt;p&gt;Because of this, although functional languages have a shot this time around, it won’t be an easy sell.&lt;/p&gt;

&lt;h2&gt;Anything else? Time.&lt;/h2&gt;

&lt;p&gt;Programming languages don’t become popular overnight. It takes years, no matter how you slice it.&lt;/p&gt;

&lt;p&gt;Most languages take at least 10 years to become widely adopted. Adoption rates are getting faster in recent years, but this process still takes quite a while (several years).&lt;/p&gt;

&lt;p&gt;The most obvious exception is Swift, with its meteoric rise over the course of just a couple of years of its introduction. Not only Swift is backed by Apple, it was also made into a default language for one of the most popular development ecosystems in the world.&lt;/p&gt;

&lt;p&gt;So if you’re a programming language developer or an early adopter of a language that you wish to see become more popular, be patient. You’re in this for the long haul.&lt;/p&gt;

&lt;h2&gt;Popularity ain’t easy&lt;/h2&gt;

&lt;p&gt;It’s really hard to make a programming language popular.&lt;/p&gt;

&lt;p&gt;The competition is fierce, with so many valid options available to developers.&lt;/p&gt;

&lt;p&gt;As we asymptomatically approach all that programming languages can be, it is even harder to create something that’s so very much better than it’s worth making the leap to.&lt;/p&gt;

&lt;p&gt;Developers need compelling and convincing reasons to jump ship or even just consider investing time in your language and community.&lt;/p&gt;

&lt;p&gt;Consider for a moment why a programmer would want to learn a language that is new to them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To get or keep a job;&lt;/li&gt;
&lt;li&gt;To become more productive and/or write better software;&lt;/li&gt;
&lt;li&gt;To develop a new category of applications;&lt;/li&gt;
&lt;li&gt;To learn a new paradigm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your language can satisfy at least some of these needs, it will have a chance. But this only buys you admission to the race.&lt;/p&gt;

&lt;h2&gt;Conclusions&lt;/h2&gt;

&lt;p&gt;In summary, I believe these are the key factors to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Being a default language for a popular ecosystem;&lt;/li&gt;
&lt;li&gt;Being backed and promoted by a tech giant;&lt;/li&gt;
&lt;li&gt;Having a large standard library and/or targeting a popular VM (e.g., JVM, unless it’s a system language like Rust);&lt;/li&gt;
&lt;li&gt;Fully embodying a new paradigm shift;&lt;/li&gt;
&lt;li&gt;Being very useful in a particular domain, like Ruby did through Rails back in 2005;&lt;/li&gt;
&lt;li&gt;Having great documentation, guidance for newcomers, tools, editor integration, and in general removing any instrumentation obstacle that makes getting started with your language difficult;&lt;/li&gt;
&lt;li&gt;Fostering a welcoming and inclusive community that encourages sharing, marketing, and evangelism;[7]&lt;/li&gt;
&lt;li&gt;Having a somewhat familiar syntax that is easy to read, write, and teach;&lt;/li&gt;
&lt;li&gt;Being active and developed for several years;&lt;/li&gt;
&lt;li&gt;Providing technical innovations that lead to productivity and more maintainable code;&lt;/li&gt;
&lt;li&gt;Luck.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first two are out of the question for most languages, and even then, few languages will meet all of the remaining requirements.&lt;/p&gt;

&lt;p&gt;Even embracing just a few of these should, however, be enough to grant your language a chance at becoming mainstream.&lt;/p&gt;

&lt;p&gt;Failing that, you might still be left with an active, niche language that will survive and be appreciated by many developers for decades to come.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;It’s worth noting that this same question can be posed in wildly different fields. What makes certain musicians popular? How about cars? In this article, though I will discuss my thoughts on programming languages in particular.  ^&lt;/li&gt;
&lt;li&gt;An alternative heuristic is to consider a language as being popular if there are multiple current books on the subject published by the most prominent tech publishers such as O’Reilly, Wrox, The Pragmatic Bookshelf, Addison-Wesley, No Starch, Manning, etc.  ^&lt;/li&gt;
&lt;li&gt;In part, because we have come to appreciate some of their features that were incorporated in more mainstream languages.  ^&lt;/li&gt;
&lt;li&gt;Whatever you think of Rails today, it has significantly affected the world of web development for the past ten plus years, almost regardless of the language you develop in.  ^&lt;/li&gt;
&lt;li&gt;I have said before elsewhere that Rails is both a blessing and a curse for Ruby. It’s a massive blessing because Ruby owes so much of its popularity to Rails. It’s a curse because such a focus on web development within its community has led to limited applicability outside of the realm of web development. Python was spared by such a fate.  ^&lt;/li&gt;
&lt;li&gt;It’s remarkable how popular Clojure has managed to become despite its Lisp syntax. A testament to how many other things they got right.  ^&lt;/li&gt;
&lt;li&gt;There is a fine line between being enthusiastic users and brigading other communities. Always be respectful of other communities and don’t arbitrarily spam your language around.  ^&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The post &lt;a href="https://programmingzen.com/so-you-want-your-programming-language-to-be-popular/"&gt;So You Want Your Programming Language to Be Popular&lt;/a&gt; appeared first on &lt;a href="https://programmingzen.com"&gt;Programming Zen&lt;/a&gt;.&lt;/p&gt;


</description>
      <category>programming</category>
      <category>popularity</category>
      <category>programminglanguage</category>
    </item>
  </channel>
</rss>
