
How to never complete anything - swah
http://ewanvalentine.io/how-to-never-complete-anything/
======
vinceguidry
I can't imagine ever shipping a side project. That's not why I build them. If
I ever got to the point in my life where I do want my own company, a side
project is not the way I want to go about it. Companies take a lot of work,
that work has to be understood, then delegated and shared.

The technology aspect is really only 10% of it. Sure, it's the essential
0-to-1 kicker that gets you going, but once that's done you still have to find
product-market fit. That quickly assumes second-job status and can wreck your
personal life. I've seen it happen.

A side project means you're taking all that on yourself without any help or
real guidance. Not having that help means that when you finally do ship your
side project, it's probably not going to achieve the kind of rapid growth you
need to make scaling up possible.

And you really need rapid growth in order for working on a startup of your own
creation to beat out having a reasonably-decent job. And if you don't have a
reasonably-decent job, it's way easier to switch jobs / industries than it is
to build out your own company.

What I want out of a side project is the kind of deliberate practice that is
often lacking in my real job. Also to chase down random mind hares that seize
my interest.

~~~
cocktailpeanuts
This is a rationalization and you know it.

There are tons of other people who also think side project is a way to learn
something new, yet they ship.

Also there are tons of startups that started out as side projects. Facebook
did.

You have no excuse. Stop lying to yourself because it's not doing yourself any
good. The only reason you're not releasing your side projects to the world is
because you are afraid of criticism.

~~~
vinceguidry
Oh believe me, I did try. Moved in with a business cofounder and started
working on an idea. We squabbled over a lot of things before I realized that
it was a marriage and not a transaction, and what I wanted was more
transactional. So I bailed and got a job.

I still talk with the guy and fill out estimates for his potential clients
whenever he wants. We'll eventually hack out a working professional
relationship and start a company together.

The fact of the matter is that personal life matters more to me than
professional life. I think a lot of people wind up using professional
accolades to make up for things they can't get in their personal life. Maybe
that's not you, but for me, working on my relationships and my emotional
health is 100x more important than a big pile of money and influence ever
will.

Maybe your answer to this is to "just work harder." To that I just have to
say, 'absolutely not'.

~~~
cocktailpeanuts
> Maybe your answer to this is to "just work harder." To that I just have to
> say, 'absolutely not'.

I said "ship" it. not work harder. You can even ship something you built in a
couple of hours.

It IS ok to not ship every single project you work on, but it is not ok to be
proud of how you never ship.

Personally in terms of "learning" I learned 90% of what I have learned AFTER
shipping. You think you are learning but you are only scratching the surface.

~~~
vinceguidry
It still takes time. Time spent away from your loved ones, away from your
friends, away from doing the things you really want to do with your time. It's
great that you find meaning in learning from the market. But the only love the
market can really give you is colored green.

~~~
at-fates-hands
As someone who started a side business with the thought of doing both that and
my normal 9-5 until my side business took off, everything you've said in all
your responses is completely accurate.

I found out that after landing six clients and taking on a ton of business,
myself and my partner (who was also working a full-time job too) got in and
suddenly my personal life vanished. Sure, the money was rolling in, but all of
my relationships suffered, I didn't have time to do the things I really wanted
to do.

Worse yet? I felt like all my clients would want the latest and greatest web
technologies and applications to make their businesses run smoother and easier
to manage. Nope. They just bickered with me and it was a series of struggles
to get anything done. Twelve iterations of design and several "come to Jesus"
meetings couldn't stop the non-stop changes for one client. Another client was
stuck in a paper and pen world and didn't want to automate or change anything
about the one process that hindered their business. Another wanted web design
from 1995. It was maddening.

After a year, I fired three of my clients, finished two of the sites and cut
those clients loose and then kept the only one that was a joy to work with.

My life returned to normal, but it made me realize exactly what you said. My
LIFE is more important than a pile of money. Maintaining my relationships with
my family and friends should be more important.

------
DizzyDoo
I finished my side project a couple of years ago, released it, and then found
I was able to quit my Python webdev job and go full time making video games.

The key difference is that my project was a video game (this one:
[https://www.youtube.com/watch?v=YwXl8lDrxn8](https://www.youtube.com/watch?v=YwXl8lDrxn8))
and that takes a lot of temptation to do what the OP is writing about,
rewriting stuff in Haskell for example. The interesting bit when it comes to
side projects (and now my full time projects) for me isn't actually the tools
or the methodology or anything like that, but the end result. I spent my
teenage years building games that I never finished, and it made me quite
miserable, because I so just wanted to finish something. Anything.

I remember the first game I ever finished was a clone of Snake. There was
nothing remotely interesting in the implementation or in the design, but I was
so flipping pleased with myself, I had finished something! And that let me
slowly build my projects up to more interesting endeavours, and eventually to
one that could be sold. Starting small was the key for me, as I learned two
things: 1 - what was 'too much' for me to try and tackle at the time and 2 -
self-discipline, not chucking the project the moment I got bored, or had a
'better idea'.

~~~
lubonay
Thanks for the inspiring story.

One question - how hard is it to actually deal with the administrative, non-
code tasks of turning your side project into your main business? I'm talking
about incorporation, supporting clients, basically all the stuff that goes on
outside the source code repository.

~~~
DizzyDoo
Honestly, not very much. I'm incorporated in the UK, which involves a 15
minute filling in of a web form to accomplish. I have an accountant who really
helped me in the early days walk through some things I needed to know (normal
stuff like save my receipts) and handles the VAT filings. The biggest time
killer for me is the quarterly MOSS filings (registering European VAT) but
that's a couple of hours of work four times a year.

Supporting my customers ought to be the biggest time sink, but actually, I
never needed to patch the game.

Organising discounts and Steam sales and things like that takes thought, but I
actually really love that side of my business.

For my current project, marketing is going to be a big deal for me, but I
learned a lot doing that for The Cat Machine, and for me it's as important as
anything that goes on inside my Git repository.

------
gerlv
_Ship daily_

This is the advice I can give to anyone who has a side project. Get to the
point where you can show something to the users and just start adding stuff.

Even if it's just two lines of code or changing the favicon - still worth it.
In practice, it's harder to do than it sounds, but I've been doing it for some
time and it's been going great.

In reality, you won't have millions of users on day 1 no matter how great your
product is. If you start small and keep adding stuff you will have more
success.

In fact, the biggest challenge for side projects is marketing and not the tech
or infrastructure.

However, it also depends on the goal - if you want to build the project that
makes money it's completely different story to experimenting with tech. In the
end, you get the experience.

For example, a few years ago I managed to build an overengineered CDN product
that compressed images on the fly (almost on the fly). I shipped the project
and it even worked great for testers, but I didn't get to the point where it
makes money, so I shut it down as with half unfinished features as it was
taking too much time.

While building it I managed to learn Go, improve my AWS skills, plus some
other tricks. Now it sounds like a great investment even though I feel that I
haven't completed the project.

~~~
majewsky
"Ship daily" only works with web applications. If I were to ship my
applications daily (or rather: each day where there occur changes), I would
just be compiling packages all the time. (Before you ask: This cannot be
automated further. I will not give my GPG key to some automation to sign the
packages with.)

~~~
novaleaf
I automate my deploy process by passing my password as an argument to my
automation script. maybe you can try figuring something similar out.

Because yeah, by hand, even deploying my webapp would take a couple hours. it
took me maybe 8hrs of labor to setup my deploy script but given as I've
deployed maybe 50 times so far it's paid off.

~~~
matrixagent
Hours? Could you elaborate a bit what exactly you mean with "by hand"? I'm
probably not thinking manually enough, I can't come up with what could
possibly that time intensive about any deployment.

~~~
novaleaf
"By Hand" I mean running each command required to deploy line-by-line, at the
command line.

For me, that would be:

1) provision VM

2) configure the new VM (security hardening, install utils)

