Working locally means that you have an instance of your web app running on your machine. You edit files directly on your machine, rather than uploading every change to the server.
It is tempting to edit files directly on your shared server, but don’t do it! It is a very bad practice and will bite you over and over again if you let it become habit. You may start out thinking of a website as one chunk of information and logic intertwined, but working locally and pushing your completed changes up to the server helps you to understand the difference between the data/logic that lives in the database and the data/logic that lives in the code. Understanding this difference will allow you to create more modular systems by putting all data in the database and all logic in the code.
Also, by editing a live site, you must always be afraid of breaking it and will have to be more careful. Phooey, download your site locally and break it over and over again! Only by breaking it will you learn how to fix it and make it better!
Use Version Control
Version control is a way to keep track of all the changes you have made to your code. It allows you to save working states of your code and easily revert back, and see differences between states. It also allows multiple people to work on the same code base without overwriting each other’s changes
Version control is one of the first things you should learn as a developer! There are people graduating with computer science degrees from universities who have never used any form of version control. This is a travesty! It is such a simple thing, and so important - not only is it essential for working with others, but as a way to provide a safety net and allow you to freely experiment with code and always be able to get back to a safe spot. Learn how to use git!
Get Good at Computering
Learn how to use your computer! Learn keyboard shortcuts for the programs you use. Develop workflows that work for you and allow you to be more productive. Learn how to use your editor, and find some great debugging tools. Go to local meetups and mingle with other developers and ask questions - people will gladly help! Ask to pair with an advanced developer and pick up on some of their tricks. This includes learning the command line! Start by learning how to navigate your file system, make folders and delete files. As you become a more advanced developer being comfortable on the command will save you a bunch of time.
Believe in Yourself
So many people think “I could never do that with web development, I am not smart enough, I could only ever tinker with Wordpress”. This is a load of bullshit. Web development is hard, this is true, but an awesome thing about web development is that all the information is out there just waiting for you to find it! You absolutely do not need a formal education to be a great developer.
With great open source software like Wordpress and Drupal, you don’t need to know a lot to be able to get started creating real software that gets work done. I started in web development by hacking together some open source PHP. I lurked in forums, followed tutorials, and installed modules and for a long time. I didn’t really embrace learning to code, because I thought I wouldn’t be good at it. I learned some CSS and some Drupal and went to town making websites for people that had a surprising amount of functionality. Go ahead and start there, but use it as a platform to learn more!
As you start writing code and realizing how powerful it is you will never want to install anyone else’s crappy module again! As you write more code and begin to appreciate the elegance of code you will be pulled away from PHP. Look into Ruby! It is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. It is also said to be optimized for developer happiness. That sounds pretty good, doesn’t it?
Also, Ruby is an object-oriented language. Object-Orientated Design (OOD) is fantastic way to design and build software that, among other things, promotes practices that make software easier to test, debug, change and maintain over time.
There are lots of great, fun resources to learn Ruby, Rails and OOD.
Originally posted on the MHS Blog