I've been developing small-scale web applications for the past 5 years however I'm now starting to find myself getting involved larger projects and startups which require a whole new level development.
Being self-taught in HTML/PHP/MySQL I have naturally learned to write unresponsive, unscalable, unmaintainable, undocumented, unreadable non-object oriented code with tightly-coupled systems on shared hosting providers. I still use tables and <font> instead of any CSS, only use javascript if I can copy-and-paste it from somewhere and code directly on production.
Fortunately over the last few months I have seen the light and understand that if I want to build global-scale applications I need to re-educate myself on modern web development best practices.
I began a few weeks ago by studying Cloud Architecture and even going so far as to obtaining "AWS Cloud Architect" certification which has given me a good understanding of end-to-end scalable and highly available cloud architecture. I've also studied Google App engine and Azure and have a good understanding of the pros/cons of each service. I also already have a good understanding of DNS.
For a number of reasons I've decided on deploying my next few applications to Google App Engine, although I also have plans for some projects on AWS too. Because of this I've also decided Python could be the best language to use for scalability, rapid development and to take maximum advantage of Google's range of APIs. Although I've also been tossing up the idea of learning Java which would also allow me to easily work on some other non-web-based applications I'm looking at developing at the same time including mobile App development and embedded hardware.
My ultimate goal is to have the skills to be able to rapidly deploy scalable, responsive and maintainable web applications, mobile app back-ends and APIs (i.e. Google Cloud Endpoints). From a startup POV I also want to be able to effectively outsource further development of my applications.
I don't want to turn this into a code war (PHP vs Ruby vs Python vs Java) however I'm interested to hear your thoughts on how I should go about learning the following skills in the most efficient way and anything else that may be useful:
i.e.
- Are there any good courses or books that cover a number of these topics?
- Is there anyone that would be interested in tutoring me in the Auckland CBD area?
- Any good web-based resources that cover the whole spectrum of web development?
-- THEORY --
Agile Software Development
Unit Testing
Continuous Delivery
Version Control (git / mercurial)
Documentation
Object Oriented Programming Theory
MVC
Big Data / Map Reduce / SQL
-- LANGUAGE --
Python (or Java)
MySQL
HTML5
CSS
Javascript
-- FRAMEWORK --
web2py (or GWT / Spring)
Google App Engine


