<?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>Forem: Dave Swersky</title>
    <description>The latest articles on Forem by Dave Swersky (@dswersky).</description>
    <link>https://forem.com/dswersky</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%2F16933%2F883a404a-7a1b-41f7-98ea-10c93217a003.png</url>
      <title>Forem: Dave Swersky</title>
      <link>https://forem.com/dswersky</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dswersky"/>
    <language>en</language>
    <item>
      <title>In Defense of the Command Line</title>
      <dc:creator>Dave Swersky</dc:creator>
      <pubDate>Mon, 26 Nov 2018 14:33:04 +0000</pubDate>
      <link>https://forem.com/dswersky/in-defense-of-the-command-line-3pnh</link>
      <guid>https://forem.com/dswersky/in-defense-of-the-command-line-3pnh</guid>
      <description>&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fexyriug1aqh132qhfdqf.png" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fexyriug1aqh132qhfdqf.png" alt="command line terminals"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m old enough to remember when the  &lt;em&gt;only&lt;/em&gt;  way to interact with a PC was through the command line. DOS on an IBM PC was my entry point to computing, and HIMEM.SYS was the configuration that stood between me and the latest PC games. It was a heady time, and we knew no differently.&lt;/p&gt;

&lt;p&gt;I’m also old enough to remember the novelty of a PC with Windows  &lt;em&gt;pre-installed.&lt;/em&gt;  “What is this sorcery?” I pondered, walking through the little indie computer shop. “If I want Windows, I’ll install it myself!” Thus began the drift away, on the PC platform, from  &lt;em&gt;ye olde&lt;/em&gt;  DOS prompt. Unfortunately, it seems that the drag-and-drop nature of Windows carried beyond the end-user PC market and into the Windows Server user base. I, for my part, was dragged along that current to some degree. While I retained some basic competency with the command line, my terminal/DOS muscles certainly atrophied over time.&lt;/p&gt;

&lt;p&gt;Meanwhile, the Linux and Mac communities quietly carried on with their work in that good ol’ terminal window. A rift began to form, between two user bases: one leaning heavily on graphical interfaces, and another one less dependent on icons and mouses. Over time, I think this became something of a hallmark of the difference between the Microsoft folks and the rest. This is, of course, a generalization. However, I think we can agree that, until the introduction of Powershell, Windows’ support for command-line tools left much to be desired when compared to Linux variants.&lt;/p&gt;

&lt;p&gt;Until recently, that was the state of my own personal experience as a Microsoft .NET developer and Windows adept. I then decided to  &lt;a href="http://www.leanpub.com/devopskatas" rel="noopener noreferrer"&gt;write a book about DevOps tools&lt;/a&gt;. As I developed this book, it became clear to me that I needed to provide more than just instruction. I needed to provide a platform for the learning I would ask my readers to undertake. I began to develop an idea for a free  &lt;em&gt;Learning Virtual Machine&lt;/em&gt;. Of course, my first question was, what OS?&lt;/p&gt;

&lt;p&gt;Windows, for better or worse, simply isn’t an option as a free resource. The only option for free appliances, such as the one I had in mind, is Linux. I was faced with a challenge: must I finally go learn Linux? After some hand-wringing, I decided that yes, I must. With that came the inevitable: living on the command line. Linux is CLI-first, GUI a distant second. I dove in and… much to my surprise, I rediscovered my long-lost love for working in the command line.&lt;/p&gt;




&lt;p&gt;All this reflection begs the question: is there something inherently  &lt;em&gt;better&lt;/em&gt;  about the command line? Are the GUI detractors just haters, looking for something to dislike about Windows, and its users? Perhaps, but I think it goes deeper than that. I do believe there is a quantitative difference between graphical interfaces and command-line interfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“All abstractions leak, some are useful.”&lt;br&gt;&lt;br&gt;
&lt;em&gt;-Unknown&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Graphical interfaces, like it or not, are an abstraction. They  &lt;em&gt;hide&lt;/em&gt;  things from you. Sometimes, they lie to your face.&lt;/p&gt;

&lt;p&gt;The command shell (whichever happens to be your favorite,) by contrast, is brutally honest. If something blows up, you know it immediately.&lt;/p&gt;

&lt;p&gt;This is the reality I rediscovered as I forced myself to go back to life at a command prompt. The current crop of DevOps technologies, including such worthies as Docker, Kubernetes, Git, Vagrant, Packer, Chef, Puppet, and many more, are all primarily command-line tools. Tools tend to be simpler, more direct, and  &lt;em&gt;definitely&lt;/em&gt; better suited to automation, when they are primarily a command-line interface (CLI.)&lt;/p&gt;

&lt;p&gt;I was drawn back into command-land as a result of research into modern software delivery tools and techniques. The world of Information Technology is changing at a rapid pace. DevOps and Site Reliability Engineering are melding the roles of developers, administrators, and operators into a single super-role. These jobs positively  &lt;em&gt;live&lt;/em&gt;  at the command prompt; there’s no way around it. The power of the command line is now, arguably, equal on all platforms (kudos must go to Microsoft for dramatic improvements in this area.) There has never been a better time to dive back in. Get your keyboards ready.&lt;/p&gt;




