Intelligent Open Source Software Engineering

OK. Let's break this phrase down into it's components: *Intelligent*Open Source*Software Engineering

Intelligent
Not all Software Engineering is created equal.

Open Source
There are two kinds of software in the world...software that you own and software that owns you. These are known as Open Source software and Commercial software. With open source software, the process of writting, updating, distributing and maintaining the software is entirely transparent. This has many positive effects on software development, quality and capabilities.

Software Engineering
Software Engineering is the process of designing, modeling and finally producing code that a computer can use. There are Programmers, Developers and Software Engineers.

Programmers (a.k.a. "Code Monkey", "Trench Coder", etc.) are at the low end of the totem pole. These are the grunts who "bang out" code, usually without any awareness of the system(s) it will be running on nor the environment that will be provided. The vast majority of people in the world who write code fall into this category. Length of experience alone is not a metric that can elevate one from being considered as part of the "programmer" masses on it's own.

The next tier of software producing human are known as Developers. The Developer is one who can approach the creation of a new piece of software with a plan in mind. They may even sit down and try to figure out some (though, usually, not all) of the organization of the program before writting certain parts of the code.

A Software Engineer is one with a great deal of real-world experience. They never write code for complex applications without first designing the entire system. There will be UML diagrams, Flowcharts and database diagrams, to name a few. There will almost always be complete documentation for the program for administrators and users. There will be complete documentation of the entire API of every last component in the application.

The Software Engineer is familiar with and applies many advanced software development techniques, methodologies and practices. For example, anti-feature-creep, strict use of CM and the proper application of design patterns are all innate traits of the consumate Software Engineer.