How to Start a Software Project That You Want to Maintain
Defining Intent & Scope
The Project ๐
I want to build a file. That's really pretty much it. ๐
I'll be building an open source css animation library. But I want to treat this as a real-world, professional project.
I want to combine the structure of enterprise projects and the audacity of indie hackers with the grit of solopreneur-ship.
What does that mean to me?
- Public, open-source code available from day one.
- Project management taken seriously.
- My primary function will be as project manager
- GitHub Issues for everything.
- GitHub Projects for the whole project.
- Availability
- Direct download
- CDN
- npm
- Good documentation
- Coherence on GitHub site, particularly in README.md
- Simplicity, civility and clarity on dedicated home page.
- Community engagement
- Sharing progress, successes and failures in public
- Asking for feedback
- I'm positive I'll be adding to this as the project grows. In fact, that's one of the things I most look forward to: the unforeseen adventures ahead!
Wait a sec, isn't this much ado about nothing if we're making something as small as a CSS library?
No, I think it's perfect. By keeping the initial scope small, we'll be able to dive deeply into processes and not get distracted by the minutia of the software itself. This is above all an exercise at becoming proficient project & product managers: a skill that will benefit even the most junior of developers.
The Beginning ๐ฐ
Arguably the most important part: we're at the beginning. Blank page, blank screen, tabula rasa, all the feels.
Please begin. Just dive headfirst into it.
I've rarely felt that I know what I'm doing, but invariably, I've yet to regret making beginnings and trudging forward. This project is no different.
I want to document it. For you. For me. For those after us.
The ability to write down my thoughts and choices is such a blessing.
The ability to share it so easily with the world (and usually only my future self) is miraculous.
This is my beginning: charting the course and planning for action. I hope that you'll make your beginning too! Just do it โ
The End ๐
Start with the end in mind. Something. This doesn't have to be detailed. It can (and will) certainly change, but it is incredibly helpful to have a guidepost to be leaning toward.
For a long time, I've been fascinated with software engineering, with bootstrapped indie hackers, with open source projects, with distributed teams and contributors, with the melding together of software, business and creativity.
And I've learned a ton.
- I've taught myself to program, to use GitHub, to meet developers online.
- I've taught myself graphic design, video editing and audio production.
- I've honed my craft as a writer, an editor and my own critic.
- I've explored business analytics, data visualization and e-commerce.
- I've run a business managing payroll, planning and management teams.
- I've expanded my network by seeking relationship with others.
- I've raised three children and am about to meet number four.
I'm becoming a bit spread thin. I want to focus and contribute more by building some actual, tangible pieces of software that can honor my creativity while providing service to others.
The end goal is to combine these multi-faceted skills and interests in a full-fledged project.
And, bonus! I get to learn project management from hands-on experience!
The Challenges ๐ฑ
- I don't have a following
- I don't have experience with formal project management
- I don't have the time, expertise or credentials
The Realities ๐ค
One hundred percent ๐ฏ of advice on learning to do something includes building projects as the number one way to learn something new or get better at something.
I have an incredibly diverse background with an overwhelming amount of interest in many fields rather than just programming or just data science or just design.
Since I'll never be content doing just one thing, I look forward to this journey of putting together the many parts of this one project.
And I sincerely hope it will be the first of many.
Next: Proper GitHub Repository Setup ๐ฝ
Rather than jumping straight into the coding, I'll be setting up a structured, maintainable, scalable project.
I want to focus on clarity.
How many times have you pulled up documentation only to be overwhelmed and ended up searching YouTube for a clearer, quicker explanation?
It is my goal to document and structure everything well (hence this article being written as part of the project itself). And to get a taste of project/product management by quantifying my personal processes along the way in public.
It is my hope to grow as a developer, a writer and a member of the open source community.
My next post will walk through how I've begun to structure the repository, setup issues, assign tasks (to myself only for now ๐), and sketch out a scope of work for the project.
Stay Tuned ๐
I'll be adding to this series throughout the coming weeks as the project takes shape. I'm hopeful that some of you will consider contributing to it either directly or through your feedback and comments. ๐
The project lives here for now: github.com/sieis/unmove
Come say hey ๐ on Twitter, I'd love to meet you and get your feedback: twitter.com/EamonnCottrell