#2 Project Files
An introduction to the best project management practices in the AI era.
Now, we have understood the overview of AI. However, to start development, we first need an environment. Let's set up a development environment based on using AI. First and foremost, we need to decide how to manage project files. Simply sharing files carries the risk of having to rewrite code from scratch if a mistake is made. This holds true even when using AI, so version control and project management are inseparable in modern development.
In the past, development began with simple file sharing (NFS or NetBIOS), which then evolved through CVS (from ~1990) → VSS (from ~1995) → Subversion (from ~2000) → Git (from ~2010) (these timelines are approximate). I prepared and set up environments for each of these stages. Historically, setting up repository environments (units for storing and managing project files along with update histories) required manual installation or purchases, along with establishing backup environments, which was a major task. Today, GitHub is the undisputed choice. (Since it's free, lol)
【About GitHub】
Previously, GitHub limited free accounts to a single private repository, but it is now unlimited. Additionally, GitHub Actions offers up to 2,000 free minutes per month, and storage is free up to 500MB.
This is wonderful. We live in a great era. Of course, you can also launch a Gitea container via Docker to build a local Git environment. For large projects where I don't use CI/CD, I manage them on my local server.
<What is CI/CD?>
This is an important philosophy in AI-driven and codeless development. In the past, Systems Analysts (SA) analyzed business operations and compiled requirements, Systems Engineers (SE) created specifications and test requirements, and Programmers (PG) wrote the code (known as the waterfall model). Compared to that, today feels like a different world. Reflecting on the high costs of reverting to previous phases, modern methods prioritize building small and growing big. Let's define the terms briefly:
- CI: Continuous Integration
The process where developers frequently merge their code changes into a shared repository, trigger automated builds, and run tests.
- CD: Continuous Delivery & Deployment
A practice of automating code tested in CI so it is ready to be manually released to production at any time, or automating the actual deployment to production.
Simply put, it is a method of finishing a project step-by-step while verifying the UI and functionality. Previously, methods were called Agile Development or DevOps (Development + Operations), but today's approach feels even speedier. It is a perfect match for AI.
In the AI era, there is another key concept to know: GitOps.
<What is GitOps?>
This is a development methodology centered around a Git repository. It is the concept of managing all infrastructure definitions, application configurations, and code deployments to servers so they are fully versioned, allowing for rollbacks and complete audit histories. Centering all project information around this source of truth greatly enhances development efficiency, fault tolerance, and rapid recovery times.
One warning regarding GitHub in the AI era: as explained before, personal AI tools use conversation histories for training. Sensitive information (passwords, access tokens, etc.) must be kept secure using GitHub Secrets. Furthermore, for GitHub operations, it is best to log in beforehand using the GitHub CLI before delegating tasks to the AI.
Bad Example:
$ git clone https://{username}:{Token}@github.com/{UserID}/{repository_name}.git
While GitHub allows this format, it completely exposes your token. You should always run `gh auth login` beforehand so that you do not need to pass credentials directly to Git commands. Doing this registers the token to the remote URL, leaving it visible to anyone, so do not assume it is safe just because a human ran the command initially.
Since numerous websites explain how to create GitHub accounts and run clone commands, I will skip those details here. First, your repository (a set of project files) has been successfully created.