Software Development Considerations

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)

Software sin medida

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:

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:

Programming Languages

While there are many newish or currently popular programming languages, the most widely used and popular are still those on the radar 12 years ago.

Programming Frameworks

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.

See also:

Editors

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

There are many such documents; the following are meant to be useful, not exhuastive:

Test-Driven Design

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

  • Kivy
  • 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?)