&lt;p&gt;Some of us are more comfortable than others with CLI tools, for a variety of reasons. If you’re less than comfortable, but you’d like to improve your skills, allow me to offer some suggestions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn Linux (you’ll want to anyway.)&lt;/strong&gt;&lt;br&gt;
There’s simply no debate- Linux has been ascendant for years, and its time has come. (I myself recently made the switch to a Mac, so I'm fully converted to a Linux variant and couldn't be happier.) It’s difficult to avoid Linux in modern software infrastructures. Linux is invading even the most dyed-in-the-wool, homogeneous Microsoft environments; and that is entirely by Microsoft’s design. Support for Linux is spreading like wildfire throughout the Microsoft product ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn&lt;/strong&gt; &lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
Docker grew up in Linux, and Linux is the place to learn Docker. Docker is 99% command-line. Starting containers, managing running containers, and certainly defining new containers is a command-line task. You’ll also learn even more about Linux internals, as the majority of containers on Docker Hub are Linux-based.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt; &lt;a href="https://conemu.github.io/en/Downloads.html" rel="noopener noreferrer"&gt;&lt;strong&gt;ConEmu&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
One of my personal pet peeves regarding the command-line experience on Windows is that, while it is equally capable, it is  &lt;em&gt;ugly&lt;/em&gt;  compared Linux and OSX. It doesn’t have to be that way, however.  &lt;a href="https://conemu.github.io/en/Downloads.html" rel="noopener noreferrer"&gt;ConEmu&lt;/a&gt;, the Windows Console Emulator, provides nearly unlimited visual and environmental customizations. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt; &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10" rel="noopener noreferrer"&gt;&lt;strong&gt;Windows Subsystem for Linux&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
You’re probably noticing a pattern here (ahem, Linux.) Yes, an entire  &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10" rel="noopener noreferrer"&gt;Linux subsystem&lt;/a&gt;  is now available for Windows 10 Anniversary Edition and later. You can install Ubuntu or SUSE Linux. It’s not just a shell- it’s an entire Linux subsystem, with all the built-in commands and utilities used by Linux developers and administrators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use&lt;/strong&gt; &lt;a href="https://chocolatey.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;Chocolatey&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
“When in Windows, do as the Linux users do.” Is that the quote? Anyway, there’s a reason why Linux uses a command-line software package system: automation. Start installing your tools from the command line like all good DevOps practitioners, and you’ll be creating bespoke developer environments in no time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn&lt;/strong&gt; &lt;a href="https://docs.microsoft.com/en-us/powershell/" rel="noopener noreferrer"&gt;&lt;strong&gt;Powershell&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
Powershell is just as capable as bash, but it uses a very different command structure. It is the method of choice for automating things in Windows. Learn Powershell, and you’ll be a valuable asset in any IT setting.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Would you like to learn about some great command-line DevOps tools? &lt;br&gt;
&lt;a href="http://www.devopskatas.com" rel="noopener noreferrer"&gt;http://www.devopskatas.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>commandline</category>
    </item>
    <item>
      <title>Top 43 Programming Languages: When and How to Use Them</title>
      <dc:creator>Dave Swersky</dc:creator>
      <pubDate>Mon, 12 Nov 2018 13:05:59 +0000</pubDate>
      <link>https://forem.com/raygun/top-43-programming-languages-when-and-how-to-use-them-515n</link>
      <guid>https://forem.com/raygun/top-43-programming-languages-when-and-how-to-use-them-515n</guid>
      <description>&lt;p&gt;There are &lt;em&gt;many&lt;/em&gt; programming languages to choose from. The &lt;a href="https://www.tiobe.com/tiobe-index/" rel="noopener noreferrer"&gt;TIOBE Index&lt;/a&gt; is a list of programming languages, ranked in order of popularity. This article lists (most of) the top 50 languages on that list (a small number of languages that don't have any jobs listed were excluded.)&lt;/p&gt;

&lt;p&gt;Each language listing includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Commentary&lt;/strong&gt;: A description of each language is included, with some background and history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Popularity Ranking&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Number of Jobs&lt;/em&gt;: This is the number of jobs found searching for that language at Indeed.com (at the time of this writing.) The number links to the search used. Each search displays the number of jobs found for the language in New York City, New York. This "baseline" search offers a good indication of the popularity of the language.

&lt;ul&gt;
&lt;li&gt;High (&amp;gt; 1,000 Jobs)&lt;/li&gt;
&lt;li&gt;Medium (500 - 1000 Jobs)&lt;/li&gt;
&lt;li&gt;Low (&amp;lt; 500 Jobs)&lt;/li&gt;
&lt;li&gt;Niche (&amp;lt; 100 Jobs)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Ease of Learning&lt;/strong&gt;: Easy, Moderate, or Difficult&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Use Cases&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;General Use&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;Local (Desktop) applications&lt;/li&gt;
&lt;li&gt;Web applications&lt;/li&gt;
&lt;li&gt;Mobile applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;em&gt;Specialty&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;Embedded systems&lt;/li&gt;
&lt;li&gt;Mainframe&lt;/li&gt;
&lt;li&gt;Industrial&lt;/li&gt;
&lt;li&gt;Academia/Research&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to choose a programming language
&lt;/h2&gt;

&lt;p&gt;Programming languages are tools that &lt;em&gt;express intent&lt;/em&gt; in a structured way. Software developers choose a language the way a construction worker selects a tool; by picking the best tool for the job.&lt;/p&gt;

&lt;p&gt;The languages on this list all have one or more of a variety of attributes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Procedural&lt;/li&gt;
&lt;li&gt;  Object-Oriented&lt;/li&gt;
&lt;li&gt;  Imperative&lt;/li&gt;
&lt;li&gt;  Declarative&lt;/li&gt;
&lt;li&gt;  Functional&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;... and many more&lt;/p&gt;

&lt;p&gt;These attributes, combined with the requirements of a development task, make some languages better than others &lt;em&gt;for the task at hand.&lt;/em&gt; Understanding the differences between these attributes, combined with experience, helps developers choose the right tool for the job they're doing.&lt;/p&gt;

&lt;p&gt;Choosing the right language combines concerns about the knowledge and experience of a development team, the maturity of the language and its supporting libraries, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  List of 43 programming languages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. What is Java?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fjava.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fjava.png" alt="Java is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Very high

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/q-Java-l-New-York,-NY-jobs.html" rel="noopener noreferrer"&gt;5,800 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: General Use and Specialty

&lt;ul&gt;
&lt;li&gt;Web applications&lt;/li&gt;
&lt;li&gt;Mobile&lt;/li&gt;
&lt;li&gt;Embedded systems&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Java is the leading general-purpose application development language and framework. It was introduced in 1991 by Sun Microsystems as a high-level, compiled, memory-managed language.&lt;/p&gt;

&lt;p&gt;Java's syntax is similar to C/C++, with curly braces for closures and semicolons to end statements. Automatic memory management is one of the features that made Java so popular, quickly after its initial release. Before Java was introduced, languages that required manual memory management, such as C and C++, were dominant. Manual memory allocation is tedious and error-prone, so Java was hailed as a major step forward for application developers.&lt;/p&gt;

&lt;p&gt;The promise of Java, beyond memory management, was its cross-platform capability. This was marketed as "write once, run anywhere." The Java Virtual Machine (JVM) runs Java bytecode, which is compiled from the Java language. JVMs are available for most major operating systems, including Linux, Mac, and Windows. It doesn't always work perfectly, but when it does, a program written in Java can run on any platform with a compatible JVM.&lt;/p&gt;

&lt;p&gt;Java is used for business, web, and mobile applications. It is the native language for Google's Android OS. Java also powers millions of set-top boxes and embedded devices. Java development skills are highly sought after.&lt;/p&gt;

&lt;p&gt;If you're considering a job in software development, you should strongly consider learning Java.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. What is C?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2FC.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2FC.png" alt="C is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Medium

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=C%20developer&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;643 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General Use and Specialty

&lt;ul&gt;
&lt;li&gt;Embedded systems&lt;/li&gt;
&lt;li&gt;Hardware drivers&lt;/li&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Until Java was introduced, C was the dominant high-level language. It was first introduced in 1972. The first versions of Unix, written in Assembly language, were ported to C. It was then used in the development of other early operating systems, including IBM System/370.&lt;/p&gt;

&lt;p&gt;C has a long history of development on older systems with slower processors and little memory. Programs written in C had to be very efficient, so C has a reputation for high performance in cases where speed matters.&lt;/p&gt;

&lt;p&gt;C is still very popular due to its use in systems development, including operating systems, embedded devices, and as firmware. The C standard library has been ported to many platforms, so it is viable in many use cases. However, the low-level systems programming it is typically used for is a more specialized skill than general application programming. This explains why the second-most popular language on the TIOBE index has relatively few job postings as compared to other languages in the top 10.&lt;/p&gt;

&lt;p&gt;There is likely to be some overlap in the jobs market with C++ (see the C++ listing below.)&lt;/p&gt;

&lt;h3&gt;
  
  
  3. What is Python?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fpython.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fpython.png" alt="Python is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Very High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Python&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;5,842 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy to Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General Use and Specialty

&lt;ul&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Artificial Intelligence&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Python is a relatively new interpreted programming language, first introduced in 1989. It is an interpreted language that supports automatic memory management and object-oriented programming.&lt;/p&gt;

&lt;p&gt;Python is very popular for general-purpose programming, including web applications. It has recently become known for specialty use in artificial intelligence applications.  &lt;/p&gt;

&lt;p&gt;Python jobs are very plentiful, so it's easy to find a job using Python.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. What is C++?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fcplus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fcplus.png" alt="cplus is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=C%2b%2b&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;2,032 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: General Use, Specialty

&lt;ul&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;li&gt;Web Services&lt;/li&gt;
&lt;li&gt;Proprietary Services&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;C++ extends C with object-oriented features. The "double-plus" comes from the increment operator from C. C++ was developed to bring features from older languages to faster, more powerful platforms.&lt;/p&gt;

&lt;p&gt;C++ occupies a similar area in the market as C, including systems programming and low-level hardware development. Over the years, the C++ standard libraries and specification have been expanded considerably, leading to criticism that it has become over-complicated and difficult to learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. What is Visual Basic .NET?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fvisual-basic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fvisual-basic.png" alt="Visual Basic .NET is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=C%2b%2b&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;194 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General Use

&lt;ul&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Visual Basic.NET (VB.NET) is Microsoft's implementation of the Visual Basic language that compiles to .NET Intermediate Language. This allows developers to write .NET applications using Visual Basic.&lt;br&gt;
Applications written in VB.NET are, more or less, just as capable as any other.  However,&lt;/p&gt;

&lt;p&gt;VB.NET was never very popular for business applications. Application developers preferred C, C++, and C#. Most applications written in VB.NET tend to be older, and are likely to be considered to be "legacy" applications destined for decommission or redevelopment.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. What is C#?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fcsharp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fcsharp.png" alt="C# is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=C%23&amp;amp;l=New+York%2C+NY" rel="noopener noreferrer"&gt;1,771 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General Use

&lt;ul&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;li&gt;Services/Microservices&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;C# was developed and introduced by Microsoft in 2000, along with the overall .NET Framework. Syntactically, C# is very similar to Java and C/C++. It is a compiled, object-oriented language that compiles to .NET Intermediate Language.&lt;br&gt;
Originally, C# was used for Microsoft-focused development of Windows Forms and web development with ASP.NET. The .NET ecosystem has evolved recently with the introduction of the .NET Standard and .NET Core. These new frameworks and standards are cross-platform, running on Windows, Linux, and Mac.&lt;/p&gt;

&lt;p&gt;C# is popular for local and web application programming, often (but not necessarily) in systems developed primarily based on Microsoft technology. Microsoft's Xamarin framework allows developers to write Android and iOS applications in C#. It is suitable for systems programming in some cases and has libraries available for embedded systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. What is PHP?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fphp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fphp.png" alt="PHP is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=PHP&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;1,152 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy&lt;/li&gt;

&lt;li&gt;Use Cases: General Use

&lt;ul&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;PHP originally stood for "Personal Home Page" as part of its first name, PHP/FI (Forms Interpreter.)  The official acronym is now &lt;em&gt;PHP: Hypertext Processor.&lt;/em&gt; Its primary role is as a web application server-side scripting system. It was originally developed to extend a CGI program to support HTML forms and database access. The code of a PHP program is mixed in with the HTML, making it similar to Microsoft's classic  (pre-.NET) Active Server Pages. The interpreter reads the HTML and code and executes the code portions of the page.&lt;/p&gt;

&lt;p&gt;PHP is popular because it's easy to learn. It is also the basis of popular web-based applications such as WordPress and Joomla. However, PHP also has a mixed reputation relating to software quality. Early versions lacked security controls and features that made it difficult to develop highly-secure applications. Recent developments in PHP frameworks and libraries have made improvements in security.&lt;/p&gt;

&lt;p&gt;There are plenty of PHP jobs available, for content-focused web applications like WordPress, and proprietary systems developed in PHP.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. What is JavaScript?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fjavascript.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fjavascript.png" alt="JavaScript is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Very High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Javascript&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;3,555 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General Use

&lt;ul&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;JavaScript is a high-level, dynamically typed, interpreted language. It uses Java-like syntax, hence the name JavaScript. JavaScript was first introduced in the early days of the public Internet, 1995.&lt;br&gt;
JavaScript is used to write code that runs in web browsers, on the client side. If you've been using the Web long enough to remember the introduction of Google Maps, you witnessed some of the first magic: the "infinite scrolling" in Maps is done using JavaScript.&lt;/p&gt;

&lt;p&gt;Since its first introduction, JavaScript support has been added to all major web browsers. &lt;a href="https://raygun.com/blog/popular-javascript-frameworks/" rel="noopener noreferrer"&gt;JavaScript frameworks&lt;/a&gt; including React, Angular, and Vue offer a Model-View-Controller application development paradigm, running entirely in the browser. JavaScript now supports the visual, browser-run elements of most modern web applications, which is why most &lt;a href="https://raygun.com/platform/real-user-monitoring" rel="noopener noreferrer"&gt;real user monitoring tools&lt;/a&gt; cater for JavaScript.&lt;/p&gt;

&lt;p&gt;JavaScript can also be combined with HTML to make cross-platform mobile applications.&lt;br&gt;
NodeJS is a web server that runs JavaScript on the server side. NodeJS applications are written entirely in JavaScript.&lt;/p&gt;

&lt;p&gt;Given all these use cases and support, JavaScript is both popular and in high demand. It is not very difficult to learn, though there are advanced programming techniques that take time to master. If you are more comfortable with object-oriented languages, consider looking into TypeScript. TypeScript "overlays" object-oriented features and syntax, and transpiles to native JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. What is SQL?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fsql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fsql.png" alt="SQL is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Very High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=SQL&amp;amp;l=New%20York,%20NY&amp;amp;vjk=9b55a6f914529223" rel="noopener noreferrer"&gt;8,799 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy to Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Database Queries&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;SQL stands for &lt;em&gt;Structured Query Language&lt;/em&gt;. SQL is used to query and modify data in a Relational Database Management System (RDBMS.) Vendor-specific implementations, such as PL/SQL (Oracle) and T-SQL (Microsoft) offer product-specific features.&lt;/p&gt;

&lt;p&gt;SQL isn't a general purpose language that can be used to write applications. However, it is at least a useful, if not required, skill of most developers. The term "full-stack developer" refers to a developer with a well-rounded skill set that includes all aspects of an application. This almost always includes accessing and saving data to a database. SQL is not hard to learn initially, though there are advanced use cases in Big Data and data analysis that require significant experience.&lt;/p&gt;

&lt;p&gt;SQL is very popular with both developers and Database Administrators, so jobs that require SQL skills are plentiful. However, it is not a complete skill unto itself. SQL experience is a big plus on a resume, but it is rarely the primary skill required for any given job.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. What is Objective-C?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fobjective-c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fobjective-c.png" alt="Objective-C is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Objective-C&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;1,058 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Mobile Applications

&lt;ul&gt;
&lt;li&gt;Apple iOS devices: iPhone, iPad&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Objective-C is a general purpose, compiled, object-oriented language. Its syntax is derived from Smalltalk. Until 2014, when Apple introduced Swift, it was the primary language used by Apple to develop applications for MacOS and iOS.&lt;/p&gt;

&lt;p&gt;Objective-C is still relatively popular, due to a large number of applications available that were written using it. Now that modern MacOS and iOS development is done primarily in Swift, it is likely that its popularity will eventually fall off as the number of supported applications tapers over time. Objective-C is not easy to learn. It uses syntax and language conventions that are not common to other languages, so experience with other languages does not apply well to Objective-C.&lt;/p&gt;

&lt;p&gt;If you want to focus on software development for the Apple ecosystem, it's a good idea to pick up both Objective-C and Swift. This will give you the ability to work on older applications written in Objective-C, and write new applications in Swift. Between the two, jobs are very plentiful.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. What is Delphi/Object Pascal?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fdelphi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fdelphi.png" alt="Delphi/Object Pascal is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Ultra-Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=delphi%20developer&amp;amp;l=New%20York%2C%20NY&amp;amp;vjk=7985ea97906f3f33" rel="noopener noreferrer"&gt;1 Job&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General

&lt;ul&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Delphi is a compiler and Integrated Developer Environment (IDE) for the Object Pascal language. Object Pascal is an object-oriented derivative of Pascal, which was developed in the late 1960s.&lt;/p&gt;

&lt;p&gt;Delphi/Object Pascal is on this list because there is a lot of software out there written in Object Pascal, with Delphi. As we can see from the number of jobs, Object Pascal is effectively a dead language. If you want to write software as a profession, ignore Delphi and Object Pascal. Their days have passed.&lt;/p&gt;

&lt;h3&gt;
  
  
  12. What is Ruby?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fruby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fruby.png" alt="Ruby is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=ruby&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;1,172 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy to Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General

&lt;ul&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Scripting&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Ruby is an interpreted, dynamically typed, object-oriented language first introduced in the mid-1990s. It was inspired by several other languages on this list, including Lisp, Perl, and Ada.&lt;br&gt;
Ruby is very popular for web application development. The Ruby on Rails framework (now known simply as "Rails") is a model-view-component server-side framework written in Ruby.  &lt;/p&gt;

&lt;p&gt;Ruby is fairly easy to learn. Its common use in web applications makes job opportunities easy to find.&lt;/p&gt;

&lt;h3&gt;
  
  
  13. What is MATLAB?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fmatlab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fmatlab.png" alt="MATLAB is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Medium

&lt;ul&gt;
&lt;li&gt;514 Jobs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Mathematical Research&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;MATLAB is not a programming language, per se. It is an application that is used to calculate and model complex mathematical computations. It is used primarily in research settings, at universities and labs. MATLAB can handle complex matrix manipulations and supports extensions to use complex mathematical notation. Functions written in C, C#, and FORTRAN can be called from MATLAB.&lt;/p&gt;

&lt;p&gt;The knowledge needed to use MATLAB is more related to the mathematical concepts and skills than knowledge of programming. If you're already an advanced math student working on a Ph.D. in mathematics, MATLAB is relatively easy to learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  14. What is Assembly language?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fasm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fasm.png" alt="Assembly  is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=assembly%20developer&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;146 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Systems Programming&lt;/li&gt;
&lt;li&gt;Hardware / Firmware development&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;"Assembly language" is a generic term for low-level code that closely represents the native machine instructions for a given microprocessor. Most of the languages on this list are "high-level" languages that are closer, syntactically, to English. High-level language code must be compiled down to an intermediate bytecode, or directly to machine instructions. Assembly code is &lt;em&gt;assembled,&lt;/em&gt; (hence the name) not compiled.&lt;/p&gt;

&lt;p&gt;The intent of a line of code written in C or Ruby is relatively easy to understand, just by reading it. Assembly, by contrast, is very difficult to understand without a careful reading of the entire program. Each operation, including math operations and moving data in and out of registers, is a complete statement. This means that it takes a lot more assembly code than C code to do the same amount of work.&lt;/p&gt;

&lt;p&gt;Assembly code is most useful when performance is the most important goal. It is used for very low-level systems programming, or in some cases may be combined with application code for a performance boost. Jobs that require knowledge of assembly will include systems programming and hardware development.&lt;/p&gt;

&lt;h3&gt;
  
  
  15. What is Swift?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fswift.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fswift.png" alt="Swift  is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Medium

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/q-Swift-l-New-York,-NY-jobs.html" rel="noopener noreferrer"&gt;590 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Apple Mobile and Desktop applications

&lt;ul&gt;
&lt;li&gt;MacBook&lt;/li&gt;
&lt;li&gt;iPhone&lt;/li&gt;
&lt;li&gt;iPad&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Apple introduced Swift in 2014 as a modern alternative to Objective-C. Its goals were to be easier to debug than Objective-C. Swift syntax is easier to read than Objective-C and requires less code to do the same amount of work. However, breaking changes introduced with new versions may have stunted its adoption.&lt;/p&gt;

&lt;p&gt;There are a fair number of jobs available for Swift, so it is probable that Swift is here to stay. As mentioned in the Objective-C listing, if you want to develop for the Apple ecosystem, hedge your bets and learn both.&lt;/p&gt;

&lt;h3&gt;
  
  
  17. What is Go?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fgolang.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fgolang.png" alt="Go  is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Golang%20OR%20%22go%20developer%22&amp;amp;l=New%20York,%20NY&amp;amp;vjk=83256495389db348" rel="noopener noreferrer"&gt;161 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General

&lt;ul&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Go (also known as Golang) is a relatively new kid on the block. It was introduced by two Google engineers in 2009. Go syntax borrows heavily from C and Java. The design goals for Go included cross-platform compatibility, simplicity, and support for modern processors.&lt;/p&gt;

&lt;p&gt;Go is relatively easy to learn. It has some of the complexities of C/C++ (such as pointers) but its syntax and conventions are simpler. While Go jobs are not plentiful, there is a rapidly growing following in engineering and DevOps circles.&lt;/p&gt;

&lt;h3&gt;
  
  
  18. What is Perl?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fperl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fperl.png" alt="Perl  is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=perl&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;1,139 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy to Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General

&lt;ul&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Perl was introduced in 1987 as a utilitarian scripting language, evolving from CGI scripting. Recent releases of Perl are quite different from early releases.&lt;/p&gt;

&lt;p&gt;Perl is fairly easy to learn, but it has its detractors. The development of Perl was somewhat haphazard, leading to criticism that it is not well organized. This has left Perl with a reputation for being less than robust.&lt;/p&gt;

&lt;p&gt;Quite a lot of software has been written in Perl, and that continues to this day. Perl jobs are not hard to find. Having said that, it would be a stretch to say that Perl is a "modern" language. Perl may be a good language to learn early in a career, as a way to get started, but it shouldn't be the only one.&lt;/p&gt;

&lt;h3&gt;
  
  
  19. What is R?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fr.png" alt="R  is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=R%20developer&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;271 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Statistical Computation and Analysis&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The programming language R is primarily used by statisticians and researchers to perform statistical analysis of datasets. Demographers, insurance actuaries, and other jobs focused on statistics use R. As with MATLAB, most of the knowledge needed to work with R relates to statistics. R programmers combine statistics knowledge with the essentials of programming and software development.&lt;/p&gt;

&lt;p&gt;R programming jobs are not hard to come by, but the number is not high due to the specialized nature of the work. If you are a data analyst doing statistical work, there's a good chance you've learned R. If that work sounds like something you want to look into, you should strongly consider adding R to your toolbox.&lt;/p&gt;

&lt;h3&gt;
  
  
  20. What is PL/SQL
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fpl-sql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fpl-sql.png" alt="PL/SQL is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low to Medium

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=pl%20sql%20&amp;amp;l=New%20York,%20NY&amp;amp;vjk=e81ddb6966e4c9b9" rel="noopener noreferrer"&gt;438 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: Database Queries

&lt;ul&gt;
&lt;li&gt;Oracle Databases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;PL/SQL is the vendor-specific implementation of the SQL language listed above. The syntax and features of PL/SQL align with features of Oracle databases. All dialects of SQL are moderately difficult to learn. Simple data querying and updating is fairly easy to learn. Joins, aggregation, and advanced concepts such as cursors require more understanding of database theory.&lt;/p&gt;

&lt;p&gt;Oracle is a dominant database vendor, so PL/SQL jobs are fairly plentiful. If you are an Oracle Database Administrator, PL/SQL is a must-learn. Full-stack developers that work at the data "layer" should consider learning PL/SQL and other dialects.&lt;/p&gt;

&lt;h3&gt;
  
  
  21. What is Visual Basic?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fvisual-basic-copy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fvisual-basic-copy.png" alt="visual basic is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=%22Visual%20Basic%22&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;194 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy&lt;/li&gt;

&lt;li&gt;Use Cases: General

&lt;ul&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Visual Basic (VB) was introduced by Microsoft as a variant of the BASIC programming language. It is an event-driven language and Integrated Development Environment primarily used to develop Windows applications. VB was designed to be easy to learn and to rapidly produce usable software. Visual Basic for Applications (VBA) is embedded in older versions of Microsoft Office applications, such as Access. VBA was used to provide programmatic manipulation of Office documents. Access databases used VBA to compose mini-applications.&lt;/p&gt;

&lt;p&gt;Microsoft deprecated Visual Basic 6.0, the last version of Visual Basic, in 2008. It is no longer supported. Jobs that require Visual Basic are dwindling. It is likely that any such job is focused on maintenance and/or porting to a modern platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  22. What is SAS?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fsas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fsas.png" alt="SAS is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=SAS%20developer&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;224 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: General

&lt;ul&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;SAS originally stood for "Statistical Analysis System." SAS was first developed in 1966 on mainframe computers. It was used for statistical data analysis.&lt;/p&gt;

&lt;p&gt;SAS is not common, though there are still some jobs available. Modern statistical analysis tools have overtaken SAS.&lt;/p&gt;

&lt;h3&gt;
  
  
  23. What is Dart?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fdart.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fdart.png" alt="Dart is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Dart%20developer&amp;amp;l=New%20York,%20NY&amp;amp;vjk=64ed2c190fb60034" rel="noopener noreferrer"&gt;12 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General

&lt;ul&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Mobile Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Dart was introduced in 2011 by engineers at Google. It is a statically-typed, compiled language with a syntax similar to C. Dart transpiles to JavaScript.&lt;/p&gt;

&lt;p&gt;Dart never really took off, so it is not popular and jobs are few.&lt;/p&gt;

&lt;h3&gt;
  
  
  24. What is F#?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Ffsharp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Ffsharp.png" alt="F# is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=F#%20developer&amp;amp;l=New%20York,%20NY&amp;amp;vjk=ee95b417bb9dfa16" rel="noopener noreferrer"&gt;12 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: General and Specialty

&lt;ul&gt;
&lt;li&gt;Web Services&lt;/li&gt;
&lt;li&gt;Machine learning&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;F# was introduced by Microsoft as an object-oriented, functional language that compiles to .NET Intermediate Language. As a functional language, F# expresses programs as mathematical functions. Functional languages are different from object-oriented and procedural languages, in that they avoid mutable data and state.&lt;br&gt;
Functional programming is quite different from other more popular forms, however, it is well-suited to particular types of applications. Certain computations can be expressed more concisely and elegantly in functional languages, than in their object-oriented counterparts.&lt;/p&gt;

&lt;p&gt;F# is a specialty-case language with few jobs available.&lt;/p&gt;

&lt;h3&gt;
  
  
  25. What is COBOL?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fcobol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fcobol.png" alt="Cobol is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=COBOL&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;71 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases:

&lt;ul&gt;
&lt;li&gt;Mainframe Application Development&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;COBOL is a very old language used primarily for mainframe development. It is somewhat difficult to learn, by comparison with more modern languages.&lt;/p&gt;

&lt;p&gt;Programmers that have been using COBOL for decades are enjoying high employability, due to the scarcity of COBOL programmers that are working and not retired. This is not a good reason to learn it if you don't already know it, however. Much better to invest in new skills for a new generation of languages and platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  26. What is Scala?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fscala.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fscala.png" alt="Scala is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Moderate - High

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Scala&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;943 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: General Use

&lt;ul&gt;
&lt;li&gt;Software Frameworks&lt;/li&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Scala was designed to fill gaps in the Java, language, such as functional programming features. It has gained traction in the development of software libraries and applications.&lt;/p&gt;

&lt;p&gt;Scala has been criticized for its high learning curve. Some say that learning new languages is a good thing for software developers, especially those that force developers to think about old problems in new ways. There are plenty of Scala jobs available. It may not make a good starter language, but if you have some experience it's worth looking into.&lt;/p&gt;

&lt;h3&gt;
  
  
  27. What is ABAP?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fabap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fabap.png" alt="ABAP is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=ABAP&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;58 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;SAP Enterprise Software&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;ABAP was designed for use with the SAP enterprise software system to develop reports.&lt;/p&gt;

&lt;p&gt;ABAP is a niche language with few jobs available. The syntax is quite different from modern languages. ABAP is probably not a good long-term career focus.&lt;/p&gt;

&lt;h3&gt;
  
  
  28. What is Fortran?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Ffortran.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Ffortran.png" alt="Fortran is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Fortran&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;7 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Mainframe Programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;FORTRAN was developed by IBM for scientific and research-focused programming. It was originally introduced in 1957, so at 61 years old it is one of the oldest languages on this list.&lt;/p&gt;

&lt;p&gt;FORTRAN has reached the point COBOL will likely reach in about ten to fifteen years- almost completely obsolete.&lt;/p&gt;

&lt;h3&gt;
  
  
  29. What is Lua?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Flua.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Flua.png" alt="Lua is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=Lua&amp;amp;l=New%20York,%20NY&amp;amp;vjk=56c7bc1a3c5ba0fe" rel="noopener noreferrer"&gt;16 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy&lt;/li&gt;

&lt;li&gt;Use Cases: General Use

&lt;ul&gt;
&lt;li&gt;General Programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Lua was developed, by necessity, in Brazil, during a time where trade policies made it prohibitively expensive to purchase licensed software from elsewhere in the world. It was designed to be portable and easy to learn for non-technical users. Lua has become popular among novice game developers as a scripting language.&lt;/p&gt;

&lt;p&gt;Lua is a niche language with few jobs available. Learning Lua may make you a better, more well-rounded developer, but it isn't likely to land you a job.&lt;/p&gt;

&lt;h3&gt;
  
  
  30. What is Rust?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Frust.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Frust.png" alt="Rust is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=rust%20developer&amp;amp;l=New%20York,%20NY&amp;amp;vjk=5d4fe92f1c612f9d" rel="noopener noreferrer"&gt;20 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty and General Use

&lt;ul&gt;
&lt;li&gt;Application/Software frameworks and components&lt;/li&gt;
&lt;li&gt;Systems programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Rust is a relatively new and powerful language that is popular for systems programming. Its design goals include safety, reliability, and speed. These features come at the cost of complexity and a high learning curve.&lt;/p&gt;

&lt;p&gt;Rust is not a good first language and is not a crowd-pleaser. It's great for a learning challenge, and there are jobs out there that use it, but it's probably not a good idea to stake a career on it.&lt;/p&gt;

&lt;h3&gt;
  
  
  31. What is Lisp?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Flisp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Flisp.png" alt="Lisp is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=lisp%20developer&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;6 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Systems programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;LISP is only one year younger than FORTRAN, making it one of the "great grandaddy" languages of this list. LISP has inspired the design of many younger languages on this list, including JavaScript, Scala, Python, and many others.&lt;/p&gt;

&lt;p&gt;LISP isn't very easy to learn and has a very verbose syntax (it's great if you LOVE typing parentheses!) The jobs that list LISP as a requirement favor it less for the language itself, and more for the deep understanding it offers of languages that came after it. LISP knowledge is most useful as a means to make you a more qualified developer in more modern languages.&lt;/p&gt;

