Recent Posts

Thursday, January 29, 2009

Analyzing software development proposals in Mozambique (SIFIn)



I have been providing technical assistance for Jhpiego's CDC-funded UTAP (University Technical Assitance Program) program in Mozambique for a few years now. Initially, I got involved to help develop a web-based version of TIMS (Training Information Monitoring System) - a database used to monitor in-service training events - for the MISAU (Ministerio de Saude). I was actually very lucky to get this opportunity because the main technical lead on the project was leaving Jhpiego and there was nobody else who could pick up the work (at that point I was working in the MIS department and focusing exclusively on internal, administrative systems development).

Out of that project came SIFo (Sistema de Informacao de Formacao) . SIFo is an ASP.NET application that was developed entirely in Mozambique by a local software development shop. A large part of my work involved writing the initial RFP and analyzing the submitted proposals (the team developed a quasi-mathematical process for scoring the proposals based on criteria in the RFP and we also conducted in-person interviews to get additional insight into the vendors). I also made a few follow-up visits during the first training sessions and also to conduct an assessment following a pilot period.

Fast-forward two years... Today, we're working with the MISAU on a new application: SIFIn (Sistema de Informacao de Formacao Inicial). This application will support the Ministry's pre-service education programs. We're following essentially the same process we used for SIFo but this time there are a few differences: we have a larger number of proposals (13 vs. 4), the proposed solutions are more varied (existing, platform-based and completely new applications vs. only applications developed from scratch) and there is more interest in (and concern about) proprietary vs. open source software.

Unfortunately, I will not be able to join the team in Mozambique for the analysis process and won't have a lot of time to participate in the coming weeks (I'll be spending all of February in southern Africa focusing on learning technology work in Zambia, South Africa and Botswana). Since I won't be as involved and won't be as available to answer technical questions, I realized that it was important that the team (and the stakeholders from the MISAU and CDC) understand a few key concepts. What follows is essentially a set of terms with definitions and special notes that the team will need to keep in mind while going through the analysis process. I'm writing them here not only for my own benefit (so I can easily find them later :P) but, more importantly, to share them with others who may find themselves needing to take a critical look at software development proposals. So, without further ado...

Oh, wait. Before I get to the concepts, I don't want to forget to share a great resource that my old friend, Jon Dyer, shared with me: Open Options | Arguments about open source. While written for use in a K-12 environment, it contains a lot of great information and presents it in a way that is easy for non-techies to understand and digest.

Alright. So, for real this time, here are the terms and notes. And please, if I forgot something or provided incorrect information, please leave a comment. Thanks! :)


Cost: This can be the cost for the software itself or costs for licenses for use of the software. Software licenses are generally provided at multiple levels: site/organizational (unlimited number of users and connections), user (individual users of the system), connection (unlimited number of users but only a certain number can connect at the same time). Sometimes, an additional cost for user support and maintenance & upgrading of code may be included.

