Other than that, develop my current venture to a successful exit and watch my kids grow up.
I do have some more out there, what if, pie in the sky type long term ideas...
Sail with my family around the Caribbean for a couple of seasons (too much of Sid Meier's Pirates!?).
Finish editing and publish my social/anthropological documentary on a weird community I used to be part of.
Publish my photographs.
Open a museum to Ecstasy in the place of its original synthesis, Darmstadt.
Open a museum for the Australian ACMS historical computer collection.
Digitize and classify my antique postcard collection (20,000+) and allow others to upload.
Spend a few decades in one place gardening and enjoying the results.
Make more art.
Help others, especially smart and motivated young people, to achieve their goals. Might like to do something accelerator/VC/mentorship related here. Or maybe take a leaf out of Alan Kay's book and focus on education for awhile.
Might be fun to re-read this in 10 years ;)
I feel like we're at an inflection point where the cost of developing formal specifications is coming down enough for more teams to be using them in their practice. I'd like to continue that trend to allow more developers to use pure maths to solve their problems and use computers to verify (and maybe synthesize) their work.
I don't know what five years from now will look like but I'd like to either be working on or finishing a maths degree or starting a company to work on developing tools to work with formal specifications and proof automation and consulting with teams to help them write specifications for their critical components.
> How do you work towards achieving it?
I spend my free time working on problems in predicate calculus and writing specifications in TLA+ or Lean. I look for opportunities in my day-to-day work that would benefit from those skills. When it is time to think about my next position I will look for jobs that will help me get to that next level. Right now that means looking for opportunities to work on projects where reliability is highly desired and complexity is also quite high.
When I conduct 1-on-1's with my team I try to get people to think about their career. I like to encourage people to think strategically about their future. What do you want to be doing, in an ideal world, 2-3 years from now? What can we do now to set you up to be ready for that opportunity when it comes up?
For your two examples, rather than modeling how you communicate with Facebook for the bot, focus on how the bot gets data to and from your e-commerce store and how they stay synchronized or consistent. Your communication with Facebook's services may not even make it into your model. For the angular driven warehouse catalog application, same thing. You don't need to model angular and the UI. You need to model how the data gets to and from the UI and stays consistent with the warehouse catalog.
Many detractors of formal methods will claim that software to too complex to specify formally and so it's no use.
I believe they are right. Software is quite complex. And that's why you should use tools to help you manage it. When you start building an event-sourced system architecture for your e-commerce system that scales up automatically and never goes offline during a deploy or single component failure... how will you know your design is correct? How will you measure your success?
(Yes, TDD encourages a sort-of informal "specification by example" and integration tests catch a lot of errors... but the kinds of things formal specifications have been proven to catch cannot be imagined by a mere mortal... despite the illusions of power programming has given us it is helpful to remember that illusions have no real power. You can write a specification to verify your design is free from race conditions given some context but you cannot anticipate all of the state-transitions that can lead to a race condition if all you're thinking about is the code)
This is why I think formal methods are useful and why you don't need to specify the whole system. Nobody is going to care if you have a formal proof that you can copy a file. What is going to be interesting is if you have a high-assurance specification that you can check which demonstrates that given any number of clients and command-dispatching processes eventually an order will be completed and no event will be recorded twice, out of order, or dropped (given that there are at least N dispatcher processes running and what-have-you). It is quite impressive if you can write a proof that if you write your program to maintain certain invariant properties then you do not need to have a lock in your program.
You can't prove those things with a bunch of boxes and lines.
My advice is to start small and try to work on a specification of a particular component or protocol that matters the most. I like to think about it in terms of risk. I'll ask myself questions like: what is the worst thing that could happen if we get this part wrong? or what part of this system do we have to absolutely ensure is right for the project to succeed?
If the answer the first question is not, "maybe someone will be annoyed or the business will find it annoying" then I increment the risk counter in the back of my mind. If the imaginary actuary assessing my project says that the cost of insuring the project against its risk is out-pacing what I can make from completing the project or potentially bringing harm to the business (or people) then I'll take a step back and consider ways to de-risk the project. There are many levers I can pull and I'm glad I have formal methods as I think that the cost of doing that work pays off in spades. Combined with other techniques and tools at our disposal it is much cheaper today to write highly reliable software than it has ever been.
Some brilliant advice there on breaking down long-term, often vague plans ("save the planet") to practical, actionable steps and expectations ("clean up your room").
Happiness is an unethical "cut-ay-gory":
(For those you aren't aware of his tick, don't watch, just listen)
I don't really have goals longer that one decade from now. I don't really know what I want to have by the age of 80(im currently 29) so I am not concentrating there. I do know a few things I would like though and those are money and to still be working with interesting things that I love doing (programming, business running, hobbies, family, friends). So what I do is I set short-term goals that are making me work towards those life purposes. I am aware though that these purposes may change so I wouldn't like to work for two decades on making money and then suddenly realize that money was not what I really wanted.
So I set a goal 10 years ago and was stating that I wanted by the age of 30 to be a highly-paid (to fulfil my need for money) software engineer (to fulfill my need to do something that I love doing). I am very happy with my progress so far and I am still waiting for the time that I would make piece with myself and sit down to set the next goal which will also be short-term, something like "build a buisness by the age of 35 and marry your girl".
I do know what I want to have: my health. Health is kind of relative at that age, but I'm working now to be the healthiest 80 year old I can be.
This. Waiting for the right moment to start working on your long term plan is, according to me, not a good idea. Instead of taking a giant step after some point of time, consider taking small steps on a regular basis.
I really like your idea, would you like to discuss how are you planning to approach this problem?
I'd like to somehow develop some new techniques based on this (as opposed to all the prevalent ones you find in self-help books). Right now I can't afford the time, but I should be able to make some headway next year. fingers crossed
I am working on it; wo of my companies will have an exit within the next five years, so at the beginning of my 30s I should have the foundation to work less and study more.
For the first goal I split time at the company I work for between engineering work (design, implementation, mentoring junior engineers, etc.) and building relationships with product, marketing, and engineering leadership.
The two side-businesses are boring and use technology, but unlike my day job where I work in machine learning (up and down that "stack", from data engineering through research and model development) technology isn't the focus. I spend time in the evening after my kids have gone to bed developing or sourcing the supporting technology and working on product ideas and marketing and sales efforts.
Means to achieve it: first, became aware of every time I am not being kind; later, analyze the circumstances that lead to that behavior, so that I can prevent them in the future. This sometimes requires undoing bad habits.
I do have other goals, but they are much less important.
Particularly, to end the American prison system and the policies of drug prohibition.
The answer seems to be universal single payer health care.
I think instituting a single payer system in the US would be a good first step, but it is unlikely to completely solve our problems.
Family-related: I want to create and manage a family emergency fund, something that my close relatives can dip into if they run into trouble. I'm still trying to think of a way to structure it. Poverty is an issue in my area, and I'm finding that many of my relatives would be better able to create and meet medium- and long-term goals if their short-term situation was a little less precarious.
Retirement-related: I want to save $2.4 million as quickly as possible. That would give me a safe annual withdrawal rate of ~$60k, meaning any money saved or earned beyond that per year could go towards charities, family funds, or my kid's 529 plan.
As for professional goals, I'm often too aware of the fact that new information over time causes me to change my goals, but that's a natural part of the process and I try not to resist that. Instead I just try to make sure I'm learning and growing in some way or another.
One struggle I've had along the way is balancing what I choose to learn about between what I think will make me more employable or better at my day-to-day work and what I am genuinely interested in. Trying to lean more towards the latter, it's much more rewarding and generally still pays off career-wise.
Funnily enough until recently I was trying to do that a bit too hard, which was actually making it harder for me to get better.
Reinterpreting the way I pursued this goal has actually gotten me out of the plateau I was previously in.
This is going to require more customers, and more help.
Like user "inp" said about his goal, it applies here too. Perseverance and patience.
One has to play the long game, for sure.
I do it by breaking things down into smaller and more manageable pieces. This helps prevent becoming overwhelmed.
1. Grow my company to 20 or so employees.
2. Use $$$ from company to fund a large portion of other investments, interests. (my company isn't VC funded. Goal is for it to be a cash cow)
3. Level up personal brand enough to speak/travel a few times a quarter and see some cool places. Use that $$$ to pay for kids college.
After: Founding something myself.
Retire for me just means enough FU money, but I’ll probably work till I drop dead.
Then, I'll be able to work on what I really want, without worrying about income.
I am currently resident of Switzerland, which has similar restrictions on the tax-free part of retirement savings, but allows earlier withdrawal for reasons such as
* purchasing a home (restriction: you have to live there yourself
* leaving the country
other long term goal: build my business to the point where i can trust someone else to take on some of the grunt work
Short-term: I plan to use my very short time on this planet to enjoy as much as I can.
We create technology (the Pavlok wearable, and the Shock Clock at this moment), offer coaching, create courses, and much more to build the world's first truly effective behavior change platfom.
I wrote a FB thread about our mission and how we broke it down recently.
"For the rest of my life, I'm committed to one mission.
It becomes one goal, broken into two parts, and 3 stages.
One goal: invent the vaccine that cures humans from not doing what they say they will do. Absolute (100%) success --- or I have failed absolutely. (same success rate as the smallpox vaccine)
Broken into two parts:
1) End addiction
2) change the meaning of money from "money is what other people pay me to do what they want me to do" to "money is where i get paid when I do the things I want myself to do"
And the 3 stages are encapsulated into our mission statement: "Upgrade Humanity."
1) Break bad habits that hold us back
2) Form good habits that help us become who we could be
3) Create new sensory inputs (sixth sense technology) to augment and increase human capabilities
Anything that isn't in line with that mission needs to move the fuck out of my way.
Take the feedback for what it's worth.