&lt;h3&gt;
  
  
  32. What is Groovy?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fgroovy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fgroovy.png" alt="Groovy is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/q-groovy-developer-l-New-York,-NY-jobs.html" rel="noopener noreferrer"&gt;67 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty and General

&lt;ul&gt;
&lt;li&gt;Local Applications&lt;/li&gt;
&lt;li&gt;Developer Tools&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Groovy is closely associated with Java. Its code compiles to Java bytecode, and the syntax is very similar to Java. Groovy adds features not present in Java, such as dynamic typing and operator overloading. Groovy code can also be run uncompiled, making it a scripting platform.&lt;/p&gt;

&lt;p&gt;Groovy has developed a niche following among developers and is used in some popular tools such as Jenkins. If you already know Java or a language like it, Groovy should be fairly easy to learn. It's listed as a plus on many job listings, but it's not likely to be a core requirement of any given job.&lt;/p&gt;

&lt;h3&gt;
  
  
  33. What is LabVIEW?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Flabview.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Flabview.png" alt="LabVIEW is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=labview&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;30 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate to Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Industrial Automation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;LabVIEW is an IDE and compiler that uses a graphical language to design programs. It is used primarily to control machines for industrial automation scenarios.&lt;/p&gt;

&lt;p&gt;LabVIEW is to mechanical engineering and automation as MATLAB is to mathematical research. If you're an engineer building automated systems, using LabVIEW is likely to be part of your job. Otherwise, LabVIEW is not likely to be useful beyond academic pursuits.&lt;/p&gt;

