roytang.net Posts Photos Archives About

Software Development and Government

Random thoughts while walking at night: The structure of government can be a bit analogous to the structure of a software development project.

The Constitution is like the requirements for a project. It's kind of high-level and (I believe) shouldn't be too detailed. Supposedly the requirements are written by the client. For a country like the Philippines the client is "we the sovereign Filipino people".

Slight tangent: I used to know this guy who was one of those rabid "we need to amend the constitution" types and he asked me to review a "mathematical model to track the budget as a function of tax collection and monetary policy" that he wanted to include in a proposed new constitution. I told him I didn't believe such detailed rules shouldn't be in the constitution -- that would unnecessarily tie us down to a specific model that we may or may not regret later on. I ended up declining to help him with his strange hobby.

The Legislative branch are the analysts. They make the detailed specs/laws to define how we're going to satisfy the requirements/constitution. In a real project, the client usually signs off on the specs. In government, we supposedly sign off when we vote for the legislators.

The Executive branch are the developers. They're responsible for implementing the specs/laws in order to fulfill the requirements/constitution. They can decide the technical approach to use, as long as they satisfy the specs and the requirements.

The Judiciary is the QA, they review the work of the developers/executive and make sure they're following the specs/laws and adhering to the requirements/constitution. Sometimes they even have to review the specs/laws themselves to make sure they aren't contradicting the requirements/constitution.

Sometimes a project is so large and you need to form smaller subteams to specialize in different areas or modules. That's called Federalism. Or maybe local government.

Sometimes one person handles specs, development and QA. That's called dictatorship.

Sometimes people want to rewrite or amend the requirements/constitution. That's called agile development. Or maybe scope creep.

Sometimes the bureaucracy needs to be reorganized to be more efficient. That's called refactoring.

The big difference between government and software projects is that in software projects, team members are selected based on meritocracy. In theory at least, you choose the best people for the job. In government, who gets the job is determined by who is best at bamboozling the largest number of people to vote them in. Maybe someday we'll get a meritocracy in government too, but until then I'm probably sticking to software development.

# / / blog / #philippines #software-development / Syndicated: tumblr twitter facebook / 💬 6 / 426 words

Last modified at: Jan. 17, 2021, 4:57 a.m. Source file

Comments

Jaime L. Garcia said...

I like the metaphor, but one caveat with refactoring is it's usually done prior to code being launched / deployed as part of a change. When you're restructuring the government, it's more like a patch than it is refactoring per se - and I think there lies the rub of the argument why the government doesn't become better overnight despite the problems we can see. To be fair, government has had to live with a far, far older system than what's been done with computers. Since it's also "deployed to production", you can't just easily change things either without causing an uproar. After all, many legacy systems far younger than the birth of formal "democratic" government shun an upgrade because of costs to implement, uncertainty of gains involved, and risks of upsetting the current userbase's habits (change management), and refusal of authority figures not really in the know to effect such a change anyway.

Jaime L. Garcia said...

Also, pic not related? I was wondering what Magic the Gathering had to do with your post.

Jaime L. Garcia said...

Clarif: I put quotes on Democratic not as mockery, but as a catch-all term for most "Western" governments that use some sort of voting system to elect officials, whether representative, federalized, parliament-base d, or what not.

Roy Tang said...

lol comedy ung fb e. it picks up any other images on the page kahit nde kasama sa post

Roy Tang said...

imma fix it later

Jaime L. Garcia said...

Eh, no problem. It's just funny. XD