Licensing: Separate from licenses for using a product, this is licensing that pertains to intellectual property. Traditionally, software has been distributed under very restrictive proprietary licensing (e.g. that doesn't allow one to access source code or redistribute the software). Today, it is common to find "open source" software that does not have restrictions on access to source code (for reading and/or modification) and may also allow for redistribution. There are many different types of proprietary and open licenses (and even a third category called "free").

NOTE: It is important to draw the distinction between cost and licensing: some software is free but distributed in such a way that the source code is not accessible and some software can be purchased for a cost but provide free access to the source code. Also, keep in mind that while some software is free, the human resources necessary to install, configure and support it most likely will not be.

Tools & Languages: Applications are developed using a programming language (e.g. Java, C#, PHP) in combination with other tools such as databases, web servers, operating systems, etc.

Platform: Some applications are developed using a platform (Java Runtime Environment, .NET, Adobe AIR) which is a pre-fabricated set of software components, written in a specific programming lanaguage, that can be combined in various ways and connected to various tools to create applications.

Application code: The unique logic required to implement a tool is specified in the application code. This can be code that connects existing platform components or that directly accesses underlying tools (e.g. a database) to implement particular functional requirements.

NOTE: Tools, languages, platforms and application code can have associated costs (software, license, support, maintenance) and can be distributed using a proprietary or open license. A complete application may contain something from each of these categories, so it is important to look at each and understand what the associated costs are and how they are licensed.

Customization:
-Existing application: Customization of an existing application would be the quickest solution since all of the code is already written and would only require modification to meet unique functional requirements; however, there is generally a limit to the amount of customization that can be done. Because both the user interface and business logic are already developed it may not be possible to modify the application to meet completely the expectations for "look & feel" and functionality. Most importantly, one must be careful not to choose an application that is so inflexible that it requires them to change their business processes to meet the application's features.

-Platform-based application: At a very basic level, most applications share functionality. Turning that shared functionality into a platform allows one to more rapidly develop applications since the same code does not need to be rewritten every time. While development will not be as rapid as customization of an existing application, it can be significantly faster than developing something from scratch. This approach can also be very flexible and more likely to meet unique business requirements than a customization of an existing application since the platform code focuses on the low-level, routine tasks that are common. The high-level, unique requirements will be met by writing new code and linking together platform components. Sometimes, functionality may not be met, even by the existing platform components, and new ones will need to be developed or existing ones will need to be modified. Once this is done, the components will be available for use in other existing application or for applications that will be developed in the future.

-Completely new: An application can be developed completely from scratch, starting with nothing but a programming language and a collection of necessary tools (e.g. a database and web server). Taking this approach will generally take more time than customizing an existing application or building one based on an existing platform; however, if the project requirements are highly unique, this may be the only solution. Most applications are not that unique.

Friday, January 23, 2009

Something In the Way I Move


I was first introduced to mindmeister by Robin Good during a hectic, but thoroughly enjoyable, session on collaboration tools at last year's Corporate Learning Trends and Innovations. (BTW, do you say "at" when the entire conference was online?) I haven't played with it much since then, but I decided to go back to it today because I was working from home and didn't have access to my whiteboard. What you see above is the result: a rough draft of some of the elements (actors, settings, tools) of an e-Learning ecosystem.

While using mindmeister is very easy & intuitive, the experience was somehow less fulfilling for me than using my whiteboard. While I could add and remove nodes and text, link things, undo all of it, and make use of all the other cool functions, I missed physically doing all of these things. I missed my handwriting. I missed using my fingers to erase things. I missed drawing lines and shapes. So while the end product -- well, draft product -- was essentially the same in meaning, the process was much less enjoyable.

Maybe it's just a case of needing a better human-computer interface than the mouse/keyboard/monitor combination. If I could write and draw directly on my monitor with some sort of virtual marker and erase things with the swipe of my finger then I'd probably be a lot happier. I've never used a Tablet PC but maybe the experience is relatively similar. Maybe I should look into that...

Oh, and speaking of whiteboards, perhaps you might be interested in my earlier post, The Flickr Whiteboard Experiment.

Thursday, January 22, 2009

The personal is professional... maybe

People use different tools and different personas for personal and professional purposes. But sometimes, when there's cross-cutting usefulness, it's difficult to determine where to draw that line. Maybe it's unnecessary to do so, and perhaps we should just be ourselves -- personal AND professional -- everywhere.



BTW, as you'll notice, I also used this video as an excuse to play around a bit with transitions :P

Friday, January 16, 2009

Meeting challenges with ICT - A conversation

Among other things, it's my job as the Learning Technology Advisor at Jhpiego to identify opportunities to support the learning process through the appropriate application of technology (usually ICTs). This is not an easy task: there are various ways to go about this, from different perspectives. But there's one approach I think is probably most often successful (you observant types will probably have guessed what I'm about to write based on the title of this post and the diagram above :P).

1. One approach starts with the challenges and then looks for appropriate applications of technology. This is the most common at Jhpiego - people are looking for very specific applications of technology to well-defined challenges. This is easy for most folks at Jhpiego because their expertise is in public health and they're very familiar with the related challenges.

2. Another approach starts with the technology and then searches for an application. This approach is very tech-heavy and, many times, frightening (for various reasons) to people at Jhpiego. It's easy for me to come from this perspective because my expertise is in technology.

Both of these approaches amount to something akin to "pin the tail on the donkey" - I often feel like I'm searching around blindly, looking for the perfect match between the challenge and the technology. There's something about starting with very specific expectations - from either side - that just makes things very difficult: like trying to "square a circle."

3. What I think is the optimal approach is to start from a perspective where neither the challenge nor technology is overly specified, rather through conversation and iteration an optimal application of a specific technology to a specific challenge is discovered.

Of course, this optimal process takes time and sometimes there's not nearly enough of it. But I think it's critical for those involved to realize that it won't always be the case that the marriage - the alignment of the technology and the challenge - is obvious from the start. And there will likely be times when one realizes that a challenge does not have a specific technological solution or that a technology does not have a specfic application to a challenge. If either side comes to the process with highly specific expecations, unless the challenge or the technology are common (almost to the point of being overly simplistic), it's highly probable that the outcome will not be exactly what was expected or hoped for.

Friday, January 9, 2009

Can Bloom's taxonomy be used to measure job performance?


Earlier this evening I was reading an interesting post, Bloom's Digital Taxonomy, and as I read through each category's description and information I couldn't help but wonder about my own abilities and performance as Jhpiego's Learning Technology Advisor. So, for example, under "Applying" it mentions "operating and manipulating hardware and applications to obtain a basic goal or objective":

  • Can I effectively use Moodle to set up a course, upload content, build an assessment, etc.?
  • Can I use Blogger to post, add widgets, adjust & apply commenting settings, etc.?

Lucky for me, I think I can safely answer "Yes!" to these and many other questions I was able to think up. And I found myself working my way up the taxonomy asking similar questions until I reached the top: "Creating." And, once again, I'm happy to report that I think can actually use all of the knowledge & skills I have (i.e. competencies I have achieved) with learning technology to architect & implement entire technology-assisted learning (eco)systems.

So my question then became: could the same process be followed for any other position (especially one that wasn't technology based)? Could the taxonomy - from "Remembering" through "Creating" - be used as a basis for a sort of performance evaluation? My initial inclination is to answer "Yes." The lower-half is easy, but I think that even relatively repetitive & mechanical jobs have room for analysis, evaluation & creativity - and it is particularly possible once one has successfully progressed through the proceeding stages. Do you agree?

Tuesday, January 6, 2009

The Jenga of networks: sustainability

Jenga Tournament by kapungo, on Flickr

Yesterday @ the FAIMER colloquium, The Whys & Hows of (Online) Networking, I shared some ideas about the sustainability of networks which I also touched upon in The (potential) emergent properties & benefits of networks - Part 1. The crux of the proposition, as I discuss in the latter post, is that given enough nodes with sufficient degree, networks will be sustainable (i.e. resistant to loss of members) over time. Now, I don't know how many nodes are necessary or what the minimum degree is, but I'll certainly be thinking more about that. And in addition to number & degree, I imagine that the nature of the connections (i.e., the weight of the vertices) is also important. Also, unlike most abstract graphs, and maybe more akin to the activation function of a node in a neural network, there's something about the node itself (i.e. the individual) - their knowledge and how effective they are at transmitting it to other members - that is key to this. As I said, I need to think through this idea some more (and you can see that process unfold right here before your very eyes :P). Maybe I need to run this past Duncan Watts :) And I would certainly welcome your input, too!

So now you're wondering: what's with the Jenga reference? Well, as I thought about this sustainability idea I found myself thinking about the game: you know the one, where you have this stack of blocks and you remove one at a time, trying not to be the one who topples it over (see the photo above). In some ways, I wonder if a network is like that stack of blocks. And sustainability is about maintaining the structure despite removing individuals pieces. But the analogy is definitely imperfect: in a network you (hopefully) replace nodes in addition to removing them and there may not be any, or as few, foundational nodes (the ones that, with their removal, will bring about the demise of the network). I don't know. What do you think? Do you have a better analogy? I'll let you know if I come up with one...

The Whys and Hows of (Online) Networking

Here's a copy of the presentation that went along with today's colloquium discussion @ FAIMER. The focus was more on specific tools for networking that might be relevant to their work (hence, the long list of websites that support international development, education, healthcare, etc.). But I was also keen to get folks' thoughts on how networks are different from communities (Networks ≠ Community?) and to provide some potential reasons why networking - online or otherwise - may be important.

BTW, you may recognize some content from my recent post, The (potential) emergent properties & benefits of networks - Part 1, which I plan to return to soon. I promise! :P