&lt;h3&gt;
  
  
  34. What is Prolog?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fprolog.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fprolog.png" alt="Prolog is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=prolog&amp;amp;l=New%20York,%20NY&amp;amp;vjk=88c7d46674acf5eb" rel="noopener noreferrer"&gt;24 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Artificial Intelligence&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Prolog is a declarative language based on fairly advanced mathematical and logical theories. It is used for complex systems.&lt;/p&gt;

&lt;p&gt;Prolog's syntax is difficult to learn and read. Unless you happen to be in a field that uses Prolog, it's probably safe to skip it.&lt;/p&gt;

&lt;h3&gt;
  
  
  35. What is Ada?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fada.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fada.png" alt="Ada is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=ada%20developer&amp;amp;l=New%20York,%20NY&amp;amp;vjk=932a6d30170faf84" rel="noopener noreferrer"&gt;30 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: General Use&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Ada is one of the older languages on this list. It was first introduced in 1980. Ada is most closely related to Pascal. Ada has many typical high-level language features, including static typing and object-orientation.&lt;/p&gt;

&lt;p&gt;Ada is a niche language with a few jobs available. Most of that work is likely to be maintenance and porting to newer platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  36. What is Julia?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fjulia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fjulia.png" alt="Julia is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Very Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=julia%20developer&amp;amp;l=New%20York,%20NY&amp;amp;vjk=e3143e6e82053885" rel="noopener noreferrer"&gt;6 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Data Science&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Julia is a relatively new language, introduced in 2012. Its syntax is a descendant of C. Julia was designed for data science and analytic applications.&lt;/p&gt;

