Ask HN: How do you motivate yourself to keep working on a project?
What do you do to keep yourself motivated? Especially when you hit something you hate to work on but is necessary.
What do you do to keep yourself motivated? Especially when you hit something you hate to work on but is necessary.
The best way to get experience is to do things, so given that no one is going to remember, might as well try to do it. Your successes won't be remembered along with your failures.
Motivation/willpower is a very weak way to get things done, approach it instead with "I'll just write one line of code today/work on it for 15 minutes straight/document one thing/design one function". You'll likely find that once you start, you'll do more than you planned, the crux is almost always the start. You look at the entire body of work and think "its too much to do in one sitting", but ultimately thats your reptile brain talking you out of expending energy needlessly. So just use that little mind hack to get you out of your cognitive dissonance and started.
And if the prior posters statement gets you into an existential crisis, I'd start reading up on the stoics, buddhists, etc... Yes even if you're an atheist/whatever, accepting ones fate in the universe has no meaning is ultimately relieving. Or as a Shinto priest once told me: Life is a dance, dance to the music while it plays, you may not get another chance to dance!
Not that it's not a good advice (I'm quite enjoying Meditations by Marcus Aurelius), but I'm fairly certain the above-poster said so in jest.
It's also quite a freeing way of approaching a project - as long as I don't go to the extreme of not caring at all!
Reminds me of the "pale blue dot" perspective - when stressed visualise planet earth from further and further away.....
What makes you say that?
Is what you’re doing now worth doing only if people remember it after you die?
A couple of months back, I went through an existential crisis. I couldn't find a universal, cosmological reason for being, and, therefore, for doing anything productive. I asked myself: to what end is ouputting effort, if none of it will ultimately matter?
It took me some time – and a Viktor Frankl quote – to get out of the rut. Yes, my life doesn't matter as far as the Sun is concerned, or the black holes that make up the center of our galaxy, or the dark matter, or the next grain of sand I'll encounter... So what?
I enjoy making things. I get a kick out of it. Whenever I'm not facing the dread of failing (an excessively-frightening event that's seriously up to no good), I'm giggly about making effort towards creating something I value. Could be a short story. Could be another element of web design. Could be a philosophical paragraph or two. I enjoy it.
At some point during the bleak week, I thought of killing myself. Why bother if none of it matters the least, right? Might as well not experience any of it.
And then it clicked: it's the same fear you experience when you face the prospect of asking for something and may be rejected as a result, amplified to encompass my whole existence. It's like asking the boy/girl out, but if I'm rejected, by whole being is at stake. Like I'm going to lose myself if I make the wrong move here.
"What the fuck? I'm gonna cancel my being subscription just 'cause I'm afraid to ask the life out? Fuck no!"
What I was left with is my passion, and the fear I'm facing. I didn't just not want to die: I wanted to live. I wanted to explore, to create, to love and be loved – all a consequence of the inner passion I was afraid to realize. Why would there be need for a higher reason when, down here, I'm all good for doing something good?
Most things you face are deeply circumstantial. Life as we know it is absurd. If you want to live, you might as well live without resorting to fear as your safety net.
I think it's safe to say that most people act as if those presumptions are solid borders that one can't – "not allowed to" – cross. Behaving in a way that others see as silly, or out-of-place, or not based in reality challenges others' presumptions, and we're terrible in handling views that contradict ours, even if said behavior does no damage to the fabric of the society the "silly sod" is in. (Your comment's upset tone suggests as much.)
Imagine seeing a man dancing down the street. He doesn't disturb anyone, takes precautions to avoid colliding with people and things. He has no headphones on. What would you think of him? That he's crazy? mentally-ill, perhaps? unstable? Maybe he's drunk? high? under a different kind of influence?
He's just dancing down the street 'cause he feels like it. No one is hurt, yet so many are upset. Why? He's challenging the presumption that it's not okay to dance – or express joy so openly – in front of those uninvolved, in front of strangers.
Why do we presume so? I haven't the slightest clue. (I have an idea or two about why it could be beneficial – social coherence being one of them – but I don't see any ultimate cause for such a barrier.) Just because I might relate to how the majority would feel does not automatically confirm that my feelings are meaningful, in an existential way.
No, just 'cause someone told you something is something, doesn't mean it is. If so many people arrive to the same conclusion independently, however, it should say something about the validity of the state of things. I don't need people to tell me how to feel – but I feel similar to how they feel, maybe we're onto something.
A more productive venting for your frustration may be asking more insightful questions. Asking what the idea of "absurd" in "absurd life" derives from is a good start, but only as long as you seek to hear the answer, rather than have it disproven.
For what it's worth, I find that the reasons you state in the parethesis are of little relation to the reality of such views. They seemed, intuitively, to have paved the way for people's disillusionment, which probably sparked a whole lot of introspection and consideration. I don't think, however, that people never wondered the same questions before. (Might be wrong, but hasn't Marcus Aurelius famously expressed similar views in Meditations, at the time of Ancient Rome? I need to finish that book.)
As a matter of fact, I haven't seen a single philosopher denouncing existentialism in favor of the more "real" reality, for things matterring exactly as much as we value them. (I'd love to be proven wrong: that would be a marvellous read.)
Have you never felt like an unwritten rule in the society around you made no sense, regardless of how much pressure you received towards following it? George Carlin said, early in his career (paraphrased):
> Not running with scissors – that's a good rule! That's a rule I'd like to follow! These motherfuckers are sharp! Not singing at the table, on the other hand... What happened there? Some poor bastard sang badly at the table, and the rest of us have to suffer for it? What about singing while standing next to the table?¹
¹ https://www.youtube.com/watch?v=2pgzWRVEqHY
The definition of "absurd", roughly, is "not following what is evidently true". You asking me what time it is and me replying "Chicken!" is absurd. So are so many of those presumptions we're born into, live through, and die with. I don't think it's because we die: I think it's because most of those presumptions make not a lick of sense, when you think about them.
I didn't feel upset or frustrated, I regret giving that impression. Your 'tone' seems to me extremely arrogant, and it makes me want to not engage a moment longer with you. It sounds like you think already have all the answers. I'll let you talk with more 'insightful' people.
Not all, but the ones I have, I'm fairly confident in.
> I didn't feel upset or frustrated
> it makes me want to not engage a moment longer with you
I guess it's pointless to ask about the "?!?", then.
Maybe people frown on that or treat the man awkwardly, because they see it as "weird", which subconsciously really means "unfamiliar/uncommon and unexplained, therefore the odds are increased of it being a threat to me or interfering with something that is familiar or desired to me." I think that happens a lot.
There is a story I read (which might have been in Covey's "7 Habits..." book), about a man with his very noisy, disruptive children on a subway train: the passengers seemed irritated, but when he explained to one passenger, that his wife and the children's mother had just died at the hospital, from which they were now returning home, and maybe they were all a little confused and out of their normal behavior. Then the perception of others suddenly changed from "control your kids" to "oh, how might I help?"
Which connects to the whole set of ideas about how we judge each other superficially, but sometimes there could be some reason for our doing so (our safety, or comfort levels with surprising behavior where we have no choice whether to be around it). I expect that is the source of many social norms. Another way to look at it is to consider that we might best not judge others too harshly, and we might be understanding, including to those who themselves judge others harshly, since in all those cases we don't know why they do it. (None of which is to say we should not have any boundaries while thinking about it.)
Various comments in this discussion are interesting. My belief in God and my choices and the specific, long-considered reasons around that are directly connected to why I feel peace and motivation even when things are very hard.
The perhaps overly short version is: I have read and tested the Book of Mormon (a companion to the Bible) in the way it says to test it (http://www.mormon.org), and a lifetime of experiences when I followed what I felt inside that I knew was right ("knew" as in, I know I love my wife, or what salt tastes like, but can't necessarily prove or explain it to someone who doesn't want anything to do with it), vs. when I did not do what I knew I should, and the results I found from those choices. Those things together have solidly convinced me by now (with some time lost & hard consequences from learning the hard way at times, and real benefits when I learned the easy way). Life is still challenging, but that is part of the educational program I believe we signed up for, which is worthwhile, and the tools are there for dealing with the hard things.
About the Book of Mormon (and Bible): I have given them a lifetime of almost daily reading and contemplation (sometimes intelligently for me, sometimes not), plus have read some books and articles where people have commented in really fascinating ways about it (Daniel Peterson, Hugh Nibley, fairmormon.org which tries to answer critics, & others), as well as some anti-... material, and have thought about things from various angles ("what if it really...?"), and am satisfied that the debate is more for those who really like debate, while asking hard honest questions is a good thing because that is how we learn, and good things are there for those who seek, and I truly wish the best to all concerned, but ultimately, "proof" to satify everyone is always not going to happen in the way that they want it, and we have to seek according to our personal desires. The invitation from God to know for oneself, is there (as demonstrated by the Book of Mormon, its test, and many associated things).
There is much more detail; I'm happy to share more or try to answer specific questions, whether here, or by posting online some notes I already made but should probably reformat & clean up somewhat. One may also email me if desired (EDIT: at luke425 <symbol> lukecall.net). (From a practical standpoint, I might check this thread or my email somewhere between every few hours and every few days, but am happy to continue the conversation in that way, and after several blank days would assume this thread is complete. Suggestions always welcome. :)
Your conviction comes from the fact that you've read, almost daily, and contemplated over the Bible and the Book of Mormons, as well as read a good number of comments for and arguments against your position.
You also derive it from your life experiences, particularly those where you have either done or not done what you thought you were supposed to/felt good about doing.
Am I getting this right?
Were there any particular experiences or turning points when you may thought "Hm. Is that what my life is about?" or "Ah-ha! That is what I'm supposed to do!"?
I posted material at http://lukecall.net (under "why I believe"), but the most direct answer to your questions might be at http://lukecall.net/e-9223372036854605861.html and pages to which it links. Honest questions & feedback are always welcome.
(The web site is generated from my note-taking program. It is intended to be very skimmable, where one can click on links if they are interesting, otherwise one doesn't see the details. There can always be more editing, but hopefully it is useful. Maybe in the future some levels should have a summary document of the contents, so you don't have to click around as much to read it in big chunks. Only part of the code to do that is written--to generate single-document outlines from my note-taking program, but not yet to include them in the web site.)
"you live only as long as the last person who remembers you"
It's worth noting that a "YOLO" attitude can be used as a double-edged sword for motivation (e.g, "One day I will be dead, so there's no point in vying for success")
"One day even Socrates will be forgotten."
Understand sometimes motivation is lost due to low level of dopamine feedback loop.
I tried to motivate myself by thinking about negative scenarios like loss of job due to low performance etc...but it made motivation worse.
You can take DRIs like Modanifil or Armodanifil to setup a stronger Dopamine feedback loop.
Some people have this naturally so they are lot more driven, focused and motivation..
Some people suffer from low level of these due to lifestyle, diet or genetic reasons.
So far it has helped me, some day I work 20hours+ and don't feel drag.
Make sure you are breaking up work into small releasable steps. You should get the "oooh ahh" feeling of tangible accomplishment at least a couple times a week.
Get users as quickly as possible. As soon as you have one real user, it suddenly feels like you're participating in the real world instead of working in a hole. Announce changes to your users; positive feedback from them is emotionally buoying, negative feedback is an opportunity to fix what you just broke.
Create a facebook group/mailing list/forum/whatever for your early adopters. The community will help motivate you.
Spend time refactoring. Whether or not the investment will pay back with more productivity is irrelevant; clean code improves your quality of life and makes you look forward to work and that alone makes it worthwhile.
Shipped code is better than perfect code.
Wait until people complain about something before fixing it. This is how you prioritize.
The worst thing is not that it breaks but that people NEVER use it. If people use it and don't complain that means they don't care.
Force yourself to ship every 1-2 weeks.. no arguments. Ship continually.
Use feature toggles. This way if something breaks you can turn it off.
Another trick is to break down the task into as many subtasks as you can, and when you’re feeling obstinate about working, just get one small subtask done. It also helps you visualize the finiteness of the total pain you have to endure.
There’s basically no way to be intrinsically motivated about tedious, pointless-feeling work, but you can connect it causally to the overall success of your project, which presumably you do care about.
If it's very cold outside, you tell yourself 'if it's too cold after 10 minutes I'll come back in'. But you never come back in. It's a matter of getting started, nothing else.
We are funny creatures.
I used to always want to quit running ASAP, and the feeling just didn't go away whether I ran for five minutes or an hour. Fast forward some years, I'd gotten into cycling, enjoyed my rides and was in a much better physical condition. I also had a heart rate tracker and was used to training with heart rate zones. So one time I went for a run, first time in years, and tried to stay in the <60% HR zone. I started at my normal speed, realized my heart is racing, slowed down and eventually realized that even at my slowest possible running speed I'm going over my heart rate target. I had to settle for alternating between very slow running and walking to keep the exercise level light. Of course, after a couple of "runs" i could keep up better, but still running at any kind of speed is hard exercise for me.
I gather this is a common phenomenon, and most beginners run way too fast.
I keep a separate list of "dumb little things" to fix that don't require much thought or effort. I'll grab something from that list, which makes it easy to start; then once the editor is open I start getting into the zone.
I have several techniques:
- Be kind to yourself
- Be comfortable with not finishing everything you need to do today
- Break down large tasks into smaller tasks
- I break down the small tasks using https://asana.com/
- Complete smaller tasks to gain motivation/momentum
- I try to use other smaller tasks (not related to the project) to build momentum
- Break up my day into time slices
- Gym for 1 hour
- Work for 1-2 hours
- Lunch for 1 hour
- Work for 1-2 hours
- Some other activity for 1 hour
- I use my Apple Watch timer to trigger me to move along- You can use a time tracking of sorts. I've been trying https://clockify.me/
- I use tags to indicate what I'm doing:
- Relax
- Play
- Planning
- Research
- Programming
- I set in my calendar times for - Breakfast
- Reflection
- Work
- Gym
- SocialThe only thing I've found that comes anywhere close to this is Adderall, and that has awful side effects.
I've been in several of these type of groups over the years, and they usually fail because people flake and no one calls them on it. I think we've finally gotten the formula right though. The main thing is that people who aren't doing their part will get a warning and get removed from the group if they don't take it to heart. We make it indirect....instead of calling someone on it directly, you tell someone else, and they address it with the person.
I could describe our whole system in more detail (there are a lot of little tweaks we've made), but the main thing that is important is that you have to think of it as a complex engine that needs fine tuning to keep "firing on all cylinders". Don't be shy about telling others what you need. But mostly, make sure that everyone is vigilant. If you flake on the tasks you are committing to, we can work with that. If you flake on monitoring others, you get a warning and if you keep doing it you are out.
One of the things we've found works well is to structure tasks so that getting started in the morning (or after a long break) is easy and -- if possible -- fun. That is, you never leave a task in a state where you have a long "warm up" period. Get it to a place where it is satisfying to work with before you put it down. This often means finishing up a major task, then starting a new one and just getting it going before you call it a day. And of course write some documentation (which could just be a todo list) before you stop work.
We're eventually planning on doing this in a bigger way (with a web app, etc), but for now we're open to bringing new people in if they are very VERY committed. Get in touch if you are interested (rjbrown at gmail). You need to be willing to use Skype video chat several times a day.
However, I'll add a few things.
Optimum group size is about 7-10.
Everyone has a monitor, that is, a person who is holding them accountable. These get randomly switched out every two weeks. You never are monitoring your own monitor.
Every monitor has a manager. Again, switched out randomly every two weeks. Everyone will tend to be a monitor of one other person else, and a manager of another, at any given time.
There is one person who is overall manager, and that person keeps private tabs on everyone, including how people rate one another in terms of committing to their tasks and following through, monitoring others, and managing.
If a person feels that their monitor is not doing their job, they communicate privately to the manager. That person will step in and try to address it. Diplomacy is important. Don't be mean or insulting, but also don't tolerate flaking. Fix problems immediately.
Everyone checks in several times a day with their monitor, via one on one video chat. It is important to have a direct discussion. Monitors always need to be vigilant for "avoiders."
Monitors should attempt to understand the project the person is working on, and everyone should attempt to make their project presentable to their monitor.
If you say "this is too much effort and is taking time away from my actual tasks," you are probably not ready for a system like this. Those who need it will recognize the importance of spending the time. Always keep in mind, there is an alternative, a life of "working for The Man." This is better.
I might wanna join
It sounds complicated, but it sort of takes the approach of "everything should be a simple as possible, but no simpler." It just has enough indirectness to make it much less susceptible to "death spirals."
It differs from working for "the man" because you still decide what projects you want to work on and so forth. You are working for yourself, but the system (manager/monitors) is helping you keep on task in ways you have already decided you want to do.
Really, the manager can be considered an agent of your long term interests (i.e. your desire to finish your projects and otherwise get things done), helping you defeat your short term interests (which might be your love of sleeping in, watching TV or playing video games, or whatever it is you do when you procrastinate).
Get in touch if you want to join. I've got a few people but we could use a few more. We are starting a new group since I've sort of spun off the old one
You can do a half and half approach. Let the user know that they will be invoiced, and a representative will reach out to take their payment information. For example, if I was using Stripe (the payment processor I'm familiar with), I would setup my register button to just send me an email with data that I could then enter into Stripe manually, ie. name, email address, etc. I wouldn't include CC info in this because I wouldn't want to deal with compliance. Since you told them to expect a call and you're invoicing them you've got a good reason to call. If you go this route let the user use your product right away. The other cool thing about this approach is that you can also start to build a rapport with your clients, which pays dividends when you want to solicit feedback.
I find that motivation really spikes when you start seeing sales and money rolling in.
The biggest mistake I did when I was working on a reasonably bigger project is that I wanted all modules to be in there to Go Live, to the point I ended up fixing browser related bugs before I ship assuming users will hate the product if I don't.
I never ended up launching it and since then, I stuck to the real MVP, as in the smallest thing I could ship. This helped me launch 2 side projects and got insane confidence boost.
More in general, when you have a mountain that looks too high to conquer, set a partial goal that looks achievable and only focus on that one, without thinking about the end goal until you reach the partial one. This helps a lot in my experience.
Bill manually for the first few customers.
But it doesn't matter to anyone using it. They are just glad to be rid of Google maps, right now. If there's another small hurdle, they don't mind. And if I make improvements down the road, all the better.
You can always add the "convenience" of in-app billing later. A nice upgrade that will make your users happier. :)
Or, as I have often found, you may decide to _never_ put billing into your app. Why? Because you may learn that your users' are just fine with paying via your website instead. But you would only find this out by launching now, and talking with your clients.
Knowing my son will indirectly inherit my own habits has me focusing a lot on my productivity and accountability.
The most valuable thing I can give him is passion. It's not my responsibility to direct it towards a preferred venue, rather to expose him to the world in a safe way that allows him to explore what makes him happy.
Accountability and candidness allows people to trust in you and forms the foundation of good leadership. Productivity allows one to drive their efforts towards their passion into tangible product or work produced.
If he can create value and convince others that he is consistent in his beliefs, then it is my hope that the world will allow him to grow to his fullest potential.
It's my hope that by observation of some of these core values being actively expressed by my own actions, it will make it easier for him to adopt them as he matures.
That’s like shooting yourself in the leg because you want stronger arms, and putting yourself in a wheelchair will help with that.
My boss knew me for years before the birth of my children and has a few more years after to compare. He tells me he witnessed no less than a transformation.
I feel like I could have 'timed' it better. I feel I could have saved more and all of that. But then I wouldn't be the type of person who cared about those things until I became a father.
Hopefully you're using Stripe (if you can) check it out if you haven't.
Also keep it simple in the beginning just handle the recurring payments, you can do cancellations, refunds manually in the beginning.
- Have something to be excited about. There is the rational reason to do something, but there is also something that is emotional and exciting about it. It could be about seeing your idea used by many people, or just the vision of building something real out there (which is mighty hard by itself). It could be even things that will happen later as a result of this project - may be it will open up new avenues for you to do other exciting things, live a different lifestyle, boost your confidence and so on. I call it the "emotional fingerprint" that we tend to get excited about. Identify the biggest 1-3 things that excite you greatly, even if they are really "embarrassing" to share with others. Keep them on the fore-front of your mind every day.
- Have a few people in your network or outside it who can care about either you or the project, and make sure you talk to them regularly. Your cheerleaders. Show them what you are doing, get their feedback, look for signals. It can feel like a waste of time as an engineer, but in my experience really helps me get outside my own head.
- See frustrations as learning. Think about the long haul. Is this just a one time project you're doing or do you want to be in it for the longer term, perhaps for multiple projects down the road? anything worthwhile you'll do will have frustrating or unexpected elements built in. How you deal with them also strengthens you for the long run.
One mental approach I apply is to treat each difficulty as a puzzle to be solved. Every time you solve one, you become better at solving similar puzzles in the future. It is tempting to want to know the answers in advance to everything. Forego that temptation and embrace "puzzle-solving" everyday to issues you have never encountered before. What I am implying is "gamifying" this whole process a little bit. If you have played frustrating puzzle games before, you can perhaps relate.
Just my 2 cents on this topic :)
Every day we should hear at least one little song, read one good poem, see one exquisite picture, and, if possible, speak a few sensible words.
Get people using it. Get people to give you feedback to drive the features, Engineers typically suck at sales and get caught up in building. Release it.
Your customers don't give a shit about the code. I know you do and I respect that, but release it. Make a few extra dollars and see how it goes.
What's the worse that can happen? People don't want to pay for it and you terminate the project? Or even worse, enough people want to pay for it and you invest more time into it :)
I’d like to echo the comment from above: release now, and do billing manually. Once you start getting customers, you’ll be motivated to write a proper billing module.
Your problem isn't motivation, it's not understanding that not all work is, or needs to be, pleasant, or intrinsically enjoyable.
Look at what your goal is: if the result isn't motivating, then the unpleasant work isn't the issue, rather your goal.
Not everyone's built with the kind of internal drive that makes you go for it without much hesitation. Some of us need a certain guidance, an understanding of the process.
In an ideal world, your message wouldn't even be mentioned. The one we're living in is far from ideal. We live in a complicated world, filled with norms, expectations, fears, desires, anxieties, and passions. Making sense of all that takes beyond picking the right goal.
So I agree. However, I also think if you have the opportunity to move to a career you love you should do it. Not everyone has that opportunity, sounds like this guy might.
The longer you wait to do something you should but don't want to, the more difficult it will be to do. On top of that, you'll have the mental "weight" of knowing in the back of your mind it's sitting there, waiting for you. Best to just do it and get it out of the way.
From my experience, getting to release, it’s like I feel like I’m going to fail. The product isn’t attractive. The buckets of money won’t fall from the sky.
And you know what, that’s 100% true.
Engineering is but a small piece of making a business. “Build it and they won’t come” is what a bad ass marketing guy I know would say. So the thing is, you will NEVER figure out how to shake money loose from other people until you put it out there. So you have some choices, accept that the next phase is not going to be easy, and push through to learn and become the same bad ass at company as you are at coding. Or rm -rf your codebase and go back to your job. Or waste even more time before making one choice or the other. Procrastination does not change the reality of having to make tough choices; it merely makes getting to the results on the other side come much later.
In my case, the worst parts are a) payment provider, b) invoicing. I think it's because I keep thinking of this work as time wasted with zero added value: I am not making my product better for my customers in any way.
The way I find motivation: I look at my MRR graph (think of an imaginary one if you don't have revenue yet) and consider my life goals: why am I doing this project? How will the success impact my life and that of my family? Will this work move me towards my goals?
Also, if your provider is Braintree, I have some bad news for you: there will be worse times in your future.
I don't really know how to tell you anything useful on this. A lot of my motivation seems to just be an intrinsic part of my personality. I don't generally have a hard time being motivated. I just love the process and act of building things.
Of course there are times when I hit the "schlep"[1] stuff, which is not as enjoyable. How I grind through that is just by reminding myself that it's inevitable and necessary, and that all the other hard work I put in will be worthless if I don't get this unpleasant stuff done and complete the project.
Lastly, and to be completely honest... as much as I enjoy building for the sake of building, I do also have financial goals. There are things I want to do, see, experience, etc., that require more money. And I see the projects I work on as a path to potentially being more wealthy than I am today. So while you may accuse me of being shallow, I do occasionally pick up an issue of Top Gear magazine, or Motor Trend, or whatever, and look at the cars I'd love to own one day, and remind myself "this is one of the reasons I work hard, and grind through the schleps". Or maybe it's a travel guide to some exotic locale I'd like to visit, or whatever.
And while it's (apparently) "politically incorrect" in this day and age to have, and openly acknowledge, a desire to attain significant wealth, I posit that there's nothing wrong with a drive to gain wealth, and to use that as a form of motivation.
So yeah, my motivation is a mixture of both intrinsic and extrinsic, but it's really more the former. I'd love building software even if I didn't get paid for it at all, and even if I weren't trying to build something to sell.
If you want it badly enough then just force it. The rewrite should only happen once.
I've been in the same position. For me, if I'm working on a substantial project solo, one great source of motivation is when people are using it, giving me feedback, etc. So when you have actual usage, some momentum, it's (generally) easier to keep going. The more time goes by without actually releasing something, the easier it is to lose momentum.
Also, if you really don't like a provider, it's generally not worth your time to use them. You will end up spending some time maintaining in the future too and you will resent it, so probably better to find something that's good to work with.
Just throw it out there and see what happens - you don't even need the billing. Just give us all a guest pass for a month - you might be pleasantly surprised.
I set daily goals at the start of the day, really small ones and then by the end of the day, I complete at least one of those goals and then that's it. It might take 20 minutes to an hour to add a bit of code that will go into the final feature.
Then I mark that I did that task and keep track of my "streak".
That's the thing that keeps me going. My streak is 13 days now, since the beginning of the year on my current project. I'm not going to break it now. It's less about the project and more about the streak.
When it comes to motivation, I usually pick my tasks in such a way that I don't exhaust myself. Typically, I would push a daunting task until I have a really good day and feel ready for a new challenge.
Family, friend, partner, coworker, even random stranger at the bar or a meetup.
Showing what you've made to someone is so much different than trying it yourself.
* The strange UI choices you made will be pointed out
* You will feel embarrassed about the slow loading of something
* You will get questions that you never thought about, and questions you thought about but perhaps thought nobody else would care about.
In my case, I'll always get motivated to do something with a project after I show someone else.
We dont per-say have projects, we have jobs (but theyre similar!) we took on overhauling every school bus for the largest city in the state. Its a tip to tail job that takes about 1500 hours per vehicle.
Our upholstery subcontractor sucks. They work largely for RV companies and either have a hard time procuring seat fabric, or a hard time hiring anyone who can reasonably upholster seats 8 hours a day. Theyre based out of florida and so arent used to working in cold midwest weather.
brake upgrades take ages because these are midsize trucks and we're going through tooling fast on turning rotors. management doesnt understand this at all, and so constantly drags their feet having to order new carbide inserts.
my motivation is for what comes after we're done. its the need at the end of the job that keeps me going. new steering, heaters, and seats all make for safer buses for kids and professional drivers. I guess find out what youre doing and why youre really doing it. put yourself in touch with the people who use this software and spend a day in their shoes.
Me: "I can do this anymore, I'm sick of it."
Him: "Really?".
Me: "Yeah, its mind numbing. I'm turning to jelly."
Him: (cold stare like he was about to murder me. 60 years of rage, booze, cigarettes, diabetes and disappointment bearing down on my through eyes that became dead in a flash).
Him: "If I put a fucking gun to your head and told you I'm gonna blow your brains all over this office could you keep going?
Me: (nervous laugh).
Him: (louder and angrier). "You think this is joke? You think I'm fucking kidding?"
Me: No. You're serious.
Him: That's right. Now shut the fuck up and keep working.
No, this wasn't abuse. It wasn't bullying. There was no insensitivity. I wasn't sure he wouldn't get violent in some way if I back talked. He was teaching me a lesson about strength and humility as I wrestled with my frustration and self-importance. There are a dozen stories like this from working with him, not one the same. I miss him. I loved the guy.
As far as personal experience - took me 6 years to launch with the bulk happening in 6 months where I've decided I WILL LAUNCH FFS. Billing is a PITA and am actually dealing with it at this exact moment. It's crap, always will be, but my motivation is that this is what will aid making money which will keep the project alive, so yeah, means to an end. Lastly, I will launch if it kills me - I'm still kicking but have probably spent way to much time and nerves on some stuff.
I guess take it as a challenge and look at it like this: Only the ones that go through it all get to the end, all others just abandon it and fail. Be the one that sees it through.
A while back I read "Getting Things Done: The Art of Stress Free Productivity" [1], and though I'm not completely sold on his methodology, the author has a few ideas and techniques I really liked, that have helped me get motivated.
One of them is to figure out the next concrete, actionable task that needs to be done to make progress, and do that. Don't think about a million edge cases, or a big rewrite, but instead focus on the single edge case that's blocking you right now, or the first thing you need to do to start a rewrite, and then go do that smaller, specific thing.
It will feel good to have it done, and it'll motivate you to get to work on the next small step.
https://www.amazon.com/Getting-Things-Done-Stress-Free-Produ...
What I learned is that focusing on short term goals, is better than thinking or designing for the far future. I use gitlab, and its issue board helps me organize the tasks. When I don't feel like working, like when I'm tired from work, I still spend time looking at the task board. I reorder the tasks based on their impacts and based on their difficulty. So that I can interleave the hard and the easy ones, and make sure I can always finish some tasks within 2 hours each day.
Refresh the end goal you're working towards in your mind. Re-establish your connection to it.
It's the end goal that you're working towards, and this (crap) next step is just a small part in the way of you getting there. :)
Saying this from the perspective of "Loss of motivation generally means you've forgotten or lost the emotional connection to your end goal".
Much of the time, if the end goal is really something you personally value, it shouldn't be too hard to re-establish the connection to it.
For me, it's mostly a case of needing to find a quiet place, then think of the goal, what it means to me, etc. Motivation seems to then spring forth fairly readily.
Only works (longer term) for goals I feel are really important (to me). For trivial stuff, trying to regain motivation like this just doesn't work. :)
It's hard to show up every day, by yourself. When there's no one to cheer you on and no one to be accountable to, it's easier to give up.
For years, I tried building projects on my own. But I had to limit myself because I didn't have the technical expertise to bring all my ideas to life.
Then I met Jon at XOXO festival.
Over the years, we became friends. We collaborated on a few projects. And then, we decided to work together on https://transistor.fm (a podcast hosting and analytics platform).
Jon is a gifted software developer. He has a good eye for design.
My expertise is in customer research, marketing, and product development.
Combined, we've been able to build Transistor into something much greater than we could have achieved on our own.
Not just dev projects, everything in life that I decide to do but in the thick of it start hating myself, I repeat those four words. It's usually when running or digging, physical stuff that starts to really suck halfway through.
I also think subjecting oneself to activities which really suck, physically difficult and painful things, and persevering through them, is generally helpful. It tempers oneself by conquering higher forms of suffering, no amount of poorly documented APIs can shine a light to a week of digging with a pickaxe and shovel.
Just getting to being able to run 4+ miles teaches some useful lessons IMO. There's an entire headspace to be explored in doing endurance activities that probably confers benefits everywhere in life, not even considering the exercise aspect.
But always keep to the schedule. Although a hint : if you need to work overtime to fit the plan, the plan is bad and needs to be fixed. (although "need more people" is an acceptable excuse, and can be very enjoyable if you CAN get more people and if it works, it's an acceptable answer to fixing plan too)
I've worked several jobs through like this (all successful - moving on is good though too if you're doing the same frustrating thing too long). And I don't regret the work I did because in the long run the annoying parts were resolved.
Second, design a schedule for yourself that both lets you take out and put away the project. If you aren't hugely inclined to solve programming puzzles that are created by other people's code, it's understandable; the trick is in making it not be the number one priority(because a boring task like this is no longer the fun learning stage of coding), but rather to make it one of many chores on your list. You have a household; there is always something to maintain in it, whether it's dry shoe leather, mildew on the walls, a load of laundry. Allocate 10 minutes each hour to that stuff, then return to the coding with the momentum from that. Huge blocks of screen time never helped anyone. (And yes, overall health matters. Getting more sleep, exercise, correcting a nutritional deficiency, can all be huge for motivation.)
During the coding, aim to finish it badly(placeholder level) and then go back and fix it in steps. These tasks get worse when you have to juggle a whole pile of new abstractions all at once: skip to a preset result and then work backwards from that into something that is configurable. Good code doesn't come out of your forehead fully formed, it takes some iteration.
If you don't have an estimate for how long anything takes, that's also a demotivator. You can calibrate one by finding a similar project, getting its start-to-release dates, and working backwards to get milestone dates. Don't worry about time per task, worry about the overall product coming into shape. Placeholders as milestone goals can help hugely in getting you to dig into the design and make it its best.
If we absolutely have to do that billing module, it's very demotivating. But if we, by choice, choose to do the billing module, it's much more motivating.
This is where Scrum either succeeds or fails. If a scrum master just decides to assign tasks for the week, the people doing them will be much less motivated. But scrum tricks the people doing the work into pulling it from the backlog, and choosing to work on it.
So somehow, you have to give yourself control over the project. Don't tell yourself you have to get it done. Look at it as a puzzle you want to solve, one where the documentation gives you hints, but not the solution. Be a hacker.
I sympathize with you greatly actually. I used to seriously hate work. Then one day I was fired (or more precisely I didn't get past the trial period) and unemployed. After that point I realized as much as I might dislike my job, I dislike it a lot less than the stress of being unemployed, going further and further into debt, and wondering how I can get a job.
I went the hard route and integrated Stripe from the get go, but am now planning to move to Paddle as the amount of work I have to do to enter invoices into my accountants system each month isn't worth it for what I'm making right now.
In addition to other recommendations,
Learn the basics of Product Design and UX Design. It is a useful skill and a nice addition for you if you are building something. It helps you in prioritization, problem mapping, writing proper user stories, and teaches you to think about user journey and define project goals.
And by having those, you will feel closer to the end user which gives you the motivation to work on the project.
Payment processors are awful to work with... and it's sometimes tricky to test with.
They really do make you question your desire to remain on this planet, let alone continue to work on it!
I've found that more documentation they provide just adds to the confusion and contradictions. Sometimes contacting support helps... more often than not, they'll provide you with a key ingredient that isn't even in the documentation!
(failing that, for 1.0 just go for a Paypal button)
Example: I was dumbfounded that Stripe lets you update a balance, but offers no way to do it atomically. Support was clueless. However, on the IRC channel someone suggested creating invoices instead of bumping the balance, which in retrospect is a much better idea than maintaining the history in my database (although it ties me deeper to their system).
You really have to "bend like a reed" and conform to their patterns. And whatever you do, don't try to create an abstraction across multiple billing systems until after you've built up some expertise.
Just work on a something every day. It can be small or big it doesn't matter just make progress. Over time you will see how much you have accomplished.
Instead of thinking that you have to write the entire billing functionality, think I just need to get an API token from the server today, fix a typo or whatever... and if you aren't feeling motivated to continue after after the small task be done for the day.
Personally, I like micro-rewards for getting little tasks done. Things like, spending some time on a side project after doing some house chores, or grabbing a brewski after doing taxes. Little things. It could help if it is compatible with your voice-in-head firmware.
Have you explored https://www.pubilling.io/ or the open-source http://killbill.io/?
IMHO a side project should make you happy.
This blog-driven development works pretty well :)
If there's something out there that's simpler and has documentation that isn't constantly just wrong, I'd love to hear about it.
Self published my first book: https://www.theangulartutorial.org/
It works wonders when you have frequent drudgery and clueless requests as part of your job description.
Sometimes I'll re-read a book. Masters of Doom is motivational for me as one example.
Sometimes I'll take a long'ish break (weeks) and teach myself something new just purely for fun. Experiment with something, that may or may not relate to the project. I divert my brain to an enjoyable stretch of time, a vacation, to prepare it for the final forced crunch of work.
I recently blew off a month and did almost nothing, when I could have completed what I'm working on. I got to the 85% finished line and hit hard resistance mentally. Some of that is feeling exhausted (it can feel like it sneaks up on you all at once), a lot of it is arriving at a large batch of work that I really don't enjoy doing. Combine those two and your brain puts on a yellow vest and begins protesting the longer you persist.
I've found that after taking a break, controlled anger is extremely effective as a helper for a final push over the line. That is, getting pissed off about the situation of having allowed myself to lose momentum and burn time rather than finishing something that is ~85-90% done and could have already been completed if I had simply maintained a steady momentum. I direct that anger in a focused manner as a big punch at the project that puts me over the remaining hurdle/s. It gets me into a mindset where I can just grit my teeth and dig through whatever shit I have to get done. Then the final 2-3% is usually just basic clean-up on loose ends or polish, truly trivial work.
Some might suggest that anger is always a negative. I strongly disagree with that. I think it's highly useful when channeled properly (never at others, and never in a serious self-harm form) and so long as it's not a common occurance during a project. It's critical to differentiate between using anger to overcome a self-challenge you're certain that you want to overcome, versus working on something you don't actually want to do. And to be clear, I'm not talking about rage or anything so dramatic. Rather, an internal expression of: damnit, fuck this, I'm going to finish it and nothing is going to stop me (except in my head it's all capitalized).
I always try to remind myself that the thing I'm building, I really, really want to see it live. I want to see it exist in the world, to see other people get value out of it. I set out on the journey for a reason.
I've worked on way, way too many credit card apps that charged money for other people (two invoicing platforms, one ticketing site, one photo social network) and the myriad of issues with credit cards and fraud and other problems have led me to the conclusion that unless you have a really, really good reason to do otherwise it is better to either:
1. Outsource this to a better API that takes a percent cut, but handles all the edge-cases like refunds and GDPR compliance for you.
2. If that doesn't work, and you're stuck with a shitty SDK, it's easier to just use a better supported language. (Even a general purpose library like Active Merchant.) It's trivial to create a shim for this and the separation is really clean. Why bother with Go if it's hard? For now just hack it together.
If they think they are getting a full working product that’s .... something else!
You are not your own servant, negotiate with yourself. - Jordan Peterson
Why am I avoiding the task? How can I simplify the task? What would it take to accomplish the task? How can I incentivize the task? Make a deal with yourself.
Whether it's the stack of bills that accumulate on my desk or the dev task I'm avoiding I ask myself these questions. Most of the time I'm avoiding some sort of responsibility that I've told myself isn't too important, it can wait because I have more important things todo. That's a lie, it wouldn't be weighing on my mind or take up space on my desk if it wasn't important. So I negotiate, if I devote two hours and start at 3pm I'll call it quits around 5pm to head home and hang out with my family. Then 5pm roles around and you reassess the problem to make another negotiation. This time your negotiation is a little more specific because you have a better understanding of the responsibility. Then someday your task will be complete and you'll be more efficient, more educated, and more prepared for the next. Much easier said than done.
I was going to ask why you 'hate' the payment provider but I can see it's because their SDK is poorly documented. So the truth is more like "I'm frustrated because I can not make steady progress, because I have to stop to find a workaround for yet another edge case". So you can not get into a flow. you're just frustrated.
I suggest you stop coding all together and master that SDK (with all of its shortcomings). Then you'll have a level of competency that will help you move forward. I question that this payment provider is 'the easiest thing' if they are that hard to work with. Are you using Stripe? They are actually very good.
One more thing, this is a bit revealing I think: "I'm questioning if I even want to be in this industry"
Yeah, that's the main problem right there, here's why.
Let's say you needed to figure out this exact payment processor with their shitty Go API in order to impress a hot girl.
Let me tell you something, I have pulled off MIRACLES to impress women. I got us behind the scenes at a Pro Hockey game once to impress a girl. I got us in the captains chair AND the engine room on a cruise ship once to impress a girl.
You are never going to be intrinsically motivated on this project and that's the main problem. By the time you had to motivate yourself enough times to post to HN about it, you are about worn out already.
Life is too short man. STOP. Think about what you would LOVE to do and go do that.
Ask your brain very, very good questions and you will be surprised at how amazing your answers are. Write, rewrite and edit your questions until they are perfect, then ask yourself that question.
Get specific. I'm talking like "How can I have financially rewarding, fulfilling, secure work that I love to do where I make a massive impact, become an expert in my field, feel significant with an impressive title, unlimited growth and enjoy it the whole way with no regrets?"
Ask yourself a specific question like that and I promise you your brain will come up with an answer.
Then, go do that.
If you were doing that, you'd have mastered this problem by now.
If you can't think that globally right now, use this technique to get past this one problem.
Make it a huge ask: "How can I finish this billing integration, have fun the whole time while writing clean, error free, standards compliant code and have it done by the end of January?" Your brain will tell you.
Trust yourself.
Last thing here: If you 'think' you 'might' want to get out of this field, then you already know you should be out.
You can code. Coding in ANY job is a superpower.
Go find something else to love.
It's out there.
It's 99% 'perspiration', remember?
If you care about the outcome (whatever it is) then that should be enough 'motivation' to do the 99%. You're a professional, right?
If you want a 'purely motivational' project then do something that's simply that: games, writing/playing music, reading etc., where 'it doesn't matter'.
Instead of trying to 'find motivation', literally just sit down and start working out a little plan. Having a plan and a path forward might provide some clarity to the outcome, so you can 'see the light at the end'. I'll bet that you don't have trouble 'working on it' once you actually start 'working on it'.
It's like working out at the gym: once you are there, the workout is not so hard. It's just getting there that's sometimes tricky.
So just put one foot after the next with a little plan in mind and you'll be there in no time.
This only works for those who want to accept it. Some may find freedom in being elites, not being restrained by motivation.
But others may enjoy the thrill of the hunt. So being separated from the pain and thrill of the work is a big loss to them.
But if you're going to do something big, that takes quite some time, you're going to have to be the former, not the later.
Some things are not good for the adrenaline seekers.
Maybe that is the issue. You are operating in a world where you think there are answers to things that will make them easier. You need to move away from that thinking entirely. What happens is your brain is not trained to enjoy the challenge of the undesirable things that you will need to do to succeed. There will not always be a trick or a tip and most certainly a big advantage if you can simply figure out the answer all on your own. That will then motivate you in future situations. [1]
[1] Advice, mine, against my advice ironically.