The Myth of the Specialized Programmer
Ever heard of it? Apparently there is this mystical creature who is a master of his trade, knows all the tricks in the book and is generally just...
I recently came across Rahul Singh's Non-Programming Skills Every Programmer Should Have
I recently came across Rahul Singh's Non-Programming Skills Every Programmer Should Have Thanks to Aaron Amstutz. The post outlines six important areas of personal development for programmers:
It's a great post, and as soon as I read it, I flipped the question around and asked myself, "What dev skills and knowledge do I have that benefit me day-to-day working with a bunch of programmers at a digital strategy agency?" Not surprisingly, there are a number of things that come to mind!
HTML and CSS have long been at the core of building websites, and conveniently enough, they're the easiest to learn as a complete beginner before jumping into more in-depth programming languages. I'd go beyond saying anyone working with programmers should know HTML and say that EVERYONE could benefit from some basic HTML knowledge. It's key to understanding the underpinnings of the web and how information is presented and designed for the end-user.
Bonus: Browser Scripting!
Once you have your head around HTML an CSS, take a look at Javascript and jQuery. They're the primary building blocks for adding interactivity to websites and integrating 3rd-party services. Javascript syntax is fairly simple, and jQuery provides a concise Javascript library for quick and easy development. As a non-programmer, it's not critical to know browser scripting languages inside and out, but be sure to understand how scripts work and the sort of functionality they provide.
But How?
Once you have a good understanding of the basics around HTML, it's time to blow your mind with server-side languages and functions! Imagine that you have a 50 page website and each page has unique but similar content (say a title, a couple images, and a main content section). It'd be tedious work to manually create each page by writing HTML. Instead, throw all of your content in a relational database, and use server-side languages to dynamically generate content. Essentially what happens is a) a webpage is requested by a user, b) the database returns content which is plugged into the appropriate functions in the server-side language, and c) the server-side language spits our the requested webpage as HTML for your web browser.
Modern CMS solutions like Drupal and WordPress are based on server side languages (PHP, in both those cases). The most important function they play is sitting on top of a database to provide a user-friendly administrative experience for managing content on the site. The modern CMS has revolutionized the way most major websites are built by allowing programmers to create sites that can then be managed and updated by non-programmers. It's worth understanding how inputs on the administrative side of a CMS result in outputs on web pages.
But How?
Once you've got your head around the basics of web languages, browser inspectors are godsends. My personal favorite is Chrome's Developer Tools. With these tools, you can inspect page elements and see the specific code producing them. Better yet, you can modify the code and see the output in the browser window in real-time! For developers, they're incredibly handy to aid with debugging. For you, they can be important tools for QA, and yet another way to get familiar with code.
But How?
Repositories, branches, merges, pushes, pulls, dev, staging, prod! Web development file management can be a bit confusing at first, but thankfully the GUI file managers of modern operating systems are a good place to start as a basis for understanding the fundamentals; you can move files between folders, make a copy in multiple locations, or overwrite files with newer versions. Version control's purpose is to bring order to the chaos that comes with multiple people working on the same files at the same time and managing multiple copies of those files in different locations. Take the time to learn common workflows for web development with multiple copies of a site and how developers manage to work together without creating conflicts in the code they're writing.
But How?
Domain names technically aren't even necessary to navigate the web. They're essentially just a human-friendly layer on top of IP addresses. That said, they've become a crucial part of the online experience, so it's worth knowing how a domain name works and the purpose of DNS records. If you can figure out nameservers, A records, CNAME records, and MX records, you're golden for all practical purposes.
On the hosting side, you'll want to know enough to talk intelligently about what the software installed on servers generally is and what purpose it serves. It's also worth knowing the difference between shared hosting, virtual versus dedicated hosting, and of course, "the cloud".
But How?
Learn how to learn and have a passion for ongoing education! A key skill of any good programmer is both the ability to pick up new technologies and languages quickly and the resolve to be dedicated to continued learning. Programming is an ever-changing field, and core languages, technologies, and development methodologies used today may be completely irrelevant in five years. As either a programmer or a non-programmer, be okay with the fact that if you don't stay current on technology trends, you'll fall behind the curve. It's not a particularly profound notion, but If you're not passionate about investigating the latest and greatest in technology, it's going to be hard for you to succeed in the industry. Don't get stuck in a rut relying on decade-old technologies, because someone is coming up with a better solution right this moment!
But How?
One of the secrets to programming that I think is a major barrier for many people trying to learn is that it's okay to break things. When you're learning, I'd say it's even encouraged behavior. A common response I've seen from less tech-savvy people is that they're hesitant to try something until they have an understanding of all the steps involved. The bad news with programming: you're never going to fully understand all of the steps involved until you've tried them.
There's no better way to learn than by trying to fix some code you managed to break. Delete a line of code and see what happens. Add twelve if statements within each other. Write some messy code. Just experiment until it works. There's no such thing as someone new to programming writing clean, optimized code. If you do, you're not pushing your limits far enough to learn. The good news with programming: it's generally hard to impossible to break things to a point that they can't be fixed.
But How?
If you're in a position where you interact with programmers (which is an increasingly common occurrence in many modern workplaces), you'll benefit from being able to speak their language to some extent, and they'll appreciate that you're interested in their area of expertise. There's nothing keeping you from developing those skills but time; just jump in and learn how to swim. Consider the advice above your kiddie pool!
Any other programming skills and knowledge you think are important for a non-programmer to possess? Let us know!
Ever heard of it? Apparently there is this mystical creature who is a master of his trade, knows all the tricks in the book and is generally just...
Being a programmer is a profession. It is a high-skill job that demands a large initial investment of time as well dedication to continuing education...
First, let me start be saying I believe that everyone should learn how to program, the same way everyone should learn to read and write. In today's...
Be the first to know about new B2B SaaS Marketing insights to build or refine your marketing function with the tools and knowledge of today’s industry.