I love to learn new skills, so I recently offered to do a piece of work involving a technology called Python (with Django, which is kind of like a library that makes it easier to use Python for database work).
I spent some time learning the language and the library, and found them both really interesting and would like to use them again. However, learning the language and the library turned out not to be the biggest problem for me in this piece of work.
The big problem was that there had already been a great deal of work done on this website in Python and Django, but in order to work on the system I had to recreate the environment on my own pc. To recreate that environment I really would have needed a script or explicit instructions telling me which environment variables to set up, which directories I needed, and which libraries (or packages) to install in which order. Unfortunately, none of that existed as far as I could find.
I find this is an extremely common problem when working on websites. Real software engineering techniques seem to be forgotten when developing websites. It is as though website programming is not "real" programming, but of course it really is. Unless a site consists of pure html pages, it is probably a programming environment!
In all programming environments, there should always be at least two environments within which to work - a live environment and a development/test environment. Preferably there would be three - one development environment, one test environment, and one live environment. All three should be kept as similar as possible except for new development of course. In order to create such environments, there should be a "master script" (or sometimes a set of master scripts that call each other) that recreates the environment, and this script should be updated for every new file, every new environment variable, every new table in the database etc. Some kind of source code control should be implemented also, to ensure that developers do not overwrite one another's changes. Problem reporting is also a good idea to control changes made in response to bugs or feature requests.
Without this kind of basic software engineering, life can be extremely difficult on any kind of web development. It is difficult to get new people up to speed, work often has to be re-done, changes often stop the system from working, and the live/production environment can also be full of bugs and problems.
I see so many clients who omit software engineering like this with the aim of "saving costs" or "cutting corners" only to find in the end it costs them one helluva lot more in the long term!
Tags: django, ebusiness, engineering, python, software
Share
-
▶ Reply to This