&lt;p&gt;Julia is another language on this list that is tightly associated with the work it is designed to support. If you are already in a data analytics job, there's a good chance you have learned Julia.&lt;/p&gt;

&lt;h3&gt;
  
  
  37. What is Haskell?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fhaskell.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fhaskell.png" alt="Haskell is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=haskell+developer&amp;amp;l=New+York%2C+NY" rel="noopener noreferrer"&gt;29 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: General/Specialty&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Haskell is one of the older purely functional, high-level languages. Functional languages focus on expressing intent through mathematical statements, rather than imperative subroutines that "act" on data. Many other functional languages derive from Haskell.&lt;/p&gt;

&lt;p&gt;Haskell is rather difficult to learn, however, it is a good opportunity to learn functional programming. If you learn Haskell, you'll learn this method of writing software. You'll also be valuable to a niche market of jobs that need this specialized method of software development.&lt;/p&gt;

&lt;h3&gt;
  
  
  38. What is Apex?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fapex.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fapex.png" alt="Apex is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=apex%20developer&amp;amp;l=New%20York,%20NY&amp;amp;vjk=a18c9bee4adc1de9" rel="noopener noreferrer"&gt;195 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty

&lt;ul&gt;
&lt;li&gt;Salesforce.com Development&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Apex is a language similar to C# and Java. It was developed by Salesforce.com as a proprietary language used to develop on the Salesforce platform.&lt;/p&gt;

&lt;p&gt;Apex is about as hard to learn as C# and Java. If you want to develop using Salesforce, learn Apex.&lt;/p&gt;

&lt;h3&gt;
  
  
  39. What is Kotlin?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fkotlin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fkotlin.png" alt="Kotlin is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=kotlin&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;133 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Moderate&lt;/li&gt;

&lt;li&gt;Use Cases: Mobile Development

&lt;ul&gt;
&lt;li&gt;Android Applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Kotlin runs on the Java VM and compiles to JavaScript. Its syntax is very similar to Java. Google supports Kotlin for Android OS development.&lt;/p&gt;

&lt;p&gt;Kotlin has risen in popularity over time, but it remains a niche language overall.&lt;/p&gt;

&lt;h3&gt;
  
  
  40. What is Bash?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fbash.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fbash.png" alt="Bash is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Low (see details)

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=unix%20administrator&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;157 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Easy to Moderate&lt;/li&gt;

&lt;li&gt;Use Cases:

&lt;ul&gt;
&lt;li&gt;Linux scripting and automation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Bash scripts are used to automate tasks on Unix and Linux platforms. The syntax is fairly simple and easy to pick up.&lt;/p&gt;

&lt;p&gt;Bash skills are required primarily for Unix/Linux administration, and in roles that need to write scripts for those platforms. Developers can use Bash to help automate software delivery pipelines. Bash is an important skill to develop for those use cases and others, however, it is not a full programming language unto itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  41. What is Ladder Logic?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fladder-logic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fladder-logic.png" alt="Ladder Logic is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=%22ladder%20logic%22&amp;amp;l=New%20York,%20NY&amp;amp;vjk=28015818f847eb19" rel="noopener noreferrer"&gt;20 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases:

&lt;ul&gt;
&lt;li&gt;Industrial Automation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Ladder Logic isn't so much a programming language, as it is a notation for the design of circuits. It is used primarily for the design of industrial electronics.&lt;/p&gt;

&lt;h3&gt;
  
  
  42. What is Clojure?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fclojure.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fclojure.png" alt="Clojure is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=clojure&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;55 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: General&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Clojure is related to LISP and uses a similar syntax. Clojure runs on the Java VM. It is used in a variety of applications and systems. Clojure jobs aren't plentiful but they are out there.&lt;/p&gt;

&lt;h3&gt;
  
  
  43. What is Scheme?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fscheme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraygun.com%2Fblog%2Fimages%2Fprogramming-languages%2Fscheme.png" alt="Scheme is a popular programming language" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity: Niche

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/jobs?q=scheme%20developer&amp;amp;l=New%20York,%20NY" rel="noopener noreferrer"&gt;40 Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Ease of Learning: Difficult&lt;/li&gt;

&lt;li&gt;Use Cases: Specialty&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Scheme is another LISP-related functional language. It is used in a few various applications such as OS and game development.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, which programming language should you choose to learn?
&lt;/h2&gt;

&lt;p&gt;Now we've shown you some of the most popular programming languages, it's time to choose which is the best for your project.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>introduction</category>
      <category>languages</category>
    </item>
    <item>
      <title>What is Docker, and why is it so popular?</title>
      <dc:creator>Dave Swersky</dc:creator>
      <pubDate>Wed, 10 Oct 2018 20:17:09 +0000</pubDate>
      <link>https://forem.com/raygun/what-is-docker-and-why-is-it-so-popular-45c7</link>
      <guid>https://forem.com/raygun/what-is-docker-and-why-is-it-so-popular-45c7</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://raygun.com/blog/what-is-docker/"&gt;Raygun Blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you've been anywhere near the IT industry over the last five years, you've very likely heard of the container platform &lt;a href="https://www.docker.com/"&gt;Docker.&lt;/a&gt; Docker and containers are a new way of running software that is revolutionizing software development and delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Docker?
