- Negotiate for a half upfront payment and start only when you have received it. It will help you avoid clients that don't have the necessary budget and will save you a lot of pain.
- Document decisions done over the phone or in f2f meetings (e.g. send an email saying something like. As we discussed, we decided to ...). It will help you with unforeseen change requests that the client sees within the scope of the work.
If you are able to stand through the (subjectively) most obnoxious host in the history of TV shows, then you might like http://www.imdb.com/title/tt7804132/ this.
I absolutely agree. This is usually a first sign for me to back away from a conversation when someone I just met "blindly" defends or rants about a technology without laying a valid argument.
Very interesting points. I agree with many of them as they reflect my own experiences.
Assuming you are the author :) Could you elaborate on 3 "Always refuse if someone asks you to sign an NDA before hearing their idea".
This is something I always find frustrating, but I usually end up signing the NDA as it seems irrelevant to me anyway. I'd be interested to know how people react when you tell them that you don't want to hear their idea. Do they change their attitude towards it, or you don't follow up?
I think this is great advice. The only thing I can add from my own experience is - take your time to reflect on what you've learned once you achieve a new goal.
I also sometimes like to redo old stuff without looking at the code of my old solution and then compare. It is time consuming but really helps to see how you have grown.
In my opinion these two points only hold if you work alone.
As I see it, you don't estimate for yourself, you estimate for transparency, so that other team members can plan accordingly.
In your first point, you might not be able to estimate, but others might be able to do so and give you hints. Your final estimation might still be off, but that's how you learn.
In your second point, you estimate so that others can see how long it will take and plan their work better.
It seems that you don't have an interesting project in your daily work and you "procrastinate" by trying to find something interesting and useful on HN or similar. While this is at least not wasted time (as opposed to wasting the same amounts of time on social networks and or image/gif sites).
My advice would be to start or join a larger project that you are interested in (something open source may be).
Note that I assume, you don't have a day job and thus you have larger portions of spare time. If you do have one and you find yourself being stuck on HN or similar, then it seems you are bored of your job. Talk to the responsible and find something new you can work on.
Either way, this will give you new perspective and you will find yourself occupied with something you like working on, ultimately leading to spending more time on things you consider productive.
The many tools that are proposed here are definitely useful, but in the end if you have a lot of free time, you'll always find a way to "procrastinate".