3) download app from git and configure it

4) take image of vm

5) install new image into my autoscaler

6) hot-replace live instances of previous version with new version.

doing each of those commands by hand and waiting for each to complete could
easily take 1.5 or 2 hours of work. I did it by hand the first couple times
but once I figured out my workflow I automated it (bash script) as fast as
possible.

I spent a couple days looking into ansible, but as I have a very specific need
I didn't want to spend 2+ weeks adding another chunk of "technical debt" to my
product.

------
startupdiscuss
Okay, I am going to share my secret for finishing.

I discovered this late, but am glad I did. Are you ready for it?

The secret is this:

don't start something till you finish the last thing, no matter how poorly.

This goes even at a "micro" level, so don't start distributing the load on
servers till you finish the last thing (interface), no matter how poorly you
finish the last thing.

Now you have the secret. Go forth and complete.

~~~
stewbrew
I beg to differ. Sometimes things need to settle down or you have to gain some
distance. This can take months or even years.

If you don't have an external deadline, you can afford finishing things when
you are actually ready for it.

~~~
freehunter
My wife gets frustrated when I set aside a side project or a hobby for a while
and pick up a new one or return to an old one. She says she finds it difficult
to support my new hobby knowing that my old one is languishing. But the way I
see it, the day I _have_ to work on a hobby, the day I _need_ to put hours
into a side project, that's the day it stops being a hobby. That's the day it
stops being a side project. On that day, it officially becomes a second job,
one that likely isn't paying me anything.

I have two half-finished Rails projects, a half-finished Arduino robot, and a
guitar that hasn't been played in a couple of weeks. And you know what?
They've all given me some joy, and have been set aside temporarily when that
joy started to feel like work. That's the reason I switched majors _away_ from
computer science. I like programming. I don't like _being forced_ to program.
I don't like making software for someone else. It's a hobby for me. Not a job.

------
nemacol
As someone who is trying to learn to code on their own, I feel like I
understand this. The first question of "which language/stack/etc should I
learn first?" has haunted me for the years I have been trying and getting
nowhere.

Not EXACTLY the same problem as the author, because I am not building out
scalable infrastructure. I just spent a ton of time learning the fundamentals
of angular and node, then try to understand express, then grunt, and mocha and
bower and... now I have weeks into this pile of stuff... nothing working and I
am frustrated, disappointed, and oh look Overwatch patch notes.. time to try
out the new hero.

~~~
l_t
Unless you want to focus exclusively on Web development, I wouldn't recommend
picking Javascript as your first programming language. The ecosystem is
fragmented, and the language itself is probably not the best for teaching.
Have you considered learning Python or Ruby first?

On the other hand, if you're committed to Javascript, I think you should start
at the most basic level. Angular is good, but it's a complicated system that
takes time for even experienced Javascript coders to get used to. Same with
Express, Mocha, Grunt, etc. These tools incorporate complexity to hide it from
the programmer. But as a novice programmer, you DO NOT want that complexity
hidden right off the bat.

Assuming you've gotten past the very basics (syntax of programming language,
executing Javascript in the browser, reasoning about simple scripts), I would
recommend the following as an exercise for learning:

Pick a fairly simple website and try to re-implement it, without looking at
the original code. Don't start with angular, bower, or anything else. Just
Javascript, HTML, and CSS. This is the fundamental language all browsers
speak, and you have to be able to understand it for everything else to make
sense.

As you work on the project, you might start to find things annoying. Like,
dynamically changing page content with Javascript requires a lot of code. How
could you make it easier? Think about, and possibly even implement, a solution
that makes sense to you. Then, _once you don 't need it_, you can reach for a
pre-baked solution (like Angular, Vue, or React in this case).

~~~
nemacol
I have no intentions of dealing exclusively with web, but it seems to be the
most accessible and it is easy to come up with projects to do. Where sitting
down in front of visual studio trying to learn C# or similar is just way too
big and harder to come up with things to do.

I started programming by working with codeacademy.com and taking a MEAN stack
bootcamp - which was a good experience but not a great way to learn to code. I
took this specific class because it met my work schedule, was online, and not
very expensive. Hell, it was better than nothing at least.

I appreciate your feedback. I am at a point where I can build simple websites
with html, css, java. I use bootstrap because css makes me angry. I take your
point though, work with the fundamentals and progress from there. Thank you
for your reply.

------
chatmasta
Your problem is you have no momentum. You _need_ to build momentum and get
over your fear of shipping.

My advice: pick three "side projects": one that you can build in a day, one
that you can build in a week, and one that you can build in a month.

Build the first one in a day and _ship_ it. This will motivate you and build
your confidence in your shipping abilities. Then build the second one in a
week and ship it. Then build the third one in a month and ship it. You've now
shipped three projects, good going!

That said, I want to echo what @vinceguidry said. Side project != business. If
you want to build a business, the same logic applies... just get something out
the door. But you need to be serious about ongoing support and maintenance.
Whereas a side project could be anything, like a fun open source project, a
personal website, experimenting with new frameworks, etc.

p.s. Don't be so hard on yourself. You just shipped a blog post to the top of
HN. And you've got a long history of blog posts on there. Maybe you should ask
yourself why you can ship blog posts but not side projects?

------
kilon
Suffering with dysthymia taught me many things. One of the things is that I
may be fine working under pressure but my brain is not.

Side projects tend to be small , fast and enjoyable. This is the way the human
brain works and is actually much more efficient than taking big steps.

Also make sure that your main goal is fun, if it is not, it will only get
worse. Fun is the fuel of the brain. You cannot fight fun, because you cannot
fight the brain. The brain always win.

Make your brain your ally and success will come. You are not your brain , your
brain is a lot more than you.

Let me say once more , brain.

Brain

Oh and if you think your code will never sell , remember that fortunes have
been built selling rubber bands for hair. There is always a way.

" use the brain Luke "

------
drchiu
It depends on your goal. Is your side project aiming to become a side business
or an experimentation to learn new things? If it's a business, it's important
to get things done. If it's for fun and to experiment, sometimes the end goal
is not to actually complete it. The endeavour itself will be reward enough,
perhaps.

It's true that a lot of programmers do jump from shiny new tech to the next
shiny new tech. If it's to start a business, it's probably best to stick with
boring stacks.