&lt;/h2&gt;

&lt;p&gt;Docker is a new technology that allows development teams to build, manage, and secure apps anywhere.&lt;/p&gt;

&lt;p&gt;It's not possible to explain what Docker is without explaining what containers are, so let's look at a quick explanation of containers and how they work.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A container is a special type of process that is isolated from other processes.  Containers are assigned resources that no other process can access, and they cannot access any resources not explicitly assigned to them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;So what's the big deal?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Processes that are not "containerized" can ask the operating system for access to &lt;em&gt;any&lt;/em&gt; file on disk or &lt;em&gt;any&lt;/em&gt; network socket.&lt;/p&gt;

&lt;p&gt;Until containers became widely available, there was no reliable, guaranteed way to isolate a process to its own set of resources. A properly functioning container has &lt;em&gt;absolutely no way&lt;/em&gt; to reach outside its resource "sandbox" to touch resources that were not explicitly assigned to it.&lt;/p&gt;

&lt;p&gt;For example, two containers running on the same computer might as well be on two completely different computers, miles away from each other. They are entirely and effectively isolated from each other.&lt;/p&gt;

&lt;p&gt;This isolation has several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Two containerized processes can run side-by-side on the same computer, but they can't interfere with each other.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They can't access each other's data unless explicitly configured to do so.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Two different applications can run containers on the same hardware with confidence that their processes and data are secure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shared hardware means less hardware. Gone are the days when a company needs thousands of servers to run applications. That hardware can be shared between different business units or entirely different enterprise clients. The result is massive new economies of scale for private and public centers alike.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Docker explained
&lt;/h2&gt;

&lt;p&gt;Now that you know what containers are, let's get to Docker.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Docker is both a company and a product.  Docker Inc. makes Docker, the container toolkit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Containers aren't a singular technology. They are a collection of technologies that have been developed over more than ten years. The features of Linux (such as namespaces and cgroups) have been available for quite some time — since about 2008.&lt;/p&gt;

&lt;p&gt;Why, then have containers not been used all that time?&lt;/p&gt;

&lt;p&gt;The answer is that very few people knew how to &lt;em&gt;make&lt;/em&gt; them. Only the most powerful Level-20 Linux Systems Developer Warrior Mage understood all the various technologies needed to create a container.&lt;/p&gt;

&lt;p&gt;In those early days, willing to do the work to understand them, let alone creating containers, was a complex chore. The stakes are high — getting it wrong turns the benefits of containers to liabilities.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If containers don't &lt;em&gt;contain,&lt;/em&gt; they can become the root cause of the latest Hacker News security breach headline.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The masses needed consistent, reliable container creation before containers could go mainstream.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Enter Docker Inc.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The primary features of Docker are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Docker command-line interface (CLI)&lt;/li&gt;
&lt;li&gt;The Docker Engine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker made it easier to create containers by "wrapping" the complexity of the underlying OS syscalls needed to make them work. Docker's popularity snowballed, to put it mildly.&lt;/p&gt;

&lt;p&gt;In March 2013, the creator of Docker, dotCloud, renamed itself to Docker Inc. and open-sourced Docker. In just a few years, containers have made a journey from relative obscurity, to the transformation of an industry. Docker's impact rivals the introduction of Virtual Machines in the early 2000s.&lt;/p&gt;

&lt;h2&gt;
  
  
  How popular is Docker?
&lt;/h2&gt;

&lt;p&gt;Here's a Google Trends graph of searches for the term "docker" over the last five years:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1oqxtT_Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/what-is-docker/dockergoogletrend.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1oqxtT_Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/what-is-docker/dockergoogletrend.png" alt="Google Trend Docker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see that Google searches for Docker have seen steady, sustainable growth since its introduction in 2013. Docker has established itself as the de-facto standard for containerization. There are a few competing products, such as &lt;a href="https://coreos.com/rkt/docs/latest/"&gt;CoreOS/rkt&lt;/a&gt;, but they are reasonably far behind Docker in popularity and market awareness.&lt;/p&gt;

&lt;p&gt;Docker's popularity was buoyed recently when Microsoft announced support for it in both Windows 10 and Windows Server 2016.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Docker so popular and why the rise of containers?
&lt;/h2&gt;

&lt;p&gt;Docker is popular because of the possibilities it opens for software delivery and deployment. Many common problems and inefficiencies are resolved with containers.&lt;/p&gt;

&lt;p&gt;The six main reasons for Docker's popularity are as follows.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Ease of use
&lt;/h3&gt;

&lt;p&gt;A large part of Docker's popularity is how easy it is to use. Docker can be learned quickly, mainly due to the many resources available to learn how to create and manage containers. Docker is open-source, so all you need to get started is a computer with an operating system that supports Virtualbox, Docker for Mac/Windows, or supports containers natively, such as Linux.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Faster scaling of systems
&lt;/h3&gt;

&lt;p&gt;Containers allow much more work to be done by far less computing hardware. In the early days of the Internet, the only way to scale a website was to buy or lease more servers. The cost of popularity was bound, linearly, to the cost of scaling up. Popular sites became victims of their own success, shelling out tens of thousands of dollars for new hardware. Containers allow data center operators to cram far more workloads into less hardware. Shared hardware means lower costs. Operators can bank those profits or pass the savings along to their customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Better software delivery
&lt;/h3&gt;

&lt;p&gt;Software delivery using containers can also be more efficient. Containers are &lt;em&gt;portable.&lt;/em&gt; They are also entirely self-contained. Containers include an isolated disk volume. That volume goes with the container as it is developed and deployed to various environments. The software dependencies (libraries, runtimes, etc.) ship with the container. If a container works on your machine, it will run the same way in a Development, Staging, and Production environment. Containers can eliminate the configuration variance problems common when deploying binaries or raw code.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Flexibility
&lt;/h3&gt;

&lt;p&gt;Operating containerized applications is more flexible and resilient than that of non-containerized applications. &lt;em&gt;Container orchestrators&lt;/em&gt; handle the running and monitoring of hundreds or thousands of containers.&lt;/p&gt;

&lt;p&gt;Container orchestrators are very powerful tools for managing large deployments and complex systems. Perhaps the only thing more popular than Docker right now is &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt;, currently the most popular container orchestrator.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Software-defined networking
&lt;/h3&gt;

&lt;p&gt;Docker supports &lt;em&gt;software-defined networking.&lt;/em&gt; The Docker CLI and Engine allow operators to define isolated networks for containers, without having to touch a single router. Developers and operators can design systems with complex network topologies and define the networks in configuration files. This is a security benefit, as well. An application's containers can run in an isolated virtual network, with tightly-controlled ingress and egress paths.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. The rise of microservices architecture
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raygun.com/blog/what-are-microservices/"&gt;The rise of microservices&lt;/a&gt; has also contributed to the popularity of Docker. Microservices are simple functions, usually accessed via HTTP/HTTPS, that do one thing — and do it well.&lt;/p&gt;

&lt;p&gt;Software systems typically start as "monoliths," in which a single binary supports many different system functions. As they grow, monoliths can become difficult to maintain and deploy. Microservices break a system down into simpler functions that can be deployed independently. Containers are &lt;em&gt;terrific&lt;/em&gt; hosts for microservices. They are self-contained, easily deployed, and efficient.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should you use Docker?
&lt;/h2&gt;

&lt;p&gt;A question like this is almost always best answered with caution and circumspection. No technology is a panacea. Each technology has drawbacks, tradeoffs, and caveats.  &lt;/p&gt;

&lt;p&gt;Having said all that...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yes, use Docker.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm making some assumptions with this answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;That you develop distributed software with the intent of squeezing every last cycle of processing power and byte of RAM out of your infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You're designing your software for high loads and performance, even if you don't yet have high loads or need the best performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You want to achieve high deployment velocity and reap the benefits of same. If you aspire to DevOps practices in software delivery, containers are a key tool in that toolbox.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You either want the benefits of containers, need them, or both. If you already run high-load, distributed, monolithic or microservice applications, you need containers. If you aspire to someday run these high-load, high-performance applications, now is the time to get started with containers.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  When you should not use Docker or containers
&lt;/h2&gt;

&lt;p&gt;Developing, deploying, and operating software in containers is very different from traditional development and delivery. It is not without trials and tribulations.&lt;/p&gt;

&lt;p&gt;There are tradeoffs to be considered:&lt;/p&gt;

&lt;h3&gt;
  
  
  If your team needs significant training
&lt;/h3&gt;

&lt;p&gt;Your team's existing skillset is a significant consideration. If you lack the time or resources to take up containers slowly or to bring on a consulting partner to get you ramped up, you should wait. Container development and operations are not something you want to "figure out as you go," unless you move very slowly and deliberately.&lt;/p&gt;

&lt;h3&gt;
  
  
  When you have a high-risk profile
&lt;/h3&gt;

&lt;p&gt;Your risk profile is another major consideration. If you are in a regulated industry or running revenue-generating workloads, be cautious with containers. Operating containers at scale with container orchestrators is very different than for non-containerized systems. The benefits of containers come with additional complexity in the systems that deliver, operate, and monitor them.&lt;/p&gt;

&lt;h3&gt;
  
  
  If you can't hire the talent
