This article is for the graphic/web designer hesitant to learn programming, or anyone who's skirting with wanting to learn programming. And when I say “programming“ I'm referring to web development and mobile development, which is the kind of stuff a web designer or even a graphic designer would dabble with. I'll begin by approaching common complaints.
But I suck at math
I struggled with math all throughout my school days. As an adult I still can't do basic math in my head. If anyone can say they suck at math, it's me! Yet I managed to learn programming. Contrary to popular belief, creating a database driven website or an Android application doesn't really involve any math. At the most only basic addition and subtraction is necessary. Think of programming like LEGO's; it's all a matter of knowing where to put the pieces.
But it looks so hard
People have said the same thing about Photoshop, yet as a designer you know Photoshop like the back of your hand. Heck, people are even intimidated by Microsoft Office, yet over time it becomes so easy for anyone. Programming isn't any different. It looks intimidating at first, but with some patience and determination you'll learn it. “Determination” is the keyword; to learn programming you need to want to learn programming.
But I'm a designer and it's not required
You're right, a graphic designer or web designer typically isn't expected to know more than HTML & CSS. However if you want to become more successful and make more money, learning programming is essential. You don't need to become a programming genius either. It goes a long way if you can help the web developers in your team with basic programming tasks. Or if you're working solo, being a web designer+developer makes you a highly marketable professional.
Ok, but I still think it's not required
Look at it this way: I believe the scale between common websites and applications is tipping in favor of applications. And by “applications” I mean smarpthone apps and large websites with custom development. The reason why is because there's a plethora of services out there for small business to build their website without a web designer. Even when a web designer is hired, he/she will more than likely just install WordPress with a purchased template and call it a day. It's too easy for anyone to make a regular website these days.
Secondly, we're in the age where people are accustomed to regularly using the Internet and apps on their smartphone. Today's technology is inspiring entrepreneurs to come up with ideas that require the skills of a programmer in order to have that idea come into fruition. Most particularly, they'll willing to pay a lot of money to get it done! The demand for programming increases by the day.
Even if your goal is to become a Creative Director (which many designers aspire for), entering that position with a background in programming offers many benefits. You'll be able to effectively manage application projects. For example, you can make important architecture decisions on your own without having to push such responsibility onto one of your programmers.
So the benefits of knowing programming are plentiful! Have I peaked your interest to learn programming? Even just a little? Keep reading!
Which Language To Learn
Web development: PHP or .NET?
When it comes to web development, programmers use either PHP or .NET (pronounced “dot net”). .NET is a framework so the languages typically used with it are C# or VB (Visual Basic). .NET is heavily adopted by Corporate America, while everyone else uses PHP. So if the corporate environment is your cup of tea, you should go the .NET route. When I said PHP is used by 'everyone else' I'm talking freelancers, small business, advertising agencies, and companies that don't care what the developer uses as long as they get the work done. Most web hosts, especially the cheaper ones, use Linux servers so you kind of have no choice but to use PHP.
PHP and .NET have been around a long time and offer strong support. There are tons of books and tutorials everywhere for them. There are CMS's, UI/widget libraries, and all sorts of handy goodies to help you get the job done faster. If you're ever stuck you can easily find a fix with just a quick Google search. With so much help it's hard to come up with an excuse not to learn web development!
When working with PHP or .NET you're almost always working with a database as well. PHP works with MySQL and .NET works with SQL. With only slight differences, MySQL and SQL are pretty much the same thing.
Mobile development: Swift or Java?
Swift is the language for iOS (it used to be Objective-C) and Java is the language for Android. Android is easy to develop for because Google offers their development tools for Windows, Apple's OSX, and even Linux. Apple, on the other hand, only offers their development tools for OSX.
Owning a phone for the mobile OS you're developing for isn't required, but it definitely helps. For example, Android's development software comes with an Android emulator for testing your apps. However you also have the option to instantly send your app-in-development to your Android phone for a realistic testing experience.
So what's the verdict, do you go for Swift of Java? There's no easy way to answer that question. Ask a Developer provided a good answer. I'll say this, though: learning Android is certainly the easiest due to its tools having support for every OS. In addition, Android is more popular than iOS.
Video tutorial websites cover virtually every programming language. I recommend just two:
- Lynda - This is the #1 website for video tutorials.
- Pluralsite - Lynda lacks in advanced programming topics. Pluralsite is a very thorough video tutorial site for beginner level up to advanced. The senior developers I've known recommend this site to everyone.
Books are my preference when it comes to learning something technical. My complaint with most books on programming is that they go through all the commands without connecting them. They use weak examples that I would never practice in real life. Sitepoint, however, has become my favorite publisher because all their books are practical and use real world examples. For learning PHP I recommend their book: PHP & MySQL: Novice to Ninja.
I haven't explored enough .NET/Android/iOS books to recommend any. You can just check out Amazon and choose a book that's fairly new and has good ratings/reviews. Book publish dates are especially important for Android & iOS because those OS's are constantly evolving, rendering old books obsolete.
.NET has some strings attached. I'm going to try to explain this as briefly as possible. As I mentioned above, .NET is a framework not a language. First you need to decide if you want to pursue C# or VB (Visual Basic). C# is the most popular so I recommend it. In addition, “MVC” is the most popular style of programming for .NET. So to wrap this up, when searching for .NET tutorials you should be looking for “ASP.NET MVC”.
Learning from Google.com
Every programmer's loyal sidekick is Google. After going through video tutorials or books and you begin a project with said language, Google is by your side to help with any problem you encounter. You'll almost always stumble upon posts on Stack Overflow. Remember it's all a matter of asking the right question. If you're continually searching Google & Stack Overflow with no luck, chances are you're probably not asking the right question.
To begin with, here's the software I recommend for programming in PHP:
- Dreamweaver's fine. If you're comfortable with it there's no need to jump ship.
- Hardcore PHP developers like to use PhpStorm (Windows only, $99) or Sublime Text (Windows & Mac, $70). Sublime Text offers many helpful plugins.
- If you need a free option, Adobe's Brackets (Windows & Mac) is awesome. It's a very clean, simple editor with only the most essential features.
- Notepad++ is a popular free editor (Windows only). It offers tons more features than Brackets. If you want to make it more like Dreamweaver I recommend watching this video.
Next you need a testing server (a virtual server). I recommend XAMPP; it's free and for Windows & Mac. It also lets you create and manage MySQL databases. The only important note is that once you install XAMPP, you need to work in XAMPP's “htdocs” sub folder. Place all your web pages in there. The PHP & MySQL: Novice to Ninja book I recommended walks you through this whole testing server process. There are also plenty of YouTube tutorials for XAMPP. That's pretty much it. With XAMPP installed you're ready to follow PHP & MySQL tutorials and make your first database driven website.
Say what you want about Microsoft, but when it comes to .NET they're pretty awesome because they give you everything for free. Oh, and it should go without saying that these programs are Windows only (sorry Mac users). Download and install the following:
- Visual Studio Community (Documentation) - previously called Visual Studio Express
- ASP.NET MVC
- SQL Server Express (Documentation)
Is there a catch to this free software? Sort of. Microsoft offers invaluable features for teams, which are not included here. In other words, Microsoft is giving you this free software with the assumption that you'll be the only one using it.
Visual Studio Express comes with a .NET testing server; you can virtually test your .NET sites with ease. And with SQL Server Express you can work with SQL databases locally. As for tutorials, you can look up ASP.NET MVC videos on YouTube.
The tricky part is publishing your .NET site. You can't do that with a regular web host since most of them use Linux servers. You need to look for Windows server hosting.
Starting Android development
Google gives you everything you need for free. Even better, the tools are available for Mac as well! Download and install the following:
Starting iPhone development
All you need to download is Xcode and you're good to go. It comes with the iOS emulator and everything. Next read through the Developer Library or watch free iOS development videos on YouTube. Remember, Swift is the new programming language for iOS development as of June 2014. It used to be Objective-C.
Have I convinced you to learn programming? I hope so. I have a feeling you're saying to yourself “It just looks so complicated...”. Trust me, once you give it a chance and overcome that one hurdle, all of sudden learning the language isn't so bad.
Remember, to learn a programming language you have to want to learn it. It helps a great deal to work on a project that's fun. Do you like sports? Make an app about sports, or even make a sports game! If a project is fun then you'll learn the language without much effort.