------
avenoir
I share the pain. I'm incredibly productive at my day job architecting and
tying together a plethora of microservices to deliver a platform of unified
products. Outside of work i am absolutely freaking worthless. My problem is
largely perfectionism. I've started working on seemingly great ideas and then
took a turn to build a tool that would make task A less hack-ish. A few weeks
later I'd open-source the tool/library and jump back on to the project only to
find yet another thing to bothers me. My thinking here is that while I'm
working on something in my spare time I should enjoy doing things the right
way instead of cutting corners to meet deadlines. If i don't do this I cannot
help but feel unbelievably dissatisfied and usually quit within a few days.
Still don't know how to get over the hump. I'm almost thinking i have some
kind of psychological disorder. On a side note, this same behavior helps me a
lot in other areas, like working on a project car where attention to detail
and just taking time makes the end result much better.

------
ideonexus
There's a Garrison Keillor quote I love that I think relates to programming as
well, "A written work is never finished, it's simply taken away from you at
some point."

I think the author's intent is a good one and it overcomes the "perfect is the
enemy of the good" trap we can all fall into at times. As the technical lead
on a multi-team project last year, I had to beg my developers to just check in
_anything_ at one meeting because they were terrified of having the other
teams see their imperfect code. When I assured them their code couldn't be any
worse than mine, which I had checked it several times and actually had
rejected by the version manager, that they were able to laugh and agree to
start committing their work to the repository.

Your code is going to get criticized no matter how much you polish and
engineer it. If you can accept that, then I think you will find yourself free
to be more productive.

