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

Popular posts from this blog

Declarative Programming With AI/LLMs

  What Is Declarative Programming Broadly speaking, there are two ways to program/instruct a computer to perform a task, they are imperative vs declarative programming. Imperative programming is what we do the most, we write all the code necessary for the computer to perform a task such that the only thing left for the computer to do is fetch and execute CPU instructions. If you are using Java,C#, Javascript...etc you are doing imperative programming. Declarative programming is a higher-order form of programming, we instruct the computer to perform a task but otherwise let it "figure out" how to do it. Declarative programming requires some sort of software based execution engine. Whereas with imperative programming our code gets compiled into some machine/byte code and then run by the CPU, declarative programming requires a layer of software that does the "magic" that allows you to use it without having to write the precise logic for completing tasks.  I would guess...

Integrating AI CodeGen With Low Code Application Development

This is a demo showing Solvent-Lowcodr working with AI Code generation (ChatGPT) to build web apps in a low code fashion. This demo uses Vuetify Component Library. This is the first in a series showing various ways that AI CodeGen and low code can be combined in Solvent-Lowcodr to accelerate web application development. In subsequent posts we'll show how to use AI CodeGen to build low code building blocks in Solvent-Lowcodr. We'll also show demos for React.

Integrating AI CodeGen With Low Code Application Development - Part 2

In this post we follow up from the previous AI CodeGen integration into a Lowcode environment, which was a manual process.  In this post we showcase the new direct AI integration support, then follow that up with using that integration to automate the process of issuing a prompt and generating a Lowcode app. Part 1 - Basic AI Integration Demo (OpenAI, Anthropic, Gemini) Part 2 -CodeGen and Lowcode Integration via automation using all three models.