There are many different considerations around software development as well as the development of the software developer. My last application development experience was back in the early 2000s. Now that it is mid-2010s (apx. 12 years later), there seems to be an order of magnitude of complexity (all of course designed to simplify and accelerate development). (note: this post is under continual editing)
The Programming Project at Hand
The project is twofold and I am looking at a five year time horizon. I am to tackle software development/software engineering and develop the skills and create applications for the first version of three products/services. The point is to build enough of an application to attract customers and additional developers. Some kind of open source/cloud service business model will be the most viable. In a future post I will outline the applications/services.
Cloud Platform and Containerization
There has been enormous progress on the cloud, virtualization, platform-as-a-service PAAS, and infrastructure-as-a-service IAAS fronts. Whereas 12 years ago there were few options (for individuals and small organizations) other than shared web hosts, dedicated web hosts, and co-location. Now there are many more options and approaches to containerization. One interesting PAAS is the Red Hat OpenShift platform. Add to this the support of Docker. Note that Heroku is another PAAS that is interesting for Ruby and Python apps. Another desktop/server virtualization tool is Vagrant. See also: - Docker to run PHPUnit Tests in parallel - Custom Domains on Heroku - Technical thoughts on OpenShift and Docker - DotCloud PAAS running Symfony
Github and Git Tools
The use of Github not only for source code control but as a publishing platform - Github Pages - using Jekyll and Octopress. Octopress/Jekyll also run on Heroku. Note there is a Jekyll import for a variety of blogging platforms and formats, such as WordPress. See also: - Github Pages getting started - Github Pages to serve from custom domain - Set up Git
Frameworks have changed as well, but there seem to be some good ones that have enough of an age to allow for a good set of tutorials, documentation, and shared code. - Ruby on Rails - Django - Symfony See also: - Symfony on OpenShift - Cloud9 on OpenShift and again - Symfony Tour - The Big Picture - Symfony, the Book - Symfony and JQuery Mobile
For development from platforms such as Chromebooks, something like a cloud editor is needed, such as Cloud9 IDE, and the (preferred by me) SublimeText, which has some great workflow options and tips and tricks.
HTML, CSS and JS Toolkits
For web-based stuff (HTML5 and Mobile Apps) there are toolkits for managing the interface. Bootstrap is a popular one, but Semantic UI seems much more sane. See also JQuery Mobile and Cordova (for changing a web app, and even a Chrome app into a mobile app).
Programming Best Practices
This is a way of developing which apparently is very good. PHP Unit Test is one of the main tools.
Additional Tools and Resources
Notes and Miscellaneous
- Steps for development (what to learn in what order)
- Apps to develop first
- Bugtracking (Github issues?)
- Blog platforms (WordPress/Octopress), plugin development
- Project management tool (Basecamp?)