Glad you stopped by. It's been a bit slow over here for the past few months.I wonder why... I am sure it has nothing to do with the fact that I have not posted anything in that time :-).
Ok...i guess it does have something to do with it.
I know that you have gotten used to hearing (or rather reading) this by now but you have to believe me when I tell you that the past few months have been hectic and action packed.
Towards the end of 2014 I spent some time in Lagos, Nairobi and Cape Town hanging out with some of the best and brightest in the Sub Saharan Africa user experience (UX) design community (I did it again this year). I then spent the rest of year working to see what could be done to ease the pain of being an internet challenged software developer in today's world.
And also in that time i commenced lesson 2 in a course I am currently taking called "How to work under a new boss" as like I told you the chairman of the board (my now 16 month old son) of our startup (my wife and I) has simply been running things with an iron fist as he guides our company from start phase to growth phase. The young man has made it very clear that he does not take kindly to open laptops anywhere around the house and so you will understand why it has been a bit tough to hack out a post all this while. In fact the only reason I was able to get started on this post was because I was on a plane heading again to East Africa to hang out with some of the top community leaders in Sub Saharan Africa who were coming from far and wide (and that was in March … :-D)
So enough of the gossip....what are we talking about today ?
I remember that during our last chat , I talked about Codelabs, Hackathons and Developer Contests which we looked at from the perspective of the audience that these initiatives are meant for (i.e. developers / techies) and I promised that in my next post I would revisit this topic but this time from the perspective of the individuals, organizations or communities that make these initiatives happen.
For those who are not familiar with Codelabs, Hackathons and Developer Contests and would like to understand the way I used those terms in this article, I sacrificed a lot of keystrokes in the previous article to shed some light on what they mean in the context of this discussion, so you may want to take a look.
I guess the first question is:
As an individual, organization or community why on earth would I want to spend time, energy and other resources to organize a codelab, hackathon or developer contest?
There are a number of reasons why one may want to organize or take part in any of these initiatives. I may have implied a few of them in the last post but I will mention them again here for completeness.
To spread the gospel
An organization or community may decide to organize a codelab, hackathon or contest for the purpose of evangelism among the developer community. What would they be evangelizing you may ask?
Well it could be anything … like a new technology, platform or API (e.g. Android and Google Cloud Platform ) or a cause in a particular area or sector like health or education. Whatever it is, if spreading the gospel is your motivation then you are trying to get more members of the developer community to either adopt your technology or develop more tools and products that are relevant to the cause in question.
To hunt for talent
Everyone who has ever had anything to do with the tech space particularly in Africa knows how hard it is to find affordable young talent. The main problem is that resumes hardly ever tell you the full story about the abilities of the candidates such as:
- How they cope under pressure
- How they cope when they have reached the limit of what they know (or think they know) and still need to get the job done. In Nigeria we call this “Sharpness”
- How fast they can learn
- How creative they are
This is further compounded by the fact that many people in the tech space do not do a good job when it comes to putting a resume together. This leads to a lot of great talent being overlooked.
Organizing a codelab, contest or hackathon can help you attract willing and able talent to your organization or cause. They allow you to observe the work and output of these candidates so that you can make a more informed decision.
This is sometimes confused with Spreading the Gospel, but I would argue that there is a difference. This is because as in all things in life, the motive affects the end results. While spreading the gospel involves a bit of teaching , holding one of these events with the aim of teaching is a totally different kettle of fish and affects the way the initiative is rolled out.
To generate high quality apps that actually make a difference (?)
Now I know that this is a controversial one ( I touched on it in my last post ). But when properly applied and followed up on, you will be surprised what can come out of a hackathon or contest. You just need to be patient, work hard and set the right expectations on all sides. More on this later.
To solve a particular problem / Kickstart a solution
Sometimes there is a particular problem you want to solve by using technology as an individual, organization or a community. An example is a software bug in one or more of your products or maybe you want to start work on a new project but are held back by project, team or organizational inertia (reluctance to start something new ...or stop something old). You can use one of these initiatives to get your team out of the rut and kickstart the new project.
Apart from all the reasons given above, sometimes people organize codelabs, hackathons and contests for no other reason but to get together, meet new people, and have fun while applying their brains to something creative.
Like I always say: Some people take dangerous selfies , others go bungee jumping ….while some others organize or participate in hackathons, code labs and contests...some even do all of the above.
Now in reality, a lot of code labs , hackathons and contests are not organized with just one of the above motives in mind. While there is usually a primary motive, Most of the time , these are organized thanks to more than one of the above motives. But at the end of the day like I said before, the primary motivation determines the plan of approach...and the outcome.
I want to achieve X …….which option is best for me or my organization?
The first step in answering this question is to be as clear as possible about exactly what it is you want to achieve. Like i said before, the intention ultimately determines the outcome.
There are no hard and fast rules for which initiative goes with which intention as these things are best decided on a case by case basis. And like I mentioned in the previous post , there is no rule that says that you must execute these initiatives in isolation. In reality you can choose to chain them or incorporate one into the other. For example, a contest can include one or more hackathons. A hackathon can also start with a codelab and end with prizes being awarded which gives it a contest element.
I will give some rules of thumb that have worked for me. You can use them as a guide to analyse your situation and see what works best for you.
App or code that achieves what the person who designed the codelab intended
A good codelab should allow the participants play around and add extra stuff to the code/app as they try to understand the technology more
You want the participants to learn the technology/ API in question by going through things one step at a time and seeing the effect of each step.
Participants should leave your codelab with a feeling of having learnt something new and creating something using your technology
Kickstarting/accelerating the creation process or for kickstarting/accelerating the search for a solution to a problem.
Code that accomplishes the task or solves a problem.
Usually ugly code
Bug fixes (if that was the intention of the hackathon)
A hackathon rarely results in a finished / polished article, but when well organized it will set you well on the way to success. All the polishing can be done in the days after the hackathon using the standard software development practices.
Because of its focus on problem solving, it is a very good way to spot talent because it mimics a real life situation i.e. solve a problem in a limited time
With a good post-hackathon strategy a hackathon could also lead to amazing apps that actually make a difference
Spreading the gospel
Diamonds in the rough
Apps that do stuff, usually buggy and in need of refinement.
But at the very least these apps should be able to do what their creators said they should be able to do (hope this makes sense).
Some people call it an MVP (minimum viable product)
Can also be used for teaching and problem solving when combined with hackathons and code labs ( I can testify) .
With a good post-contest strategy a contest could also lead to amazing apps that actually make a difference
This table is by no means exhaustive . My hope is that it is enough to help you start an intelligent discussion on what option or combination of options makes the most sense for you given your unique scenario.
OK...there ….that's a enough for today.
Needless to say , there is still a lot more to discuss with respect to this topic for example:
Exactly how do I organize one?
How to make the most of the outputs of these initiatives?
I am a non techie but I need to do this...where do I start?
We can either discuss this in the comments or depending on what the demand for the information is, I just might do another article.
In the meantime I am interested in hearing what your experience has been regarding codelabs , hackathons and contests either as a organizer or as a participant .
Also please feel free to shoot down anything I wrote and offer your own perspective, that way we can all learn something new.
But before you do that , please take a break from the hustle and bustle with this track from Omawunmi.
Catch y’all on the rebound.