&lt;/h3&gt;

&lt;p&gt;For all its popularity, Docker is a very new way of developing and delivering software. The ecosystem is constantly changing, and the population of engineers who are experts in it is still relatively small. During this early stage, many companies are opting to work with Enterprise ISV partners to get started with Docker and its related systems. If this is not an option for you, you'll want to balance the cost of taking up Docker on your own against the potential benefits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Consider your system's complexity
&lt;/h3&gt;

&lt;p&gt;Finally, consider your overall requirements. Are your systems sufficiently complex enough to justify the additional burden of taking on containerization? If your business is, for example, centered around creating static websites, you may just not need containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion, Docker is popular because it has revolutionized development
&lt;/h2&gt;

&lt;p&gt;Docker, and the containers it makes possible has revolutionized the software industry and in five short years, their popularity as a tool and platform has skyrocketed.&lt;/p&gt;

&lt;p&gt;The main reason is that containers create vast economies of scale. Systems that used to require expensive, dedicated hardware resources can now share hardware with other systems. Another is that containers are self-contained and portable. If a container works on one host, it will work just as well on any other, as long as that host provides a compatible runtime.&lt;/p&gt;

&lt;p&gt;It's important to consider that Docker isn't a panacea (no technology is.) There are tradeoffs to consider when planning a technology strategy. Moving to containers is not a trivial undertaking.&lt;/p&gt;

&lt;p&gt;Consider the tradeoffs before committing to a Docker-based strategy. A careful accounting of the benefits and costs of containerization may well lead you to adopt Docker. If the numbers add up, Docker and containers have the potential to open up new opportunities for your enterprise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Wondering how you can monitor microservices for performance problems? &lt;a href="https://raygun.com/"&gt;Raygun APM, Real User Monitoring and Crash Reporting&lt;/a&gt; are designed with modern development practices in mind. See how the Raygun platform can help keep your containers performant.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The SDLC: 7 phases, popular models, benefits &amp; more </title>
      <dc:creator>Dave Swersky</dc:creator>
      <pubDate>Wed, 30 May 2018 20:17:09 +0000</pubDate>
      <link>https://forem.com/raygun/the-sdlc-7-phases-popular-models-benefits--more--1goo</link>
      <guid>https://forem.com/raygun/the-sdlc-7-phases-popular-models-benefits--more--1goo</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://raygun.com/blog/software-development-life-cycle/"&gt;Raygun Blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Software Development Life Cycle (SDLC) is a terminology used to explain how software is delivered to a customer in a series of steps. These steps take software from the ideation phase to delivery.&lt;/p&gt;

&lt;p&gt;We’ve broken down everything you need understand the SDLC from a high level, including the following points.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;History of the SDLC&lt;/li&gt;
&lt;li&gt;What is the SDLC, and why did it evolve?&lt;/li&gt;
&lt;li&gt;How does the SDLC work?&lt;/li&gt;
&lt;li&gt;Benefits of the SDLC&lt;/li&gt;
&lt;li&gt;The seven phases of the SDLC&lt;/li&gt;
&lt;li&gt;Seven phases of the SDLC infographic&lt;/li&gt;
&lt;li&gt;Popular SDLC models&lt;/li&gt;
&lt;li&gt;SDLC best practices&lt;/li&gt;
&lt;li&gt;SDLC management systems&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;a id="history"&gt;&lt;/a&gt;History of the SDLC
&lt;/h2&gt;

&lt;p&gt;The profession of &lt;em&gt;"software developer"&lt;/em&gt; has existed since the first computers, and their operators, as far back as the days of ENIAC and vacuum tubes. Practices and methods for developing software have evolved over the decades since the invention of the computer.&lt;/p&gt;

&lt;p&gt;Those methods have adapted to the state of the art in computer hardware, development tools, and modern thinking about the organizational management of software development teams. With this progress, new methods of software development have grown out of private and public software development efforts around the world.&lt;/p&gt;

&lt;p&gt;These methods vary widely in approach, yet they share a common goal: to develop software as &lt;em&gt;cheaply&lt;/em&gt;, &lt;em&gt;efficiently&lt;/em&gt;, and &lt;em&gt;effectively&lt;/em&gt; as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a id="what-is-the-sdlc"&gt;&lt;/a&gt;What is the SDLC?
&lt;/h2&gt;

&lt;p&gt;Software is a complex product that is developed and delivered through a series of steps. That is the one thing all the various methods have in common: one way or another, software, like all products, starts as an idea. The idea then becomes a document, or perhaps a prototype, depending on the method in use.&lt;/p&gt;

&lt;p&gt;Whether a document, diagram or working software, the &lt;em&gt;artifact&lt;/em&gt; created in one step becomes the &lt;em&gt;input&lt;/em&gt; to the next step. Eventually, the software is delivered to the customer. The sequence of steps used by these methods is commonly referred to as the &lt;em&gt;Software Development Lifecycle (SDLC.)&lt;/em&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a id="how-does-sdlc-work"&gt;&lt;/a&gt;How does the SDLC work?
&lt;/h2&gt;

&lt;p&gt;The process of software development is a never-ending cycle. The first release of a software application is rarely "finished." There are almost always additional features and bug fixes waiting to be designed, developed, and deployed.&lt;/p&gt;

&lt;p&gt;Reports from &lt;a href="https://raygun.com/platform/crash-reporting"&gt;error monitoring software&lt;/a&gt; about usability and bugs feed back into the process of software development, and become new feature requests and improvements to existing features. This is why the Software Development &lt;em&gt;Life Cycle&lt;/em&gt; is the most general term for software development methods. The steps of the process and their order vary by method. Regardless of method, they typically run in cycles, starting over with each iteration.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a id="benefits"&gt;&lt;/a&gt;Benefits of the SDLC
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"If you fail to plan, you are planning to fail" - Benjamin Franklin  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's very difficult to carry out a complex, team effort such as software development without some kind of plan. Each software development methodology (several will be detailed below) is a framework for how to develop software. There is much debate about which method is best overall, which is best suited to a particular type of software, and how to measure success in software development. One thing, however, is certain: &lt;em&gt;any&lt;/em&gt; plan is better than &lt;em&gt;no&lt;/em&gt; plan.  &lt;/p&gt;

&lt;p&gt;Without some kind of structured plan, software development teams tend to devolve into a "herd of cats." Developers don't know what they're supposed to create. Project managers have no idea how much progress is made towards completion of a project. Without a plan, the business doesn't even have a way to decide whether the final product meets their requirements.  &lt;/p&gt;

&lt;p&gt;A formally defined method for software development in the form of the SDLC achieves a number of benefits:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A common vocabulary for each step
&lt;/li&gt;
&lt;li&gt;Defined communication channels between development teams and stakeholders
&lt;/li&gt;
&lt;li&gt;Clear roles and responsibilities among developers, designers, business analysts, and project managers
&lt;/li&gt;
&lt;li&gt;Clearly-defined inputs and outputs from one step to the next
&lt;/li&gt;
&lt;li&gt;A deterministic "definition of done" that can be used to confirm whether a step is truly complete
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a id="the-seven-phases"&gt;&lt;/a&gt;The Seven Phases of the SDLC
&lt;/h2&gt;

&lt;p&gt;Click here to jump to the 7 Phases of the SDLC infographic.&lt;/p&gt;

&lt;p&gt;These steps are (very) roughly the same from one methodology to another. They tend to occur in this order, though they can also be mixed together, such that several steps occur in parallel.&lt;/p&gt;

&lt;p&gt;As we'll discuss later, Agile methods tend to "wind together" all of these steps into a tight, rapidly-repeating cycle. Waterfall methods tend to take each of these steps in turn. Outputs from one become inputs to the following step.    &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Planning
&lt;/h3&gt;

&lt;p&gt;The planning phase involves aspects of project and product management. This may include:    &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource allocation (both human and materials)
&lt;/li&gt;
&lt;li&gt;Capacity planning
&lt;/li&gt;
&lt;li&gt;Project scheduling
&lt;/li&gt;
&lt;li&gt;Cost estimation
&lt;/li&gt;
&lt;li&gt;Provisioning
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The outputs of the planning phase include: project plans, schedules, cost estimations, and procurement requirements. Ideally, Project Managers and Development staff collaborate with Operations and Security teams to ensure all perspectives are represented.  &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Requirements
&lt;/h3&gt;

&lt;p&gt;The business must communicate with IT teams to convey their requirements for new development and enhancement. The requirements phase gathers these requirements from business stakeholders and Subject Matter Experts (SMEs.)&lt;/p&gt;

&lt;p&gt;Architects, Development teams, and Product Managers work with the SMEs to document the business processes that need to be automated through software. The output of this phase in a Waterfall project is usually a document that lists these requirements. Agile methods, by contrast, may produce a backlog of tasks to be performed.    &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Design and prototyping
&lt;/h3&gt;

&lt;p&gt;Once the requirements are understood, software architects and developers can begin to design the software. The design process uses established patterns for application architecture and software development. Architects may use an architecture framework such as TOGAF to compose an application from existing components, promoting reuse and standardization.&lt;/p&gt;

