| David, thank you so much for writing such an extensive answer. It's very interesting to explicitly define those three main roles and applying them to your own work. I am with you on procrastination (and a lack of motivation in general) originating from a lack of clarity (or fear). I think I have implicitly applied the same differentiation by splitting up my time and work into different projects / categories and explicitly defining the roles I am fulfilling as described in OP. I often have stretches of the "now I'm getting my work/life back on track!" feeling where I try to setup the organisational systems. e.g.
- Commenting and documenting code as I write it, so that I can get back to it later without any problems.
- Creating sales and administration procedures.
- Writing down the most important words from my vision on a sticky note and stick it on my laptop screen.
- Create daily reflections on my work.
- Write important notes to my journal
- etc. etc.
This takes time. All basic things that should be as clearly defined, turned into processes, and automated as much as possible. This then goes well for a couple of days/weeks/months.Then, one of two things happens: 1. Overall, the manager role seems to be the one that is the first to fail when -one way or another- the unavoidable shit hits the fan. This does not even necessarily have to be a bad thing (e.g. sometimes it happens over spending a weekend 'winding down' with friends or family), but most of the time it is (e.g. a freelance project deadline taking up 100% of time and resources, an unfortunate health event in the family, a financial setback from an expensive but necessary item breaking or a client not paying). For some reason, returning or recovering from such an (un)expected event that causes me to lose focus, makes me lose the sight on processes that were clear before. Trying to put it in your term; the manager is confused and loses clarity, as a result the technician does not know what to do and the entrepreneur starts doubting his existence. And then it's back to square one. 2. As you continue to work on different projects/fields, technology moves forwards. And inadvertently, what happens when you spend 5-10% of your time in a field where 1m+ people spend most of their time, is that technology moves faster than me. I decide what processes should be, defined them, and applied them once or twice in a project. What happens next is either, I come across this great new technology that causes me to want to forget what I know and apply the greatest newest thing, or I start wondering "did I make the best choice?", that causes me to re-evaluate my current process. (Or I have been procrastinating the decision of a certain system so long that I eventually just pick one under time pressure.
And as I go along the implementation I start to regret it, but it's too late and I tell myself:
"okay we're going to finish this project in this matter, but next time I REALLY have to make an informed decision!"
and, of course, the next project it goes exactly the same way...)
And then it's back to square one...I have now decided that this is not sustainable (duh) and I want to know how others tackle this problem (as I cannot imagine I would be the only one), and get new insights and/or build the skills and/or tools I need to solve this problem in a sustainable manner. I hope this provides a little context on what lead me to ask the question! |
I've gotten a lot of mileage out of Django for that reason, as even with the Python 2-3 thing, Django has been very stable compared to a lot of web stacks I've seen. It's 15 years old, and I fully expect it to still be around in another 15 years.
React was being adopted by companies when it was still at version 0.12, and while it did end up staying around, it was not guaranteed. I would have been hesitant to use it at least until v1.0, and probably would rather have waited until v2.0.
Now React is the frontrunner and unlikely to go anywhere. They've also maintained backwards compatibility mostly from what I've seen, as Facebook has 180,000 or whatever odd components they don't want to rewrite.
I wouldn't use Elixir/Phoenix currently, unless it was extremely helpful to the project, just because it's a less mature technology. It sounds like a wonderful ecosystem, but if I'm making a business decision, risk is what I'm wanting to minimize.
This is the biggest reason I was sad that VueJS seems to be flirting with a large breaking change. I had thought Evan originally said they _wouldn't_ be pulling an Angular 1 to 2 rewrite the whole framework, and though this doesn't seem as bad, it still is a different way of doing things.
You know what hasn't changed in 10 years? JQUERY! Ha!
So as far as how I'd keep up to date, my answer is that I'd try to choose a preferred tech stack that is stable and try to get really good at it. Django has been the only full stack framework I've needed to learn in my 8 years of contracting, and that's worked well for me.