------
garysieling
I built a search engine for lectures
([https://www.findlectures.com](https://www.findlectures.com)), partly so I
have something I can show people (e.g. my family otherwise has no idea what I
do).

Trying to build something in your free time forces you to think about dividing
work up into very small pieces (what can I do with a free hour, etc). I've
found this very beneficial in a work environment.

If you get to the point where you can show people, showing people changes how
you think about the project - some invisible social pressure to do better,
similar to code reviews.

You also have to think through the structure of the entire project on your own
- often in a work environment, you're joining something in progress.

This is also a great way to research new tools. Instead of thinking how cool
they are, you evaluate how they fit into a "real" project, but without the
pressure to actually make it work.

------
rglover
Obligatory, but important:

Do the Work - [https://www.amazon.com/Do-Work-Overcome-Resistance-
Your/dp/1...](https://www.amazon.com/Do-Work-Overcome-Resistance-
Your/dp/1936891379)

The War of Art - [https://www.amazon.com/War-Art-Through-Creative-
Battles/dp/1...](https://www.amazon.com/War-Art-Through-Creative-
Battles/dp/1936891026)

You have to build a muscle for this stuff. It's hard.

------
superasn
I struggled through the same thing once I started with TDD. I've never had
problems completing and shipping new products (a solo founder i launched 20
saas sites last year) but after reading dozens of documents about why TDD is
an absolute must for any serious programmer my hubris got the best of me and I
decided that I too will join the bandwagon. Boy, was i wrong.. Maybe for big
teams it is a must but for solopreneurs and 2 people teams I wasted nearly 8
months before i realized that not only my productivity had rock bottomed but I
started hating something that I once passionately loved. Since that day I went
back to php and angular js.

I do get occasional this feature not working mails but at least I'm creating
new sites again and making more money. If there is anything you want to take
from this rant is don't waste your time doing things that other people are
telling you to (how ironic). Do what you love and you will get shit done.

~~~
ernsheong
For a small team you should probably only TDD the most critical stuff, and not
everything. Stuff that has huge paybacks, critical code. Generally I have been
reverting to coding first, unless in scenarios where I waste more time trying
to manually test it.

~~~
superasn
You are absolutely correct, but I learned it the hard way.

For solopreneurs the time is much better spent on marketing especially
generating leads because it gives 1,000 times more return than time spent on
writing tests and probably saving a few bugs later.

------
reledi
It's okay not to ship personal projects. No one's _really_ holding you
accountable for that. Look at it this way, unfinished personal projects still
give you value because you might still be using it in its incomplete state,
and you learned something when making it. As you become a more experienced
engineer, it's common to have more unfinished personal projects because you
have difficulty approaching it with a hacker mindset where you throw all best
practices out the window and get it working as quickly as possible. Accept it
and try not to lose sleep over it.

The problem is when this behaviour crosses over into your professional life,
because you're not delivering value to your customers quickly enough and as a
result you'll either get sacked or the company can go bust. Having someone
else to keep you in line works great, it doesn't even need to be a Product
Manager or Product Owner. And if you don't have someone else to keep you
disciplined, then you better work hard on improving this area where you're
lacking. Write down ideas on paper for example and ruthlessly prioritise and
prune them every morning. Sayings like "work on what's highest priority", "do
the least amount of effort that results in the greatest value", "keep it
simple", "reduce scope", "you aren't gonna need it", "defer nice to haves",
and so on are things we hear so often because it really is good advice that
you should follow.

~~~
wkoszek
You get depressed if you have an idea in your head all the time, but you can't
finish it. Or you boggle down your head with details and never end up having
something you can show to your second half. That's the problem with shipping
personal pet project. You are your own manager unhappy with yourself as an
employee.

------
curun1r
I have this same problem. My finish rate is abysmal, but I've actually
finished a few.

I've realized that finishing a project is roughly 10% exploration another 20%
getting to working and at least 70% polish. The exploration phase is very
enjoyable and it's what keeps me hopping from project to project.
Occasionally, the enjoyment will phase will encourage me to keep plugging away
at it until I get to working. This is the minority of my projects, but it
happens naturally to some extent. But I rarely put in the time and work to do
that other, much larger bit to get to a done state. Because that part is
actually work and it's not fun.

But what I've discovered in looking at my projects that actually got to done
is that there's one thing that, for me, leads me to finish...having a social
pressure. The projects that I've discussed with friends and gotten them
excited about are the ones that I finish. My attention will wane and I'll drop
it for a bit, but then I'll have a conversation where someone asks what what
the status is and I'll pick it up and work more. And if that repeats enough, I
finish. The best case scenario is getting someone excited enough to actually
code with me on a project. In those cases, we usually get to done pretty
quickly.

I think this is why being a solo founder is so difficult. You're going to run
into difficult stretches and you'll want to focus on something else. It's a
very rare person that can continually return their focus to a single problem,
even in the face of adversity. But if you've got someone else to steer your
focus back, you can keep working long enough to succeed.

So here's my advice to a coder who's never finished. For your next side
project, when you get the inspiration, instead of immediately sitting down at
a keyboard, contact a friend, go out for drinks and tell them about your
project. Better yet, get a group of friends and discuss it. Get them excited
about it and let them know that you're excited about it. Only after that step
should you start coding.

~~~
snarf21
Right, it is like going to the gym. Doing it with a buddy means that each of
you can take a turn at motivating when the other is tapped out.

------
lukewrites
Two things have made a huge different in my ability to finish/ship:

1\. External Deadlines. I'm a career teacher, mostly self-taught Python/Django
developer, and am applying for dev jobs. The school year's over in June, and I
want to be able to step into a new jr position in July/August. I'm planning to
resign my position this spring, and cannot be out of work. My benefits and
salary will stop in September. I'm f'ed if I'm not working by then. The need
to ship projects (if only into my portfolio) is high.

2\. "Deep Work" for time management. Ideas from Cal Newport's book "Deep Work"
have been foundational in my getting more done. It's hard to find the energy
to build my side projects/portfolio after wrangling eight year olds all day,
so I started getting up at 5 am solely to work on my projects. I make coffee
and toast then get to my desk. I close all applications except Atom, Dash, and
Firefox; turn on Do Not Disturb; look at my to-do list in my notebook; then
get to work. Having 75 un-interrupted minutes before my wife gets up allows me
to get a huge amount done, and it's become gratifying to watch the 6 am
commits pile up on my github punch card. I've also found that exerting
discipline in this facet of my life has had a positive knock-on effect in
other areas.

~~~
splintercell
I came here to mention 'Deep work' (which I found a very effective way to do
and talked about on HN previously [1]) AND another tactic which is giving me
good results.

The trick I found to complete things is:

 __Do not switch ladders of abstractions. __When working on a modern web
application (with backend, frontend, css, testing etc) if you start with
writing backend API calls, then just write all of them first. Starting with
the API call for /user', /signup, /login, /compose, /rate, /play. Don't worry
about it working. If you do TDD then fine, but if you don't tests before you
write the code, then avoid writing tests until you're done writing the basic
code for your API. Then you write tests for it and make sure that each
endpoint at least works.

Then write E2E testing for it(for the backend). E2E tests are a great way to
build your app with it's core functionality full working and validated. In
other words, write unit tests which first call /signup, then /login, then
/compose then /play (which is I presume one full flow of a user). This will
help you figure out issues with your API and it kinda feels like writing a
full app.

Once you're done with testing, then write the frontend, just simple HTML,
don't worry about CSS. Don't try to grab React + ES6 + Redux boilerplate or
things like that. Just go with the simplest thing. Even if after every action
user has to refresh to page, so be it. Oh you heard about CycleJS and think
that you should be using that instead? Well guess what, you purposefully chose
a really terrible technology to build this app, so once you're done making
your app in that crappy tech, then you can rewrite it in CycleJs or anything
else you want.

This way, even if you abandon your CycleJS rewrite effort halfway, you'd still
have a completed project(and trust me, you will never let your app be stuck at
static HTML with no CSS). Chances are that you'd abandon it, when you've
already written your app in CycleJS but made a new rewrite effort to write it
in Vue.JS.

Basically idea is, you think in terms of one layer at a time, and you defer
all desires to refactor things until you are done finishing that layer.

1\.
[https://news.ycombinator.com/item?id=13813173](https://news.ycombinator.com/item?id=13813173)

~~~
lukewrites
Mental Models sounds fascinating, thanks for the suggestion.

------
dahart
You could think of building a scalable back end you don't actually need as a
form of premature optimization, and I think the way around that is to evaluate
& measure what you actually need - problems you have now, not problems you
might have later (no matter how sure you are). @gerlv's suggestion to "Ship
daily" is great because it not only forces you to ship often, so you feel like
you're getting something done, it also forces to you evaluate what you need,
and forces you to quickly get feedback from users that should be the true
driver of what you need. (Assuming you want users, rather than a finished side
project just for you.)

Michael Abrash has some books on optimizing code in assembly language, and he
takes special care to talk about why & when to optimize that would also apply
here. The point he makes repeatedly is to optimize from the user's point of
view - don't do something the user won't notice.

[http://www.phatcode.net/res/224/files/html/ch01/01-01.html#H...](http://www.phatcode.net/res/224/files/html/ch01/01-01.html#Heading2)

We all do it though, this is a human trait, but we programmers and computer
scientists often amplify the problem. We love obsessing over what's "best",
without regard to whether we actually need the best. We are taught during our
Computer Science degrees to generalize and abstract at every opportunity, to
plan for future problems we might have, and for future problems others have
had that we might never have. We discuss incessantly how important it is for
software to be scalable, and how to use the "best" everything, best language,
best database, best algorithm, etc.

Strive to solve only the problems you're already personally experiencing, wait
to solve problems until you are already experiencing pain, and ignore the
problems that only "might" happen, then it will be easier to finish things.

~~~
chriswarbo
> You could think of building a scalable back end you don't actually need as a
> form of premature optimization

I've heard this described as "solving the problem you _wish_ you had". A
globally-distributed, scalable cloud infrastructure of microservices is good
for the likes of Google, Facebook, Amazon, Baidu, etc. because it solves
problems they face: handling millions of hits in a timely manner; avoiding
downtime, every second of which is user-visible, loses them money and damages
users' confidence in their service; etc.

It's _very_ unlikely that a side-project will _ever_ face these problems; an
off-the-shelf Web server on an off-the-shelf host (say, Apache running on EC2)
is probably fine.

A side-project which isn't shipped will _never_ face these problems, because
it doesn't have _any_ users, _any_ uptime, _any_ revenue, etc.

------
axlprose
> _NO MORE TRYING TO REWRITE THINGS IN HASKELL. JUST. GET. SHIT. DONE._

I chuckled at that, because while it makes for a good joke, I've learned from
experience that writing stuff in less mainstream languages like Haskell is
probably the best way to avoid getting distracted by trendy new frameworks all
the time, since they tend to have smaller, more niche focused communities that
don't produce new frameworks every week that would even be relevant to you.

------
spython
The same thing happens in many other creative endeavors, such as photography.
If you don't have a client that needs pictures soon, you can spend months and
years reading on the best lenses and techniques and buying new gear.

Acquiring all that knowledge leads to a feeling that you _potentially_ can do
more. You are _potentially_ more powerful. It is a good feeling. You can never
be disappointed in yourself if you don't finish anything.

~~~
aratno
At least in tech, the equipment is free.

------
robbfitzsimmons
> If you're using AdBlocker, fair play, I don't blame you. But please consider
> chucking me a couple of quid:
> [https://monzo.me/ewanvalentine](https://monzo.me/ewanvalentine)

Am I missing something? It's a nice set of thoughts, but I can't imagine
paying to have read somebody's personal blog, and would have been vaguely
weirded-out at him having ads on it.

~~~
nikon
Agreed... Such a strange thing to close with. I had to scroll up to see what
he'd given me for free?

------
doc_holliday
The number one thing to remember is almost no one cares what tech you used.
Just get it shipped.

People have built million dollar business that had it's first iteration in MS
Excel, if it is useful to someone and kind of serves the purpose then that is
enough for a start.

~~~
yitchelle
Totally agreed. It is all about your solution for removing the customer's
pain. The sooner you can do that, the better it will be for you and your
customer.

------
alexandersingh
One technique that has helped me is what I call "atomic actions". What is the
smallest action you can undertake, that you can build upon, which will help
you realize your goal?

I've wanted to write for years but thought I had to pen esoteric essays
composed of thousands of words. Recently I just started writing short, simple
posts that are helping me establish a habit, develop fluency and enjoy the
process of writing.

My first post was on this idea of atomic actions:
[https://alexsingh.svbtle.com/atomic-
actions](https://alexsingh.svbtle.com/atomic-actions)

Maybe it'll be of help to someone else :)

~~~
closed
Thanks for this advice. I love that the simplicity of your post demonstrates
the concept it's teaching.

------
asimjalis
I feel you’ve been on the right track all along. Instead of doing the opposite
on the programming side you might need to do the opposite on the product and
selling side. Instead of building something you have no passion for look for
ways to sell what you have already created. In other words see if you can
productize your "auto-scaling, multi-zone, cloud infrastructure". There’s
definitely other people who would like to use that.

Or teach people how to use the new shiny thing.

Or help them decide the pros and cons of new technologies by talking about the
subtle distinctions you have noticed between them through your
experimentation.

~~~
ploggingdev
> In other words see if you can productize your "auto-scaling, multi-zone,
> cloud infrastructure". There’s definitely other people who would like to use
> that.

While working to build out the "auto-scaling, multi-zone, cloud
infrastructure" product, OP (or anyone for that matter) will get caught up
building his own front end JS framework that will address some shortcomings of
AngularJS or reactjs.

If I understand correctly, the point of the article is that it's incredibly
easy to lose focus of what you set out to do and get distracted by something
that is not very important to your project/startup.

------
marban
Bonus reminder: If you're reading this, you'd better go work on your side-
project like totally now.

------
tomseldon
Infrastructure wise, I'm absolutely guilty of this as well. I have found that
there's a middle ground...

You (probably) don't need the microservices and the complexity that comes with
it, upfront. A monolith (and the simplicity in terms of deployment, logging,
monitoring, etc. etc.) will probably do early on.

However, you don't want to shoot yourself in the foot for when it turns out
you _do_ need those things.

I _try_ to write code in self-contained modules, with well defined boundaries,
and glue it together in a monolith. If/when it needs to be split out into
separate services, it becomes much easier.

So, application/business logic code: keep the standards high, do shit
properly. Glue code to keep it all together? Less important. You can rip that
out later and move to different infrastructure with the same code.

That's very generic advice, and I seem to always break my own rule on this at
some point... but I find it's a better mentality for when shit just needs to
get done.

Doesn't help with tech choice in general though (and I'm often guilty of this
as well...).

------
brazzledazzle
This hurt to read because it's something I've recognized in myself and I've
been thinking about how to solve it for a while now. Looking back it was a
habit I started long before I ever touched a line of code–I used to sketch and
paint a lot but would never finish a piece. Analyzing that I realized I was
chasing a "high" that you get from exploring new ideas and even when I wanted
to finish something I made it incredibly difficult by not having even a loose
idea of what "done" looked like. I think having the "finished" figured out
(even if it changes) might help a lot because anything that makes things
harder once you're past the fun part is a multiplier for demotivation.

It does make me feel a little better knowing I'm not alone in my shame though.
And hearing about other's solutions is really helpful too.

------
thehardsphere
I'm on the verge of completing one of my side projects. The most useful thing
that I've found that helps me stay focused is to already have users who you
know will want it. By staying focused on you users and what they want, you can
stop a lot of this shiny chasing before it starts.

~~~
onli
That's where "eat your own dogfood" comes in. It does not replace having real
users, their feedback is invaluable. But if you yourself really use the
functionality of the project, the production version the others see as well,
then you can become yourself the user that pushes you as a developer to get
things done and online.

Well, you probably know that. But for me that was important, so I'll mention
it anyway.

------
wukerplank
My side projects usually aren't meant to get completed. I specifically use
them to try new things. If it works out, I might use the new stuff in my job.
If not, I gained some knowledge.

Some of my stuff is good enough to use (as in early alpha), but doing the
final 20% won't pay off anyway.

------
fazkan
You are one of the 2/3rd kids who were part of the marshmallow experiment. You
cant control your desire for immediate gratification. I feel that with the
level that you are in, you need a bigger problem to solve, rather than start a
new startup(whatever that is). I know your type, I was like you, most of my
friends are like you.

Also did I mention that you are an introvert by nature (read susain cain). You
are easily distracted by shiny things.

P.S. I am no expert, those are just the things that I realized about
myself....

P.P.S Shit. I think I am still like you, because otherwise I would have worked
on the code review that I was supposed to do....

~~~
beaconstudios
the marshmallow test actually isn't quite as straightforward as predicting
willpower or delayed gratification, as the original researcher points out in
this article: [https://www.theatlantic.com/health/archive/2014/09/what-
the-...](https://www.theatlantic.com/health/archive/2014/09/what-the-
marshmallow-test-really-teaches-about-self-control/380673/)

------
igorgue
Here's the thing, there's a lot of social pressure in our industry to start a
startup.

I wonder if OP has ever question why he wants to create these startups.

I found a while ago, that I like kids, I like playing with them, I would never
have one though, I see Startups as the same way, it's something you'd be stuck
forever, like my JQuery Mobile based product of my own startup, I can tell you
now that I get to fuck around in my free time, now I'm happier.

You need to question yourself more, are you a programmer or an entrepreneur?

------
nathan_f77
This is pretty familiar! I've been going through this now with a little game
I'm working on. It's been a way to learn React Native. I thought I would be
done in a week, but I'm still working on it 6 weeks later, and I keep having
to add new features.

It's crazy how the little things add up, like sounds, icons, animations,
hosting, advertising, analytics, websites, landing pages, facebook pages,
codepush, in-app purchases, etc. etc.

Hopefully I'll launch soon though, and be able to share it on HN.

------
joantune
Right on the money this one: [https://neilonsoftware.com/2017/03/10/my-
response-to-how-to-...](https://neilonsoftware.com/2017/03/10/my-response-to-
how-to-never-complete-anything/)

I have been developing professionally for 7 years now and had similar
experiences. It's important to allow yourself to stand still, if vacations
aren't possible, exercise and meditation might help you a lot too.

------
jondubois
I've finished at least 3 major multi-year side projects. One of my open source
projects was pretty successful but none of my side projects went anywhere
business-wise.

Usually some well-funded competitor comes up later with the same idea and
takes all the market.

My advice: Don't bother starting a side project unless it's really niche, easy
to implement and you just want to make enough money to replace your own income
(the market has to be small).

Unless you personally know people who have tons of money to invest in your
side project, then it's a complete waste of time. It has to be people first.

9 out of 10 businesses fail and it has nothing to do with abilities, drive or
persistence; it's only about luck.

I've met a 17 year old who built a wordpress website that generated $10K per
month after just 6 months (though it already had tons of traffic in the first
month) and couldn't write a single line of code. I've heard of hundreds of
similar stories.

Some random person somewhere on planet earth randomly puts together an app
because they think it's cool without any thought whatsoever; it blows up in
popularity out of nowhere; then some smart engineers/people who actually
understand the potential find out about it early enough and join up in
exchange for a stake in the project; that's how actual smart people do
business.

~~~
J-dawg
> _I 've met a 17 year old who built a wordpress website that generated $10K
> per month after just 6 months (though it already had tons of traffic in the
> first month) and couldn't write a single line of code. I've heard of
> hundreds of similar stories._

As developers, we tend to think the technical stuff matters _way_ more than it
really does. I think non-technical people almost have an advantage here -
they'll choose the minimum technology to get the job done.

I've seen some really nice websites created by friends using nothing more than
Squarespace or similar. I fear that if I'd been given the job I'd have
procrastinated for ages over all the different options and ended up wasting a
lot of time and ultimately creating something less impressive.

------
Touche
Keeping things simple is so key. For anyone working on a SaaS startup I would
strongly encourage you to do the boring CRUD method using Ruby on Rails or
Django or whatever the default framework is in your preferred backend
language. Don't get into the JS SPA world, that's a rabbit hole of decision
making you'll never escape from.

You _can_ put that off until you have a successful startup and I bet by then
you'll realize you don't need it anyways.

Personally, my problem is that I just have too many side-projects. I have one
startup side project, but I probably have a half dozen of other OS side
projects that I'm either working on here-and-there or I'm at least thinking
about when I should be thinking about my startup.

I think this is one of the disadvantages of doing a startup as a side project
while still working full time. Even though I allocate 1 hour and a 1/2 to 2
hours a day to work on my startup I still find myself working on other hobby
stuff nearly half the time :( A lot of those hobby OS projects come out of
some problem I'm experiencing at my day job but don't have the time to solve
in the elegant OS way I would prefer to.

I'm super happy to have read this article and plan to take the advise. No more
side-projects, just get my startup shipped. ‍️

------
pfortuny
Superstructure is only useful if you have something to support. Otherwise, it
just scaffolding without building.

I guess all of us learn something similar to this at some point in our lives.

------
SNBasti
Well, learning is the fun part for me. As long as I do not have to finish I
probably would not.

~~~
krylon
I feel the same way. ;-)

Most of the projects I work on in my free time I start because I want to learn
about something (new language, new UI framework, whatever), and once I feel I
have achieved that, my motivation drops dramatically.

Also, not having to deal with deadlines, strange and ever-shifting
requirements, or angry users is part of the fun. Walking away from a half-
finished program is not something I could get away with at work, so it is kind
of a relief to be able to do that sometimes.

------
EdSharkey
What's the scope of your side project(s)? Do you have a business plan? Who are
your target users? Is your code quality all over the map, why and in which
modules?

In the quiet times, I ask myself these questions and get sheepish, embarrassed
answers. When you can give reasoned, confident answers on hard, painful
questions about your future business rather than current tech demo, then your
project has a shot at life.

I have an amazeballs tech demo for my side project. It is scoped way too huge.
Heroics and not knowing what I was signing up for got it to where it is today.

Honestly, if I were to do it again, my first features would have been user
management and payment processing. I wish I could take users and have them pay
me as soon as they saw value in my growing hobby project. But I can't because
I didn't prioritize getting users and using their subscriptions to fund my
work. I have a ton of neat features and no users, argh!!

------
claar
Consider the psychological angle. ADHD, stress, depression and the like can
contribute to these feelings of underachievement and frustration, and a
professional can help explore these possibilities.

Perhaps you simply "haven't learned to finish what [you've] started", but
sometimes there are deeper issues at play.

------
OliverJones
Methinks our author is too hard on himself. Tinkering is a slow process that
can seem undirected, for decades even.

Tinkering with stuff to figure out how it fits together is good. When the
right project presents itself, the persistent tinkerer will be ready. She or
he will have the advantage of knowing how to do the project.

------
wruza
You simply watch how js-required blog shows you neverending progress, instead
of working on it. That's how.

------
js8
Reminds me of this comics that I just sent to coworker:
[http://www.commitstrip.com/en/2014/11/25/west-side-
project-s...](http://www.commitstrip.com/en/2014/11/25/west-side-project-
story/)

------
Kequc
I've become vastly more productive, productive in the sense that I actually
finish things by scoping way way down.

I used to dream up grand plans, start building, and before I got to the end
I'd have thought up three more things I wanted to build. That isn't any way to
finish anything, it's a good way to learn about limitations and develop new
skills.

By scope way down, have a few ideas and consider what they share between them.
What single feature will I need. I build that. But, that feature in and of
itself has a lot of parts so I pick one and I build that. If it has smaller
parts, I build one of those.

Instead of building some grand machine, I build gears. It's far more
satisfying.

------
nanospeck
Recently, I found some things that works for me and put it out as a book.
Interestingly, I finished the book also using the same techniques. A key trick
to keep you motivated is to reward yourself handsomely and IMMEDIATELY if you
achieve the goal on the PLANNED DATE. For eg. I rewarded myself an iPhone 7
plus ( which is currently the hottest phone in the market) for finishing the
book in 30 days. This helps you overcome the fear of loss that, what if no one
buys your product and your effort goes in vain. However I still find marketing
is harder! (My book here:[http://amzn.to/2iUYaOH](http://amzn.to/2iUYaOH) )

~~~
_audakel
If you have poor self discipline in the first place what stops you from just
buying the iPhone in the first place regardless of goal completion haha?

------
mdpopescu
I disagree. Experimentation is an important part of learning and yes,
initially there's a lot of "wooo, shiny!" going on. It doesn't matter - you
are STILL learning.

It also helps to remember that software projects are never finished - only
abandoned.

~~~
daemonk
I think the author of the post was trying to say that he has disproportionally
allocated his time from finishing projects to just learning new things. There
needs to be a good balance between keeping up to date with technology and
producing something from the technology.

------
srvlsct
I can relate to this. I created several products that I never launched. Now
that I look back, I wish I hadn't been so reluctant to publishing them.
Granted, I learned a lot but I wish I launched early and often to get over the
psychological hurdle. Most people don't really care about your project anyway.

I finally bit the bullet and launched
[http://www.survivalscout.com](http://www.survivalscout.com) in January. It's
a definitely whole new set of challenges going from coding to trying to market
and sell your project.

------
liquidise
At the highest level, the trick is to actively do things to increase momentum
while avoiding things that reduce momentum. Pick a stack you know, build a way
to collect money, release before you've even written code, etc.

I wrote a post titled Side Projects: Avoiding Failures to Launch[1] a few
months ago that touches on these same ideas in more detail.

1: [https://blog.benroux.me/avoiding-failures-to-
launch/](https://blog.benroux.me/avoiding-failures-to-launch/)

------
overcast
Get to the point where you have something that barely functions, and put it on
the web, then constantly iterate it. This is how you "finish" what you've
started. I'm totally addicted to learning, and seeing how people use my stuff,
so that's what motivates me to get the concept out there as quickly as
possible. My only real issue now is having the time to be able to put ALL of
my ideas out there. I must have a hundred domains of "ideas" that I want to
get shipped.

------
ernsheong
I've frequently been defeated myself because the project size was too large
and too ambitious. Being a perfectionist also really doesn't help, but it's my
nature. So I've learnt to instead focus on a wayyy smaller project, and I'm
making more progress than ever because well, the finishing line is much
nearer.

Also, using Pivotal Tracker or some agile tool to track stories gives me a
kick to doing things. Commit to a small number stories per defined sprint
period and get it done.

------
fourseventy
Have a grandson, name him Kylo, he will finish what you started.

------
verroq
I often find that when I'm working on a really good side project I severely
underestimate the time to finish. Of the few times I've forced myself to
actually finish it ended up completing in the wee hours of the morning.

So I've became more picky about the side projects and if I'm unwilling to
commit to finishing it in the wee hours of the morning then it probably isn't
worth doing at all.

------
NicoJuicy
Weird, I developed so many side projects. But my most successfull one is a
webshop which I configured in woocommerce with 1 product in it

------
samirillian
Maybe part of it is coming up with a project that you consider too inherently
important/interesting to experiment on. I feel like there are projects that
are essentially excuses to learn a new skill, and then there are projects
where you perceive a real need and simply want that product to exist.

------
rev_null
What's with the cheap shot at haskell at the end? I've shipped a couple of
side projects in haskell.

~~~
perrygeo
I interpreted that not as a cheap shot against Haskell but a warning to avoid
constantly chasing the perfect technological solution. (IOW just ship what
you've got instead of constantly tinkering)

------
feyn
I wrote a blog post in reply: [https://neilonsoftware.com/2017/03/10/my-
response-to-how-to-...](https://neilonsoftware.com/2017/03/10/my-response-to-
how-to-never-complete-anything/)

------
d1ffuz0r
Recently I wrote a blog post about how I finish side-projects
[http://d1ffuz0r.com/how-to-finish-side-
projects.html](http://d1ffuz0r.com/how-to-finish-side-projects.html)

------
JonoBB
Many side projects are not shipped because writing code is only a small
fraction of actually launching a side project. There are a myriad of other
things that need to happen to launch, most of which have little or no relation
to writing code.

------
mezod
I keep finishing things. I do MVPs, but they are so simple that noone really
cares, and after all the effort I put into them. motivation is gone. So while
I'd completely agree with this, every day that goes by I disagree more.

~~~
derwildemomo
Just my two cents, but I just looked at
[http://everydaycheck.com](http://everydaycheck.com) and I think it's both a
great idea and (from what I can judge) well executed.

Also one piece of advice: Do Shown HNs more often. For me, they are regularly
an great source for feedback.

~~~
mezod
Thanks :)

I don't really want to spam HN but I might give it another try and see if I
can get some feedback :p

------
a_imho
The real problem is that programmers have spent far too much time worrying
about efficiency in the wrong places and at the wrong times; premature
optimization is the root of all evil (or at least most of it) in programming.

------
smonff
It sounds like an alcoholic after a major hangover saying "never again".

~~~
smonff
More seriously, it reminds me the time when I was working on a major side
project (I was unemployed, so it should maybe called a "main project") and at
some point, I started to work on a very nicely crafted library that was
necessary for the main project: I lost all interest in the main project and
abandoned it for bad reasons.

------
drsopp
The brilliant lecture by John Cleese on Creativity is apt:
[https://www.youtube.com/watch?v=9EMj_CFPHYc](https://www.youtube.com/watch?v=9EMj_CFPHYc)

------
gressquel
Only thing you need is
[https://www.youtube.com/watch?v=1n9ykP5NJ2s](https://www.youtube.com/watch?v=1n9ykP5NJ2s)

(if its a bad joke, dont vote me down :) )

------
andrewstuart
I always complete my projects but each project takes a long time - months or
years.

I'm highly motivated to find something that people want and the only way to do
that is complete things.

------
stuaxo
The downside to taking "get shit done" is incurring technical debt.

This can be a good thing, if it helps you move forward, as long as you pay it
off + don't let too much build up.

------
tmsldd
Make smaller projects, divide things in manageable pieces and define a clear
end.. before starting it. A project never gets finished just because we never
stop adding to it..

------
zMiller
"I'm challenging myself now to do the opposite, keep things extremely simple,
unglamorous, dumb, sometimes ugly. But done."

Here here my friend.

------
ronreiter
The real motivation behind acquiring technical debt is that 80 percent of your
development work will be dumped eventually. Remember this.

------
bachmeier
My side projects are tools I use for work. I don't necessarily finish them,
but I use them all the time.

------
dominotw
>no more overly ambitious build pipe-lines.

What exactly are build pipe-lines ? is it javascript webpack kind of stuff?

------
duke360
same problem here but slightly different solution i impose myself to not start
another thing until the previous is done. doesn't matter how long it takes but
i cannot do another thing until the previous is not ready i know this will
bring me to 10-year-long side projects...

------
trentnix
And I haven't learned to start what I can finish. Maybe one of these days...

------
yakshaving_jgt
FWIW, the only side projects I have actually shipped were written in Haskell.

------
stuaxo
An update after 3 months of this might be good, to see if it worked ?

------
rafinha
Guess I'm so far gone couldn't even finish the article...

------
dustingetz
Do what makes you happy

------
mattbgates
I pretty much go to work and code. Then I come home and code until I cannot
code anymore and pass out from exhaustion. Good article. Started off with me
thinking I actually wrote it. But I think you lack motivation to finish
because you are content with the way your life is.

I first started creating a project or two that were completely free. These
projects helped me learn what people like and if people were even interested
in using anything I created. Turns out.. I've got good ideas that people
actually find useful. I'm not after creating the next Facebook, Twitter, or
LinkedIn. Rather, I'm after creating things on a much smaller scale that help
with everyday life. Once I got that concept down and accepted that I would not
be creating something huge like a social media network, but other useful
things on a much smaller scale, more specialized and to the point -- many
programs start off great -- then the developers add too many things to it and
it becomes bloated and no longer focused on what it was originally meant to
do.

So whenever I start a project: I write out all the things it should do; its
function and purpose. I do my best never to deter from what I had intended it
to do. This keeps me focused and helps me complete projects much faster. I did
more research in how to charge for the things I made. I would love to give
away everything for free, but I need to eat and pay my mortgage too. I'm
certainly not looking to charge anyone an arm and a leg, but if I charge a
fair price for the products I create, taking the time and consideration, and
how some of it does actually make life easier, than why not ask my users to
pay a small fee to use the product that helps them in their everyday life?

If everyone pays a small fee to me, than I can continue supporting my products
and creating more. I've certainly lost motivation and interest too many times
to count, but money is certainly a motivating factor. To help stay motivated,
I originally calculated how much potential income I could make from X amount
of people signing up and paying the monthly or yearly recurring fee from any
project I start. Anytime I lose motivation, I look at those numbers as the
potential revenue that I could be making and it instantly puts me back in the
mood to continue my side projects.

I was so serious about my side projects that I registered an LLC in my state,
opened a business bank account in order to collect money via Stripe, and I
talk about and act like I am already a business owner creating products for my
business. I have a few "solid products" out there, but the ones I'm charging
for are still in beta and testing phases. My journey into understanding how to
design products for people began at the end of 2015 and it is now the
beginning of 2017. So I'm about a year in so far. I will eventually get to
where I want to be.

The other thing that keeps me motivated: I'm tired of working for someone.
I've done it for almost 20 years... I have dealt with my fair share of
arrogant asshole bosses, backstabbing co-workers, or just being under-
appreciated or under-paid. It is exhausting to have to show up to a place for
8 to 9 hours a day, only to be treated like you are just a means to an end for
a company. I get it: they need to make their money too, but to treat you as a
human being and show respect and help you to keep your dignity and sanity goes
a long way.

I get to watch other departments who are all eligible for things like "CEO's
Club" or "Honored Vacations" or "Gold Member Status" while my department is
"not eligible" and completely ignored and treated as if we don't matter,
despite the fact that we bring in millions of dollars every year for our
company. We design the products for the entire business and control how things
are distributed and what they look like. We literally influence how web design
looks on the Internet. I'm tired of watching my co-workers make mistakes and
not get in trouble for it, while I make a single mistake, far less worse than
theirs, and I am singled out, and a whole meeting is called to address the
issue. Sure, I'm probably held to a higher stand because I have been there
much longer than my co-workers, but everyone should be held to that high
standard. I've worked on projects that have brought the company in tens of
thousands of dollars in a single shift. I'm also tired of being the developer
who can complete 4 or 5 projects in a single shift, while my co-workers can
hardly complete one or two projects, yet there is no bonus to me for doing
that, yet it is expected that I am the one to be the sort of "sweeper" who
ensures that all projects meet their deadlines, no matter what, while it is
okay for my co-workers to leave me those projects to do because they know I
will do them -- and I have no choice.

I'm certainly not complaining about my job or the money. I love both! I love
web developing. I love web designing. My paycheck isn't the greatest (because
most of us.. could always stand to make a little bit more -- and more never
seems to be enough), but it allows me to pay my mortgage and other bills and
feed myself and my family and enjoy life a bit. I also live about 10 minutes
from my job which is awesome. Imagine all that money saved in gas and car
repairs. On the warmer days, I ride my bike to work. It is such a relief to be
so close to work! But giving 8 or 9 hours of your life every single day, 5
days a week, 52 weeks out of the year... it is very draining. It is like I am
paying for my house to sit there all day and be empty.

So this is why when I go home.. and I am working on my side projects, I feel I
am working for a better life: Designing products for others to use, hopefully
products that don't have too many bugs in them, and my hope is to create that
recurring income, so that I can work 20 hours a week and not 40 or 50 hours a
week.

Sure, this is totally "first world problems" \-- I'm happy that I'm not
working in fast food. I'm happy I'm not in construction or that my job is not
backbreaking work or intensive labor. I'm happy I'm not working for minimum
wage. I probably have a better life than most people do. Again: I am not
complaining about my job or the money. I'm not even really complaining about
my company. The issue lies in not being treated with more dignity and respect
and appreciation, which I think is completely lost in much larger
corporations, where you are just one among thousands of employees.

So to never complete a side project means you are content with your life as it
is. The only way to get ahead in life is to create things that other people
like, want to use, enjoy using, and would actually pay you for it (or win the
lottery or manage to successfully sue some corporation or whatever).

You could try to create something like Facebook, though Google Plus showed us
it is not possible to even contend with that type of influence and stronghold.
To not charge any money at all, you have to basically get to the point where
you are receiving so many visitors that advertisers love you. Therefore, your
only option is to charge a small fee for the usage of your product. You may
not become the next Mark Zuckerberg, and that is okay. But if you can generate
enough income to actually quit your day job, than I'd say that is success
right there.. at least, it is success for me and certainly keeps me motivated
to complete those side projects!

~~~
the_overseer
I am a manager. Wanna know why other departments have advantages and yours
doesn't? Because they are more important. Truth hurts, I know but bear with
me. You've been programming for 20 years and not moved into management. That
is a big huge red flag right there. It means you just like coding and don't
care about the business. Business always comes first. For you it seems it
doesn't. So it's only natural that you don't deserve the same respect as
people who think, correctly, that cutting cost and improving profits is the
only thing that matters. If you care about the business and care about making
a much larger impact, go into management. Don't be a code monkey for life. We
already have enough of those.

~~~
mattbgates
I do get what you are saying, and what you state is all the more reason why I
continue to be motivated to keep working on side projects and getting my
business going.

Unfortunately, they chose a guy who was there for 15 years with no experience
over anyone else. I had to train him. I had no say in that matter. He has been
buddy-buddy with the Vice President of the company for that long as well.
Again: There was nothing I could do about it. Other than his attention to
detail, he has no coding skills. He doesn't have any management or leadership
skills, either.

I have another boss who is above him who has me work on some side projects
too, steals those ideas, presents them to the company as if they came up with
it, and completely takes all the credit. What do I do about that? Say no and
get fired? Suffer losing a job that I do actually enjoy doing that pays me
enough to pay my bills? If you are a manager, you know that corporate world
very well, don't you? Everyone is out for themselves. Everyone is just a
number and is expendable. I know this -- my company has a high turnover rate.

I have bills to pay so I have to put up with this for now. The difference
between me and other people (except for the ones on Hacker News :P): I'm doing
something about it. I could go get hired by another company and make double
what I am making now, but I run into the same situation over and over again: I
am working for someone and putting up with the same exact bullshit. Every job.
Every time.

I am comfortable with my current job so I see no reason to leave. I am working
on improving my situation to get out of it. If I can do both: I would happily
continue working for my company while running my side business and making a
ton of money doing it.

So you are absolutely correct: I'm not trying to be a code monkey. I'm trying
to run a business on my own that will help me escape the corporate slavery
that I find myself stuck in at this time.

~~~
the_overseer
I'd still try to change jobs. I mean you could make double and there is also a
chance you don't run into the same types of assholes. I am not saying you
won't, I am saying there is a chance. Also, high turnover rate is a big big
red flag. Be a part of that turnover rate :). Of course, keep on trucking on
your own personal projects and good luck starting your business!

------
twfarland
Write meta blog posts

------
scandox
Offtopic: I got quite a NSFW Ad when I clicked through to this. Well depending
on the workplace. But yeah not something I'd love a colleague to see over my
shoulder.

~~~
Arnt
Here are links to some images:
[http://i.imgur.com/yz6eVNk.jpg](http://i.imgur.com/yz6eVNk.jpg)
[http://i.imgur.com/KqaFVFc.gif](http://i.imgur.com/KqaFVFc.gif)
[http://i.imgur.com/WczRkHy.mp4](http://i.imgur.com/WczRkHy.mp4)
[http://i.imgur.com/EyEJStB.jpg](http://i.imgur.com/EyEJStB.jpg)
[http://i.imgur.com/RnvkYXJ.png](http://i.imgur.com/RnvkYXJ.png)
[http://i.imgur.com/6IqwNtn.jpg](http://i.imgur.com/6IqwNtn.jpg)

Zero or more feature nudity, ditto sports, one's a flowchart, but they have
one thing in common: Nude or not, none of them have anything to do with your
work. So what makes _any_ of them NSFW? (The subject of this discussion is
"getting things done".)

------
quirkot
YOU NEVER ACTUALLY TOLD HOW

~~~
GoToRO
"No more big re-writes because there's some hot new JS library. No more
microservices for the sakes of it, no more overly ambitious build pipe-lines.
NO MORE TRYING TO REWRITE THINGS IN HASKELL. JUST. GET. SHIT. DONE."

