Monday, October 14, 2013

OPEN SOURCE: Challenging the Traditional Business Model

I'm sure you've heard the expression "you get what you pay for," but in the tech world this is not always the case. Many products, such as Apple computers, are significantly overpriced for what they are while on the flip side there is a huge community of software developers putting out free software that is as good or almost as good as paid alternatives.

Open source software is a major category of free software and a growing trend within the development community. Not all free software is open source, but a large amount of it is. Open source refers to the source code of the software being available for download as well as the software and this enables both collaboration on a massive scale where developers all work together to update and maintain the software as well as using it as a basis for other similar software or as a component within larger software applications.

Open source software is not only good for getting decent software for free, but also a great way to contribute as a developer and get one's name out in the development community. Open source projects can be great items to add to one's resume as well and is seen by many as a way to give back to the software community. There are many that swear by it and would prefer that all software be open source.

While open source software is a great resource, however, it also lacks consciousness as a framework of certain realities, namely that economics is intertwined with the modern world. As such it could never become the sole archetype of software distribution. The harsh truth is that the world operates on money and in the end people need to make money to survive. This is why despite the huge surge of open source software projects being brought to the internet, software companies remain profitable for the most part. There is a lot of useful things that are open source, but in the end the best things are not free. In all likelihood, the majority of contributors to open source projects do so in their spare time from working jobs for profiting companies. This by no means prevents open source from future growth, but rather just prevents it from becoming universal within the development community. Unless of course developers plan on working at fast food restaurants during the day and coding open source projects all night.

Wednesday, October 2, 2013

AGILE: Sprinting Your Way to Productivity

Agile Development LifecycleIt seems that the tech world is inundated with all sorts of buzz-words these days, but many are truly revolutionary and useful ideas. One of the most well-known of these is of course the "cloud" and "cloud computing," but while many companies do leverage this terminology just to seem like they have the hot new commodity, cloud computing as a whole has revolutionized how we do things. A lesser-known but equally revolutionary framework would be Agile. It has challenged decades-old methodologies for software development, namely what's referred to as "waterfall," and come out on top within many companies.

Agile at its core is just that. It emphasizes breaking projects into smaller pieces that can be easily managed and completed in short intervals known as sprints, which typically tend to be one or two weeks long. Each sprint involves completing small components of a much larger project, including testing which is arguable the biggest weakness in waterfall as it can sometimes take longer than the project itself to complete. Agile encourages creating the tests before any development has actually begun, which allows the product to be tailored to the tests rather than the other way around. The tests themselves are created directly from user stories, another key component to Agile.

Agile emphasizes constant communication between all parties involved in a project. This includes management, developers, the customer, and often even end-users. User stories are created that detail exactly what each component should do and why. From these the development team decides on manageable pieces to work on and, as mentioned before, tests that will ensure these requirements are met. While waterfall obviously also must integrate input from the customer, it is generally done at the beginning and a set of specifications are then created from it and the customer has little input until the final product is finished, hopefully ending up something like what was desired.

Since Agile uses short sprints to break the project into smaller components, the customer is constantly giving input and evaluating the work as it progresses. This alleviates the gap between customer wants and the realities of development. Constant input from the customer helps developers understand exactly what is needed and address things that are just not feasible in a timely manner, allowing the product development to be modified before it becomes too difficult to do so. Should a component not meet the customer's expectations or needs, the work lost to redo or modify it is minimized to at most a couple of weeks (the duration of a sprint). As the customer is constantly involved in the project, it also becomes easier to foresee uncertainties about the customer's needs and simply clarify before work even begins.

Agile has been adapted to many different types of projects even outside of the development community. It is a very useful framework and while not necessarily always the answer, it is very smooth and efficient when it is viable for a project. At the very least it is a powerful tool one can add to their list of skills by finding out more and trying it out. For more information, check out a website about Agile.