Monday, December 17, 2012

Systems Analysis Project

After working with a local non-profit agency, I was able to identify a critical business need within the organization. After meeting with them and discussing the issue, I was able to compile the issues into some analysis documents. I was able to generate a formal systems request, provide a comparative feasibility analysis for different solutions, as well as generate some user stories.

I'll be discussing this project as well as the organization as a whole in the video posted here:

Systems Analysis Presentation

The analysis of the solutions for the organization is still on-going. While the organization is still leaning toward developing a MS Access solution, I feel there may be some unexplored avenues that may provide the functionality they are looking for. It is my intention to see this project through to the end and to provide the agency with a usable product that addresses their needs.

For all developers out there, I'd highly recommend taking on some "pro-bono" work. It has given me an opportunity to reach out to my community and help those who do not have the financial resources to seek out solutions to their problems. I've come to find that there are many non-profits out there who struggle to find funding just to keep servicing their communities. Finding additional funding to hire developers is extremely difficult. In the end, I think the entire project will have taken me a total of around 20 hours to complete. While that's a significant amount of time to sacrifice for no money in return, I believe that it offers a chance to learn as well as a chance to grow professionally. In the end, I think it's a worth while investment.

It's been a blast working on this project, it has been challenging as well as rewarding. I look forward to completing this project and taking on more projects like it in the future.

Saturday, December 15, 2012

Cucumber Scenarios - Inventory Project

Currently, I am working on developing a software solution to address issues with inventory at a local non-profit agency. After analyzing their processes and problems, I have gathered their core requirements for the product. To ensure that I have captured the business requirements accurately, I utilized user stories and created a few cucumber scenarios. For those who are not aware of cucumber, it is a tool for running automated acceptance tests written in a behavior driven development style and is written in the Ruby programming language. Cucumber allows a developer to write acceptance tests in customer-understandable user stories.

Utilizing cucumber allowed me to accurately represent their requirements, step through the entire process, and generate a test scenario to test against in one step. I uploaded two of these cucumber features to github, you can view them at the following link :

GitHub Repository for Inventory Project

To UML Or Not To UML? That is the question...

UML was developed with the intent of standardizing the modeling language in the field of object-oriented software engineering. It utilizes graphic notation techniques to produce a visual model of an object-oriented software system. Specifically, UML is used to specify, visualize, modify, construct and document the artifacts of an object-oriented software-intensive system under development.

UML, at it's core, puts a strong emphasis on design. In practice, it is utilized to make attempts to model software in detail. The drawback with this approach, in general, is that potential for "analysis paralysis" is very high. In an age where extreme programming methods and agile development is becoming the norm, the "big design up front" method is becoming just another road block to developing working code. 

That being said, UML offers some very key advantages over any other non-standardized approach. The creation of a standardized method of representing data is a major advantage to all software engineers and developers. It allows everyone to have a common understanding of a single graphical representation with very little misunderstanding. 

UML has it's advantages as well as it's disadvantages, some say it's the standard while others say it's on it's way out. An argument can be made both for or against it. Personally, I find it has a place in developing simple applications, but it becomes extremely overwhelming when utilizing it with large scale applications. UML can be advantageous to any team given that they use it in the right context. 

Tuesday, December 11, 2012

Skill Of Programmer Limited by Ego?

It's very easy to be overwhelmed when programing software. At times, it seems as like there is so much to learn in order to accomplish your task. Other times, parts of a project seems so mundane that you lose interest. Overall, completing an entire program or simply learning how to program requires humility and focus. 

An excerpt from Code Complete, written by Steve McConnell, states this about the character of a programmer:

"Nobody is really smart enough to program computers. Fully understanding an average program requires an almost limitless capacity to absorb details and an equal capacity to comprehend them all at the same time. The way you focus your intelligence is more important than how much intelligence you have."

McConnell, Steve (2009-12-07). Code Complete (Kindle Locations 26572-26574). OReilly Media - A. Kindle Edition. 

This statement, in a word, summarizes my entire, at times turbulent, relationship with programming. It's a love and hate affair that has challenged me on an emotional and intellectual level. As McConnell stated, it is much more important to be able to focus your intelligence that it is to possess intelligence. That reminds me that regardless of how much one learns, one must realize that they will never be able to "know it all". To be successful, you must possess the humility to realize this fact and take steps to change your view of programming as a whole. If you allow yourself to think that you "know it all" and you don't have to keep learning, your skills, and ultimately your success, will be limited by your ego.

In addition to humility, a programmer must make a constant effort to remain curious in order to stay current with technology, one must be intellectually honest to understand their weaknesses and address any shortcomings, and one must possess the discipline to approach every task methodically and with purpose. 

McConnell accurately summarizes the necessary skills of a programmer in Code Complete, at least in my opinion. However, I believe that these skills mentioned are critical to just about any skill you wish to excel in. 

Friday, December 7, 2012

Feasibility Analysis for Parents And Children Together

This is a feasibility analysis for Parents and Children Together. The project seeks to modernize current inventory tracking methods as well as provide useful reporting functions to users.  The product will replace the current spreadsheet approach to tracking inventory with a more efficient database tracking solution. Parents and Children Together has decided to develop an access database to track inventory and monitor statistics. They have decided against a web based program and decided on a stand-alone database system with a simple GUI. The results they require can be achieved through Microsoft Access. 

The idea's technical feasibility (Can we build it?)
- Familiarity with Functional area - developer has familiarity with inventory tracking processes
- Familiarity with Technology - developer has been and developing access databases for many years
- Project size - small project
Compatibility - organization currently utilizes a few access databases and is familiar with the technology.
The economic feasibility (Will it provide business value?)
- Development costs - 3 hours to develop.  2hrs+ training of staff.
- Annual operating costs - 0
- Annual benefits - reduction in staff time spent on tracking inventory and more efficient tracking methods alowing staff to focus on other critical processes.
- Intangible costs and benefits - contributes to the organizations mission to provide to those in need
The organizational feasibility (If we build it, will it be used?)
- Project champions - Karen Cardenas, Head of Administration
- Senior management - Senior managements supports the effort as it would reduce time spent on task and allow them to reallocate man-hours to other tasks.
- Users - Parents and Children Together administrative staff
- Other stakeholders - customers of organization wanting to borrow items.
- Is the project strategically aligned with the business? Yes, this project addresses one of the major functions of the organization. Developing this solution will make this process more efficient.