Development Practices

Last Updated: 11/24/2016

Introduction


I wrote this piece because I like sharing what I know! It's targeted at junior developers but it really just covers all sorts of gems to make you more computer savvy, so enjoy. If you aren't already aware, programming is one of the most up-and-coming professions. Technology stacks are becoming wiser by the day and there's a prolific movement for open source development. What does this all mean? There's more potential than ever before to build great things fast. I wouldn't call myself an expert quite yet, but here I have compiled what I have learned to help you get on the cutting edge in development practices.

Best Practice

Cloud Storage

Websites, hobby programming, anything you care to keep, you need to take advantage of cloud storage. Over the years I have lost so much data on my local machine. You might think "I wont be switching computers soon", or "my system is not going to get corrupted". You couldn't be more wrong. You won't remember, or have the time to keep those ancient files safe. Always have a back-up. Your best option is most likely BitBucket. They will store nearly unlimited data, forever for free, and in versions so you can always revert changes. You'll have to learn about version control to use it, but it's well worth it in the long run. Another good alternative is GitHub, the catch is you have to publish your work open-source if you want it to remain free.

Minimum Viable Product

I'm not going to dig to deep on this one but the idea is keep it simple! Myself and every last colleague of mine have many failed projects due to overly ambitious scope. Prioritize features and implement accordingly. Check out the book Lean Start-up, or if you have less time, the Lean Canvas - when designing your product.

Game Development

Choosing a platform

I am bias to promote engines that are light-weight and versatile. Generally, if the engine has some sort of gimick, like drag-and-drop functionality, it may have more limitations. Sometimes this is good for young developers to learn with, but not really ideal for creativity. A solid example of one of these engines is Unreal. You can make beautiful games with it, but you have to learn its unique work-flow to achieve what might be easy in another engine. Ultimately engines are a matter of preference. Even killer games like Rocket League are built with Unreal. Whether you're building for three dimensions or two, the popular, and my choice - is Unity. There's a plethora of alternatives, so just pick one and get started!

Starting Up

There are plenty of resources online about getting started. Google is your friend.

Analysis

"The secret to creativity is knowing how to hide your sources." In other words don't be afraid to model something the same way someone else did it. Here are some stellar Camera Systems with real game examples.

Publishing

When it's finally time to release you need to find someplace to publish. You wont get shelf-space in a store. Those days are basically over. It costs money to manufacture and ship, today it's almost always a digital download. You can choose to partner with publishers who might even help get your product heard, but they'll need an agreed upon cut. I recommend applying for Steam Greenlight. It has a low barrier to entry (one time $100), and will get your game heard. Assuming you get approved, don't release right away! Most of your income will be in this month of release so your game must be in tip-top shape.

Mobile App Development

Is your product a game?

If you build it with Unity it can be built out to a variety of platforms. Notably IOS and Android. You do still have to be careful to optimize the game for phones lesser processing. In some cases the burden of the engine layer may also hinder performance.

Is your product already a website?

Sometimes it's easier for the user to launch an app then type a url in the web. Instead of redeploying your site natively in Android and Xcode, you can just make a wrapper application. It's really only a browser that directs to your site. You can even detect if the user came from the app, and change the website accordingly.

Publishing

Getting your game or app published is a little different when it comes to mobile. Simply put, there is one location for downloading apps, the Play Store if Android, and the App Store if IOS. You'll want to be on both since nearly half your potential users are on IOS. It's going to cost a flat fee of $25 to be on Android, forever. With IOS your app will need to be approved with certain requirements, and I hope you make some revenue because it will cost $100/year to maintain. Since these stores have a low barrier to entry, even an amazing game will not really stand out. You need to invest in advertising if you're confident your game stands a chance.

Web Development

Landing Page / Portfolio

If your goal is just to build a website consider a Content Management System. Wordpress & Strikingly are pretty good. With most management systems simple things are easier than a custom server, more unique/dynamic functionality are harder. If you don't consider yourself technologically savvy this is probably your best bet. If your goal is to become a developer all you really need is a code editor. I'm a big fan of Notepad++ (Free). Webstorm, Visual Studio, and Atom are good too. There are plenty of options. If you're just getting started, learn HTML & CSS.

Publishing

First finish your product. You can create a landing page ahead of time if this is a product or service. The site requests an email to enter a mailing list about your product. Find a domain that isn't taken. Pay for hosting, tons of options. I currently use NameCheap. You'll need a File Transfer Protocol to upload your work. I like FileZilla. Always make sure you keep a back-up of your work, preferably on a server using git.

Web Store / Service Platform

The difficulty ramps up quite alot when a business is dependent on the page. Depending on your needs you might consider building your web application using bootstrap if you want mobile responsiveness. Angular if you need logic in your view. You might also consider using Amazon Web Services. They have extremely cool services, like automatic server scaling. You can even go serverless.

Sound Design

I'm not an incredible sound designer but some of my colleagues are really good! For simple slicing, edits, and recording - Audacity will do the trick. Reaper is my favorite Digital Audio Workbench, light-weight, good interface, intuitive, and good pricing options. For traditional sound engineers and musicians, Reason might be your style. If those don't suit you, there are plenty of other options. If you don't have time to work with synths or a DAW, BFXR is a nifty sound generator.

Hardware

There are several cool benchmark websites that compare parts without all the marketing garbage. Higher power rigs eventually have diminishing returns. In other words you're paying more for less as you approach the threshold of the latest and greatest.

Operating System

Miscellaneous Tools