What I Created & Accomplished
Governance is an open source Java project that I designed, developed, and released by myself over the course of a 30-day challenge. All of the code is publicly available on my GitHub page. The finished product helps Minecraft server owners efficiently manage their community by granting their player base complete and total autonomy. Instead of hiring staff to moderate and maintain, server owners can place their trust in their own players using Governance! This page offers an inside look into how I made the project, what I learned, and what I accomplished. If you're looking for the project download page, please see my page on Bukkit, Spigot forums, or MC-Market.
How this is different from my other projects
Governance is special in a lot of ways. Yes, it's my biggest Bukkit plugin, and yes, it's actually the biggest programming-based project I've worked on by myself...but that's not really what makes it 'special'. I've made plenty of big projects in the past but this is the first one where I documented the entire development process from start to finish. In order to make a time-lapse, I recorded every second that I worked on Governance. Check out the results below!
In addition to the time-lapse above, I also created a series of "development blog" updates. Each update updates includes a text and audio commentary featuring what I was working on each week.
As you can see in this little chart, I spent more and more time developing each week. And this chart only counts the hours that I was actually recording. To put it simply, the more progress I was making, the more fun I was having. This project also has a lot of room for expansion, so I definitely plan on updating it with more features in the future.
What I Learned & Improved On
It's impossible to create a project like this without learning a lot. Throughout the course of the month, I've picked up and improved on many skills that are valuable in the real world. A lot of these skills are based on some type of software, but I also had the chance to learn and improve my business and personal skills.
Some of the software that I learned or improved on
(Java - Programming language)
(WLMM - Video editing software)
(SQLite - Database)
(Trello - Task organizer)
(Git - Version control software)
(IntelliJ IDEA - Programming IDE)
(Audacity - Audio editing software)
(Paint.NET - Image editing software)
Other valuable skills that I learned or improved on
As shown at the beginning of the time lapse, I set out a clear schedule of how each week was going to look before I even got to work on the project itself. By setting clear deadlines for each feature, I was able to follow through and complete the project without any setbacks.
If you've ever coded before, you know how frustrating it is when there's a bug or error that you can't seem to fix. Although I struggled quite a bit with the SQLite database, adding different government types, and elections, I powered through and was able to add all of the features without any concessions.
Solving problems is the meat and potatoes of software development. Without a doubt, the process of coding Governance has made me a better problem solver. “Everyone in this country should learn to program a computer, because it teaches you to think.” — Steve Jobs.
As someone who prefers collaborating and working with teams, self-reliance doesn't come naturally to me. When a problem arises, I am (usually) able to fix it by troubleshooting or searching the internet. I truly believe that solo-projects like governance have helped make me a more independent person.
What's next for Governance
The 30-day challenge was just the beginning. In the near future, I will release the project to the public on many different platforms. From there, I will advertise, collect customer feedback, and improve the project. I am also in the process of creating some programming tutorials based on the issues that I encountered while coding Governance. Here are some of my ideas:
- Java/Bukkit Development Tutorial: "How to set up and use an SQLite database"
- Java/Bukkit Development Tutorial: "How to set up and use a custom YML file-based database"