Skip to main content

Your code is not a project

Language matters, just as saying the wrong word to the wrong person can leave you with one less front tooth, so too can the incorrect use of language in general create a cascade of confusion that pervades an entire industry.

One of my pet peeves about the use of language in the software arena is the use of the word "Project". This usage as far as I know goes back to IDEs grouping software artifacts as projects. The notion of a project as the top level organizing construct for software projects (see what I did there?) is now a de facto standard. One problem with this is that it is a complete misuse of the notion of a project. A project is not a thing, it is a process! A project has (or at least should have) a well defined start and end.

As a process, by its very nature, its essence is vague. So when something whose essence is precise (software) is called a project it leaves the reader wondering exactly what is being described. Whenever I come across a documentation describing a piece of technology and then goes on to describe some top-level construct of its configuration as a "Project", I am left wondering exactly what this entails. In other words giving the top level construct its proper name would allow a reader to know immediately what is being described, calling it a project means I need to unwrap its meaning somewhere else.

For instance in designing Hivemind I deliberately stayed away from creating any top level construct that could be considered a "Project". Instead there is an application (a thing), then there is a Task/Project management feature which can be used to actually manage a project. In this way the application is just a component of some project (it could belong to more than one project), the application (or applications) are mere artifacts of the project, they are not the project itself. Now you may well need to organize a group of artifacts into some higher order category or construct, but this still won't be a project :)

The words you use for things (especially complicated things like software) often becomes an anchor for how you think about those things, so while it may seem harmless to mislabel things, there can be real negative impact over time. At the very least the rampant misuse of the term project within software leads to what I call "low grade" confusion.

#TGIF

Comments

Post a Comment

Popular posts from this blog

The feds need to shutdown the bitcoin scam now.

I live in Baltimore, let's say I have some hypothetical friends who are always looking for a good hustle.

Now imagine if my friends got together for a new get-rich-quick-scheme, the scheme is very simple. They invent something called cracken (bitcoins) that they start selling on a few blocks in Hamsterdam.

The way you get crackens is to do laps around the blocks in Hamsterdam. Initially when the scheme was setup, you could get a whole lot of crackens by merely doing a few strolls around the block. Needless to say my friends made out like bandits, since, after all they created the scheme and could take advantage of the first-come-first-serve rules.

Unfortunately for the rest of the hood, the number of laps required to get the same number of crackens keeps going up and after a while even the fittest folks in the neighborhood cannot do the lapse required to earn crackens.

Cracken mania takes hold and infects the whole city. Those with crackens start trading these crackens for exor…

Why Not Signed Password Authentication?

It is now universally acknowledged that basic password authentication does not offer sufficient security. 2-Factor authentication is a major improvement and hopefully would become the standard form of authentication over time.

Another approach that might work well would be to use public key cryptography to authenticate with a signed password instead of just the plain password.

An application (web or native) would generate the public/private key pair and store the private key locally while storing the public key along with the user's password on the server. This key generation can happen for instance during account sign up when it is clear the owner of the account is the one accessing it. Of course a key rotation mechanism can be devised to allow for a flexible way of rotating keys. This would all be transparent to the end user.

Instead of the user submitting just the password, they'll submit both the password and a timestamp based signature, ie plainpassword+curre…

Hype on HackNews and Silicon Valley

One of the consequences of refusing to drink the in vogue kool-aid is that you remain sober and take in the full brunt of the silliness going on around you.

The technology industry overflows with such silliness, like any credible geek I spend too much time reading HackerNews even when I don't want to.

One odd phenomenon I have observed over the past few years is the fact that there is a rather peculiar writing style in Silicon Valley, seemingly meant to make writing more efficient in conveying hype.

Specifically, the desire to create emphasis when otherwise the point being made is prosaic has lead people in Silicon Valley to come up with this odd writing style where adverbs are deployed in ways that no decent writer would. Let's just say a good chunk of "influencers" in SV suffer from Hype-Nitis.

I have gleefully collected a small sample of these gems on HackerNews over the past couple of years:

atrociously bad
crucially important
astonishingly successful
growingly wants…