
A one-side-project-per-month challenge - ggoerlich
https://github.com/1ppm/1ppmLog
======
davidwparker
I'm surprised by all the negative reactions. Of course you're not going to be
making anything substantial in a month (most likely). Instead, you'll learn to
actually finish (or semi-finish) projects and ship them regularly.

This is very much like One Game a Month
([http://www.onegameamonth.com/](http://www.onegameamonth.com/)). The idea is
that write, learn, ship. It's nice.

If you find that one of your projects takes off, or you really like it, then
continue to work on it.

Edit: grammar

~~~
gravypod
The problem isn't the idea of doing one thing per month. It's the
implementation in my mind. I don't like when people just wander around
programming aimlessly. I also don't like when we drop standards to meet
deadlines (I've got a looooong history of doing this and I hate it, check my
github). I think completeness, reliableness, and also practicality should be
king.

You shouldn't be focused on pumping out something 24/7 you should be thinking
of how to make the best product that you can possibly make.

These One Game a Month games are.... "creativly different". Now granted I
couldn't do a game a month and I don't think I'll be able to finish my game
even in my lifetime but I wouldn't feel right lowering the quality of the game
I'd like to make to fit it into a month.

~~~
pmontra
I upvoted you because you pinpoint a real problem and I understand why you're
afraid of it. Still I don't agree that this problem should necessarily thwart
the 1PPM Challege.

A monthly project could be as small as a library you'd have to do for your
real job, or a polished generalization of it (chec U. Check the first entry of
the hall of fame:
[https://github.com/ggerhard/parsecal/blob/master/parsecal.rb](https://github.com/ggerhard/parsecal/blob/master/parsecal.rb)
is a 120 lines Ruby script. It reads and parses "data from a google calendar
(or other iCal calendars) and create an Excel Timesheet." It could be the core
of a web service but it doesn't have to be a web service when it's posted in
1PPM.

~~~
gravypod
I do those often too but I do them because I need a library that does X or a
service that does Y. Just building this doesn't make sense. Building things
for some end goal makes sense.

------
karimf
I remember quality vs. quantity story of ceramics class. [0]

> The ceramics teacher announced on opening day that he was dividing the class
> into two groups. All those on the left side of the studio, he said, would be
> graded solely on the quantity of work they produced, all those on the right
> solely on its quality. His procedure was simple: on the final day of class
> he would bring in his bathroom scales and weigh the work of the "quantity"
> group: fifty pound of pots rated an "A", forty pounds a "B", and so on.
> Those being graded on "quality", however, needed to produce only one pot -
> albeit a perfect one - to get an "A".

Well, came grading time and a curious fact emerged: the works of highest
quality were all produced by the group being graded for quantity. It seems
that while the "quantity" group was busily churning out piles of work - and
learning from their mistakes - the "quality" group had sat theorizing about
perfection, and in the end had little more to show for their efforts than
grandiose theories and a pile of dead clay.

[0] [https://blog.codinghorror.com/quantity-always-trumps-
quality...](https://blog.codinghorror.com/quantity-always-trumps-quality/)

~~~
SonicSoul
I love this story and I want it to be true. I've tried to trace it in the past
but seems every source tells a story without any details. So not sure if this
is a parable or actually happen. I believe that practice/iteration is the way
to improve, it just seems a little too black and white

In a similar vein on producing quantity of work before trying to be perfect, I
always refer to Ira Glass's video The Gap. Must watch if you haven't seen

[https://vimeo.com/85040589](https://vimeo.com/85040589)

~~~
0xdeadbeefbabe
Makes you want to become a ceramics instructor just so you can have a primary
source.

P.S.

I'd listen to Ira more if he didn't sound so annoying.

------
superquest
I made a resolution like this a couple years back because I had never
completed any nontrivial software projects.

For me, it worked better to start with much smaller projects and scale
upwards. I started trying to do a project a day. Initially the scope would
always be too large to complete in a day, but with this quick feedback loop I
learned to narrow scope. Then I proceeded to week-long, month-long, and one
multi-month project.

It's a good method if a one month side project seems intimidatingly large to
you — which was how I felt before this exercise, but no longer felt this way
afterwards.

------
notheguyouthink
I couldn't do this. My big thing is i always want to be working on personal
projects that solve problems in my life. If that ends up with cool stuff,
great! But i've been burnt out too many times on making things for other
people.

It's one thing if i set out to make a passive income, but that's work in my
opinion. My side projects are open source commitments of mine, and assuming
the "thing" works well and solves my problem, i'm contributing to it for years
to come. Or at least until the problem is solved in another way.

If i'm really lucky, side project can become passive income _(ie, providing
hosted versions, etc)_ , but that has yet to happen, and i'm fine with that.
I'm solving my own problems, which i find quite enjoyable!

 _(not trying to be negative, just my take on it)_

~~~
morbidhawk
I like this idea, I've got a handful of side project ideas that I always go
back and forth on having/losing steam on and I end up never finishing them.

I also go back and forth on whether my side project should be open sourced or
not. Why did you decide to open source all of your personal projects? What if
it became something great that you later find out could be sold for extra
income, would you regret open-sourcing?

~~~
notheguyouthink
> Why did you decide to open source all of your personal projects? What if it
> became something great that you later find out could be sold for extra
> income, would you regret open-sourcing?

I think that's a decision to be based off of what it is. If that's a concern,
and if open source has limited inherent value to you or the project, perhaps
it shouldn't be.

For me, i highly doubt my currently projects will make any money. Primarily
home automation, and home cloud-lite stuff, Storage, etc. Nothing ground
breaking, and where it might be "ground breaking" _(though it 's not)_, i
specifically strive to not have it be ground breaking - a pillar of my work
lately has been simplicity, ease of use and ease of maintenance - being side
projects and all, i don't want anything i write to confuse me in two years.

So yea, i have no concerns about it being open source - and so i default to
OSS. If it gains _any_ adoption, i get contributors, testers, UX requesters,
etc, all things i want. So OSS is purely a boon for me, in these cases.

 _edit_ : Plus, i like being able to add a trail of work on my resume/site/etc
that i'm proud of. For few side projects that i have left closed source, i
split off as much code as i could making them into OSS libraries and such.
Even if the core of it can't be OSS, some of it can i'm sure :)

~~~
franciscop
I had to recheck that this wasn't written by me N months prior, it's exactly
the same motivation and benefits I've found.

Only thing is I make Javascript things instead of home automation.

------
gooseus
I think this definitely an interesting idea, I have at least 1 new idea a
month but usually just talk to close friends about them and move on with life.

I agree that expecting to create 12 great projects next year is a stretch and
odds are that 12/12 will become vaporware, however, the lessons learned and
the potential (albeit small) for any one of them to actually become something
makes this a worthwhile endeavor to me.

Actually reminds me of something I read from Antifragile[1]:

> Rule 4: Trial and error beats academic knowledge.

> Things that are antifragile love randomness and uncertainty, which also
> means—crucially—that they can learn from errors. Tinkering by trial and
> error has traditionally played a larger role than directed science in
> Western invention and innovation... [2]

Say what you will about NNT's writing style, but the guy makes a lot of sense
to me.

[1] [https://www.amazon.com/Antifragile-Things-That-Disorder-
Ince...](https://www.amazon.com/Antifragile-Things-That-Disorder-
Incerto/dp/0812979680)

[2]
[http://www.wsj.com/articles/SB100014241278873247351045781209...](http://www.wsj.com/articles/SB10001424127887324735104578120953311383448)

------
navd
Seems to be some people that think you can't do something in 1 months time.
First of all I think the biggest thing you'll learn is how to CUT features out
of something that you're building. Since you have 1 month, you really need to
think about what problem you're trying to solve and cut out all the fluff that
isn't necessary.

The second biggest thing you'll probably learn is HOW TO ship! A lot of people
work on 'side projects' but no one ever really ships them. It's the hardest
thing to do honestly. It helps you get over any insecurities you'll have
building something. Especially when you release it to the world.

Building and launching is more than just building a product. It's a learning
experience.

------
gravypod
Code is useless if it is for nothing. Don't write code just to write code,
write code to solve a problem you are having. If you're having 1 problem per
month, then write 1 project per month. If you encounter 50 problems in one
month write 50 projects in 1 month. If you encounter 0 problems in one month,
write 0 projects that month.

~~~
ebbv
> Don't write code just to write code, write code to solve a problem you are
> having.

What if the problem I'm having is that I don't know Haskell?

It's totally fine to code exercises that don't serve any useful purpose. Just
like it's fine for me to make terrible songs on the guitar that nobody would
ever want to hear.

~~~
atonse
My take with the analogy here is that you're still playing the guitar to make
songs (an end product), instead of just learning how to pluck strings for the
sake of plucking strings and testing how different strings of different
materials feel for the heck of it.

~~~
ebbv
But that latter thing is still something guitarists do. You might throw some
new strings on and noodle around for a day with no particular purpose in mind.

Likewise it's fine to write code with no bigger goal other than to play with a
library or a language.

------
sjs382
I tried this about 2 years ago (or 3?) and man, it's a hard pace to keep up. I
think I ended up with 4 projects out of the bunch before I needed a burnout
break. One of the projects ended up supplying a bunch of mostly-passive
income, so that was great.

~~~
ianai
What kind of project was it that paid out?

~~~
sjs382
The first of the bunch: [https://SendToMyCloud.com](https://SendToMyCloud.com)

------
exDM69
One month projects sound great but with my busy schedule that would be only
about 8-16 hours of butt in seat time, which isn't enough for a substantial
project. I can think of some "toy" projects in that timeframe, though. And
some peripheral utility projects that might be useful in the future.

I've been at my "main" side project for more than 5 years with no end in
sight.

I wish I didn't have to have a day job. I'd have no issues keeping myself
busy, but I'm a terrible businessman and I doubt I'd make any money.

~~~
ggoerlich
That's what it's all about: to get something done and learn new things instead
of (or in addition to) those long running, never finished side projects. I
have a long running project too, 1PPM are my side-side projects.

~~~
exDM69
Sounds like a good idea.

What worries me a bit in this idea is that it takes a surprising amount of
time to polish a project so that it is "done". Or at least left in a state
where it is easy to pick up later, by yourself or someone else.

I have tons of projects where the "beef" is mostly done but README, example
code, tests, etc are lacking.

Starting a project takes surprisingly long too. Setting up a build system,
test framework, CI builds etc always take much longer than I anticipate.

Keep these pitfalls in mind. Best of luck to you.

------
orthoganol
The most important outcome for me when I did this (for 6 months) was my own
webapp generating infrastructure, modules for common things with a whole lot
of scripting to integrate 50-80% of all features (payments, chat, onboarding
flows, landing page templates, dashboard templates, checkout flows, profile
creation, etc.) depending on the app. Of course, building this infrastructure
took about 4,5 months to put together and is an ongoing project, but was only
possible after building 7 webapps in a row. I'm confident I could get a
serious looking prototype for pretty much any webapp idea in less than a
month, and depending on the app maybe less than a week.

(As an aside, if you're going to do this, you should also get Sketch and learn
how to do graphics.)

I built all my infrastructure, modules, and scripts on top of Rails, and I may
be biased, but I do credit my success with this to the ease, simplicity, and
maturity of Rails. Popularity debates aside, is there any better framework for
rapid prototyping than Rails?

~~~
SEJeff
Well if you're a Python person, Django is amazing, and if you're a golang
person Gin Gonic is amazing. Not everything webapp is Rails, although Rails is
wonderful for prototypes. The only two very large rails sites I was ever
consciously aware of were Twitter (now all java) and Groupon (now mostly
node).

~~~
orthoganol
Kickstarter, AirBnB, Github, Scribd, Bleacher Report, Hulu, Codeacademy, the
100+ startups that message me for interviewers every year, etc.

I was only making claims for rapid prototyping. I still contend for
prototyping there is no better framework than Rails. From the start DHH
designed Rails specifically for prototyping of web apps, and your custom
prototyping infrastructure will sit very nicely on top.

~~~
SEJeff
No better _Ruby_ framework than Rails. We both agree there!

------
bluejekyll
I don't like this. Seems like encouraging a lot of bad starter projects that
are never useful. It would be better to do code challenges/exercises for
practice and learning. Like write a hashmap one month, write a linked-list (in
C then in Rust) another.

If we want something useful, how about, contribute to a new open-source
project every month. That challenge may end up with some major benefits to the
community. It will also teach you how to work wth others, etc.

~~~
ggoerlich
I added to the 1PPM README file, that a contribution to an open source project
is a perfectly valid and highly encouraged project. Thanks for your remark.

------
hawkice
The comments here are borderline nonsense. I kept up a pace of releasing a
working web widget (didn't charge for them, but all meant to be useful) every
four days for months. Last year I released at least three dozen without
burning out and honestly probably would have been happier releasing more.

One for-pay product a month would be pretty reasonable, as long as you set
expectations well. Sound hard? "Costs $3" sets the expectations correctly.

The amount of scaling back on ambition here is bizarre. This isn't shooting
for the moon.

Now, marketing, that's something that takes time. I have no words of wisdom
there.

------
huherto
I like the idea. Sounds a good approach to get good at doing things fast. You
could even significantly improve the quality of your work.

Anyone remembers the pottery class experiment ? They partition the group in
two. One partition would be graded on the number of pottery pieces. The other
partition was graded on the quality of the best piece. The result was that the
first partition no only got more pieces. They also made better pieces. They
just practiced more.

------
franciscop
I've been publishing around 1 library (some small and some medium for 1
person) every other week. However, most of them are related around building
front-ends using ES6[0][1] or building websites with Node.js[2][3]. I am also
doing some experimentation with robotics/AI (voice/image recognition) but
those are just side projects like [4], not publishing anything.

[0] [http://superdom.site/](http://superdom.site/)

[1] [https://github.com/franciscop/uwork](https://github.com/franciscop/uwork)

[2]
[https://github.com/franciscop/loadware](https://github.com/franciscop/loadware)

[3] [http://github.com/franciscop/server](http://github.com/franciscop/server)

[4] [http://anchor.science/](http://anchor.science/)

PS, I think all of those (and some more) were done within the last 2-3 months.

------
strictfp
Excuse my ignorance, but aren't we glorifying speed here at HN? I think one
project per month is way too fast to acheive anything of substance. If you're
spending one hour three days a week, you'll only have 12 hours to finish a
project. Even if you quadruple that, 40h isn't all that much for completing
anything interesting at all. I have spent more than a year off and on on my
latest side project, and it's not finished yet.

Having felt the pressure in the coding community myself, I've spend
significant time improving my speed and I now find myself being on of the
fastest coders in my company. Sure, that buys you a certain type of edge. But
even if you're fast, a lot of time goes to thinking about problems, reading
research and such. And someone who's constantly panicking trying to write as
much code as possible will most likely find themselves digging a whole for
themselves.

~~~
joshux
Ken Thompson wrote Unix in a month.

~~~
strictfp
Allegedly, it took him a month -
[https://www.princeton.edu/~hos/Mahoney/expotape.htm](https://www.princeton.edu/~hos/Mahoney/expotape.htm).
But the idea had probably been growing on him for several years, while working
on very similar projects.

I think this actually supports my idea of letting ideas grow on you before
executing them.

~~~
nickpsecurity
Further it's a tiny subset of MULTIC project that he worked on for some time.
Some of MULTIC design ended up in UNIX. One can argue UNIX's design began as
far back as that where he was doing something else but pivoted in new project
with weaker hardware.

------
halis
The valuable part of this article is to limit a startup idea to one month of
initial effort. And don't continue the effort unless after a month you can
gain some sort of useful validation that there is a market for your idea.

This also means that you will have to stick to the basic core of your idea and
skip lots of details, in order to have something that can be shown after a
month.

I've seen too many startup ideas that people started working on that weren't
necessarily bad ideas, but their plan was to make an MVP, the scope of which
would take a team of engineers at least a year to deliver.

------
neovive
I might give it a try, but on a slightly less intensive schedule--maybe one
project every two months. It doesn't sound as catchy, but a bit more
realistic. Best of luck with this initiative.

~~~
ianai
I didn't see anything in the premise requiring anybody to actually stick to
the timeline. I doubt he/she is going to delink from someone for something
like that.

------
xchip
Just added two projects:

\- A physics engine:
[https://github.com/aguaviva/Physics](https://github.com/aguaviva/Physics)

\- A Neural network:
[https://github.com/aguaviva/ArtificialIntelligence](https://github.com/aguaviva/ArtificialIntelligence)

The point was to learn the basics by implementing everything from scratch, I
also wrote a tutorial to make sure I understood the theory.

------
eb0la
I had the same idea: starting one project per month for 2017. I guess 2016 is
too now short to achieve something relevant ;-)

~~~
krapp
Still haven't finished my Game a Month project for January 2016...

~~~
lucaspiller
I did 3 months in 2014 (I think?) then got stuck. It wasn't so much finding
the time that was the issue for me, but deciding on a game I'd like to build.
Although that's pretty much the story of my side projects, I spend more time
procastinating over what to build rather than building it.

~~~
krapp
I keep getting distracted by turning parts of my side projects into their own
side projects.

The game I was working on (basic Berzerk clone) was simple enough, but once I
decided I needed to use Lua (why? I don't know, I just did) and rewrite the
ECS (it's still terrible) and have a vector-based camera for 2D scrolling,
which Berzerk never even had (and rewrite the vector class, of course, even
though it already worked) and I spent a week writing a state machine for basic
enemy AI, implementing it, wondering if an ad-hoc possibly Turing complete
pseudolanguage implemented in std::vector was really the correct solution,
hating it even though it worked despite being an affront to programming, and
deleting it, along with all of the game states that used it, and starting over
from scratch, I realized I wasn't actually making a game anymore, so I gave
up.

And by "gave up" I mean I'm working on the nth complete rewrite right now. The
ironic thing is, it _could_ have been done by the deadline - most of the
gameplay was already there, if I'd just focused on the forest and not the
trees.

But in my defense, the camera is pretty darn smooth, and I seem to have gotten
a lot of useful code out of the effort, but not an actual game yet.

------
sigvef
We do something similar at work. Here's two of the monthly side projects we've
come up with this fall: [https://www.zombocam.com](https://www.zombocam.com)
[https://www.musicvideodispenser.com](https://www.musicvideodispenser.com)

------
highCs
I really love to see that. I believe great programmers are the one who've
started countless projects from scratch on their own (of course my opinion is
oversimplified here). This, 1PPM, is really what you're looking for if you
want to become a great programmer. Nothing else, just that. So go for it.

~~~
preordained
I...don't know about that. I've worked with several programmers who were great
at getting something up and running, but we're kind of crap at going deeper--
adding depth, maintaining. I'd go as far as to say they typically had an
attitude of "I got it up and running, mission accomplished!" Maybe they need
to get closer to that 1000 mark to learn the value of planning for the long
term, making something you can continue to build on, etc.

------
chrismorgan
Hmm… I like the idea. I think I might take it up, focusing on finishing things
I’ve already started but never published, with either prototype
implementations or something for which I’ve made at least some progress. I’ll
get through half the year on those alone!

------
ensiferum
My "side project" (or actually just one of them) has taken +10 years and
thousands of hours.

So I just wonder that what kind of things that produce value can you expect to
create in 1 month (assuming you're putting like few hours every day) ?

~~~
nickpsecurity
MySpace went from idea to launch in 10 days per the Wikipedia article:

[https://en.m.wikipedia.org/wiki/Myspace](https://en.m.wikipedia.org/wiki/Myspace)

This project a month scheme is a crap shoot that will produce little of value
in terms of tech released itself. A few valuables among a bunch of misses.
Yet, decent ideas can be prototyped in a month or less with enough feedback to
determibe if they're worth further action.

------
pieterhg
Did this 2 years ago, radically changed my life:
[https://levels.io/12-startups-12-months/](https://levels.io/12-startups-12-months/)

I was about to give up and get a day job.

~~~
binarydivision
Found your post-project debriefings very interesting to read, thanks for
documenting your experience so thoroughly.

If you don't mind, I do have a question: what did you do in terms of the legal
side? I.e. did you start a new company for each month, do each within an
existing corporate umbrella, or just not worry about that until you needed to?
Or maybe something else entirely?

------
jmnicolas
Personally I'd be happy with one project a year or even a decade really ;-)

~~~
truth_sentinell
Do you have 3 lives? You can't afford that if you want to build stuff. We
actually have 15 years (on average) of useful life from 20 to 70 if you're
lucky.

------
traviswingo
I really like this idea. There is a terrible tendency to over engineer the
things we make as developers. The practice of finishing and shipping as
actually much easier said than done.

I'm in!

------
freyir
I was thinking about doing something similar this year. I settled on one
project per quarter, which would let me take on things slightly more
ambitious. But in a way, I like the extreme constraints set by one project per
month, which will likely force someone to approach projects completely
differently than they're used to.

------
pcbje
Funny, I started the ggraph project
([https://news.ycombinator.com/item?id=13283961](https://news.ycombinator.com/item?id=13283961))
pretty much exactly one month ago.

------
baboun
Meh.

This is more fun:
[https://levels.io/12-startups-12-months/](https://levels.io/12-startups-12-months/)

------
rawoke083600
I just launched www.fibretiger.co.za an online fibre comparison site in South
Africa, we got over 8 fibre networks and more than 20 fibre isps.

------
dalacv
I'm just going to place this here:

[https://bubble.is/?ref=WDZ7KSFG](https://bubble.is/?ref=WDZ7KSFG)

------
wonjun
I just began [https://pingtiger.com](https://pingtiger.com)

------
ilzmastr
How do I submit ideas for other people?

~~~
giancarlostoro
My guess is fork and do a pull request? Or create an issue beforehand to ask
if it's ok to do that.

------
adamqureshi
We are building a MVP in 3 days. Long weekend! Its doable yo! Simple AS
potatoes! Look MA no POLISH. ;-)

------
kazinator
> _12 Months / 12 Side Projects - Are you in?_

Nope, busy 7.5 years into one side project; thanks for asking.

------
arekkas
Good software, like wine, takes time.

~~~
truth_sentinell
The main idea I think is not to build quality software, but to actually get
shit done. You can refactorize later if you feel like the project has future.

------
darkstar999
> I'm surprised by all the negative reactions.

Welcome to Hacker News, where everything gets shit on!

~~~
dang
Please don't diss this community while participating in it.

Your comment actually does the thing it is criticizing. That's indicative of
how complex the problem you refer to is.

We detached this comment from
[https://news.ycombinator.com/item?id=13284556](https://news.ycombinator.com/item?id=13284556)
and marked it off-topic.

