This is a condensed version of the blog post: Hey Civic Hackers! How about leaving the ninja skills at home and building really useful applications? It includes more analogies and cars. Comments welcome.
Most hackers are deeply involved in the tech scene. They keep up to date with the latest technologies and will use tech that is in the early phases of adoption. They have no problem using cloud services, NoSQL data stores, languages with smaller communities, and target more recent browsers or phones. They don't mind doing custom configurations on server software, they probably already know some of the maintainers of the project and can get special help, and they know other hackers who they can reach out to. They generally come from a startup world or at least from software companies where budgets and skill sets are generally high for employees.
The apps they have created for government use are better for public consumption because they utilize low cost software and better coding practices. And, civic hackers helped agencies and officials see that technology does not have to be huge, costly, and compromise the user experience. However, many civic hackers do nothing to help governments actually run, modify, and maintain these applications.
Here's how civic hackers can build applications that will last, increasing adoption and longterm use. Because, at the end of the day, are you helping to show off your skills or to actually help people?
#1 — At the very least, the only programming languages you should use on the server are (in decreasing order of priority) PHP, Java, or Python.
I leave out .NET on my own philosophical grounds where I believe you should not be tied to an operating system, particularly one of a monopolist. If you can get past that objection then I would add it to the list since a lot of civic governments IT departments are currently Windows shops. Look I understand you know and love {insert favorite tech here} but if your goal is to really help civic governments, then make life easy for them, not for you.
I put PHP first because it is everywhere and easy for people to pick up and use. There are a bazillion books on it, there are tutorials all over the web, there are plenty of hosting providers, and it is easy to find people who know it outside of the tech hubs in the US. Java is next because most Computer Science departments teach their students Java, it is stable, there are tutorials for it all over the web, it is used by large enterprises and small shops so it may be in the government IT shop already, and there are libraries for almost anything you want to do. Finally, I put Python in the list because it meets the needs of those who like dynamic languages, it is mature and stable, it is the programming language to extend quite a few desktop applications, it is relatively easy to read and learn, plus there are tons of books and tutorials, and it also has a lot of libraries to carry out almost any function you want.
#2 — Next up, most civic hacks should use a popular framework.
There is no excuse not to use a platform other than your feeling about "Not Invented Here." The benefits in terms of readability and ease of transfer of code outweighs any philosophical or speed arguments you may make. Most civic apps are never hit by very many people at one time. You are not building Facebook or even Whitehouse.gov. Your goal should be to make applications that can easily be picked up, understood, modified, and made running by a decent developer. These apps should not be built for rock stars, they are few and far between AND rarely work for government wages.
#3 — Document your project more than you think you need to document it.
Write up documentation instructions for at least several cloud platforms (I would recommend including OpenShift ;) ) and then also for Red Hat Enterprise Linux, Ubuntu, and Windows. Civic government run all those OS's internally and by giving them cloud options you really help free up small departments to get applications up quickly and easily.
#4 — Finally, in truth, most civic hacks should really make a plugin for a platform like Wordpress, Drupal, Django, or Magnolia.
Please don't pick some obscure platform - pick a mainstream one with lots of books, tutorials, developers, and users. What I am basically saying is pick based on the size of their ecosystem. Giving an IT department or a civic department a well used, easy to install, and supported platform to start with is a HUGE win. They can hire local consultants to install it for a reasonable price, it will be easy for them to modify the pieces, and they can probably host it easily as well.
By giving them a plugin that does what you wanted, they have a much easier path to install/host and maintain the awesome application you wrote for them. And by making it easy and maintainable you have just increased the adoption of your application many fold. Time to wrap upIf what you want is to show off that you can make the hottest fastest car on the street that looks really great, don't expect a lot of small governments to buy one. But if you make a car that they can feel comfortable maintaining and using themselves, you will have freed them from buying RVs and given them something that makes their life better.
Read an extended version of this article on the OpenShift blog. Reposted with permission.
Comments are closed.