&lt;p&gt;Developers use proven &lt;a href="https://en.wikipedia.org/wiki/Design_Patterns"&gt;Design Patterns&lt;/a&gt; to solve algorithmic problems in a consistent way. This phase may also include some rapid prototyping, also known as a &lt;a href="https://en.wikipedia.org/wiki/Spike_%28software_development%29"&gt;spike&lt;/a&gt;, to compare solutions to find the best fit. The output of this phase includes:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Design documents that list the patterns and components selected for the project
&lt;/li&gt;
&lt;li&gt;Code produced by spikes used as a starting point for development
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Software development
&lt;/h3&gt;

&lt;p&gt;This phase produces the software under development. Depending on the methodology, this phase may be conducted in time-boxed "sprints," (Agile) or may proceed as a single block of effort (Waterfall.) Regardless of methodology, development teams should produce working software as quickly as possible. Business stakeholders should be engaged regularly, to ensure that their expectations are being met. The output of this phase is testable, functional software.   &lt;/p&gt;

&lt;h3&gt;
  
  
  5. Testing
&lt;/h3&gt;

&lt;p&gt;The testing phase of the SDLC is arguably one of the most important. It is impossible to deliver quality software without testing. There is a wide variety of testing necessary to measure quality:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code quality
&lt;/li&gt;
&lt;li&gt;Unit testing (functional tests)
&lt;/li&gt;
&lt;li&gt;Integration testing
&lt;/li&gt;
&lt;li&gt;Performance testing
&lt;/li&gt;
&lt;li&gt;Security testing
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best way to ensure that tests are run regularly, and never skipped for expediency, is to &lt;em&gt;automate&lt;/em&gt; them. Tests can be automated using Continuous Integration tools, &lt;a href="https://codeship.com/"&gt;like Codeship&lt;/a&gt;, for example. The output of the testing phase is functional software, ready for deployment to a production environment.  &lt;/p&gt;

&lt;h3&gt;
  
  
  6. Deployment
&lt;/h3&gt;

&lt;p&gt;The deployment phase is, ideally, a highly automated phase. In high-maturity enterprises, this phase is almost invisible; software is deployed the instant it is ready. Enterprises with lower maturity, or in some highly regulated industries, the process involves some manual approvals. However, even in those cases, it is best for the deployment itself to be fully automated in a &lt;a href="https://raygun.com/blog/continuous-deployment/"&gt;continuous deployment&lt;/a&gt; model. &lt;a href="https://en.wikipedia.org/wiki/Application_release_automation"&gt;Application Release Automation (ARA)&lt;/a&gt; tools are used in medium and large-size enterprises to automate the deployment of applications to Production environments. ARA systems are usually integrated with Continuous Integration tools. The output of this phase is the release to Production of working software.    &lt;/p&gt;

&lt;h3&gt;
  
  
  7. Operations and maintenance
&lt;/h3&gt;

&lt;p&gt;The operations and maintenance phase is the "end of the beginning," so to speak. The Software Development &lt;em&gt;Life Cycle&lt;/em&gt; doesn't end here. Software must be monitored constantly to ensure proper operation. Bugs and defects discovered in Production must be reported and responded to, which often feeds work back into the process. Bug fixes may not flow through the entire cycle, however, at least an abbreviated process is necessary to ensure that the fix does not introduce other problems (known as a &lt;a href="https://en.wikipedia.org/wiki/Regression_testing"&gt;regression&lt;/a&gt;.)  &lt;/p&gt;

&lt;h3&gt;
  
  
  Software Development Life Cycle infographic
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--suqOEdks--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/the-software-development-lifecycle/phases-infographic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--suqOEdks--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/the-software-development-lifecycle/phases-infographic.png" alt="Software Development Life Cycle infographic"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a id="models"&gt;&lt;/a&gt;Popular SDLC models
&lt;/h2&gt;

&lt;p&gt;The two best-known methodologies within the SDLC are &lt;em&gt;Waterfall&lt;/em&gt; and &lt;em&gt;Agile&lt;/em&gt;. Below is a brief explanation and how they relate to the SDLC.&lt;/p&gt;

&lt;h3&gt;
  
  
  Waterfall
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HLhn3rVI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/the-software-development-lifecycle/Waterfall_model.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HLhn3rVI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/the-software-development-lifecycle/Waterfall_model.jpg" alt="IMAGE2_WATERFALL"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Waterfall method of software development follows a rigid, predetermined path through a set of phases. This method was adapted from traditional engineering. Ironically, &lt;a href="http://www-scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf"&gt;the paper&lt;/a&gt; credited as the origin of the Waterfall method, describes it as being fundamentally flawed. The method that is known today as "Waterfall" was mistakenly derived from a misunderstanding of this original work. Despite that fact, Waterfall became a very common, even standard methodology for large projects around the world.    &lt;/p&gt;

&lt;p&gt;Waterfall methodology begins with long planning and design phases. Once developed, the software then goes through phases of testing, and is finally deployed for use. Waterfall is considered by many to be too rigid to adapt to changing requirements. It does not support feedback throughout the process, leading to the implementation of requirements that may have changed during the development effort. This weakness in Waterfall led to the development of more flexible methodologies, such as Agile.    &lt;/p&gt;

&lt;h3&gt;
  
  
  Agile
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rqhH-5S3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/the-software-development-lifecycle/agile-manifesto.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rqhH-5S3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raygun.com/blog/images/the-software-development-lifecycle/agile-manifesto.jpg" alt="Agile-Manifesto"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://agilemanifesto.org/"&gt;The Manifesto for Agile Software Development&lt;/a&gt; was drafted and signed by a group of software developers in 2001. Reading the manifesto, you can see clearly the contrast between Waterfall, then the de-facto standard for development methods, and Agile, the newer method.    &lt;/p&gt;

&lt;p&gt;The Manifesto addresses key problems with Waterfall that led to challenges in software delivery. Where Waterfall tends to be a "one-way road," Agile is a more flexible framework that allows for uncertainty. Agile emphasizes teamwork, prototyping, and feedback loops that can change the direction of the development effort in response to changing requirements.  &lt;/p&gt;

&lt;p&gt;Several variants of Agile have emerged since the signing of the Manifesto. &lt;a href="http://scrummethodology.com/"&gt;Scrum&lt;/a&gt; defines specific roles and events, known as &lt;em&gt;ceremonies&lt;/em&gt;, as part of its practice. &lt;a href="https://www.versionone.com/what-is-kanban/"&gt;Kanban&lt;/a&gt; is simpler, with fewer prescriptions and more flexibility. Agile teams often combine these together to adapt a bespoke process that fits them best.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a id="practices"&gt;&lt;/a&gt;SDLC Practices
&lt;/h2&gt;

&lt;p&gt;Waterfall is still used by many companies around the world, however, Agile is rapidly gaining ground. Regardless of the method used, there are practices that reduce risk and increase the chances of success.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Source control
&lt;/h3&gt;

&lt;p&gt;The importance of a central source control repository cannot be overstated. Development teams that do not use source control are taking risks, both with the code, and their process. Using source control reduces risk by ensuring that work (code) is gathered together in a single place, on a regular basis. If a developer workstation or file server fails, the central repository saves the day. Modern Source control systems also support Continuous Integration.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous integration
&lt;/h3&gt;

&lt;p&gt;The purpose of Continuous Integration (CI) is to &lt;em&gt;keep the software in a functional state.&lt;/em&gt; Prior to the common use of CI, development teams would write thousands of lines of code, then attempt to integrate them. This integrating that much work all at once is tedious, painful, and prone to error. CI is an automation that builds software &lt;em&gt;every time the code changes.&lt;/em&gt; If there is a problem, the CI system alerts the developers. Following proper CI practices, no further work is done until the build is successful. This prevents errors and defects from progressing into software that should be as bug-free as possible.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a id="systems"&gt;&lt;/a&gt;SDLC Management systems
&lt;/h3&gt;

&lt;p&gt;Large, complex software development efforts can be unwieldy and difficult to track. An entire class of software systems has grown around this problem: &lt;a href="https://en.wikipedia.org/wiki/Application_lifecycle_management"&gt;Application Life Cycle Management&lt;/a&gt;. The larger the effort, the more indispensable these systems become. They offer features in work management, bug tracking, and analytics to assist in decision making.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;All software begins as a concept and flows through a series of phases until a release is developed and deployed. The &lt;em&gt;Software Development Life Cycle&lt;/em&gt; of an application or system continues, with updates and new features, until the day it is decommissioned or replaced. Several methods for software development have evolved over the decades.  &lt;/p&gt;

&lt;p&gt;Waterfall methods are still common, though Agile is rapidly overtaking it in companies large and small. Whichever method you choose, use the right tools for the job. Software is difficult to delivery reliably without them. There is no &lt;em&gt;perfect&lt;/em&gt; method, but it's far better to use some method than none.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Wondering how you can monitor the SDLC for performance problems? &lt;a href="https://raygun.com/"&gt;Raygun APM, Real User Monitoring and Crash Reporting&lt;/a&gt; will detect performance problems so you can fix them fast.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>sdlc</category>
      <category>beginners</category>
      <category>agile</category>
      <category>waterfall</category>
    </item>
  </channel>
</rss>
