I’m not inherently a person who likes to travel a lot, although I have been to a few places within the country in recent years because there were specific experiences I’ve never done before and wanted to try, like going on an airplane ride, visiting an interesting museum, or learning how to surf. I enjoyed those experiences, even though those were mostly brief getaways with friends. Rolf Potts, however, in his book titled “Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel“, wants us to consider travelling in the long-term rather than living for hurried weekend trips and why.
Some favorite lines from the book:
- Travel isn’t just for changing what’s outside, it’s for reinventing what’s inside.
- For some reason, we see long-term travel to faraway lands as a recurring dream or an exotic temptation, but not something that applies to the here and now. Instead – out of our insane duty to fear, fashion, and monthly payments on things we don’t really need – we quarantine our travels to short, frenzied bursts. In this way, as we throw our wealth at an abstract notion called lifestyle, travel becomes just another accessory – a smooth-edged, encapsulated experience that we purchase the same way we buy clothing and furniture.
- The more we associate experience with cash value, the more we think that money is what we need to live. And the more we associate money with life, the more we convince ourselves that we’re too poor to buy our freedom.
- No combination of one-week or ten-day vacations will truly take you away from the life you lead at home. Vagabonding involves taking an extended time-out from your normal life – six weeks, four months, two years – travel the world on your own terms.
- Wanting to travel reflects a positive attitude. You want to see, to grow in experience, and presumably to become more whole as a human being. Vagabonding takes this a step further: it promotes the chances of sustaining and strengthening this positive attitude. As a vagabond, you begin to face your fears now and then instead of continuously sidestepping them in the name of convenience. You build an attitude that makes life more rewarding, which in turn makes it easier to keep doing it.
- Vagabonding is not like bulk shopping: the value of your travels does not hinge on how many stamps you have in your passport when you get home – and the slow, nuanced experience of a single country is always better than the hurried, superficial experience of forty countries.
- If there’s one key concept to remember amid the excitement of your first days on the road, it’s this: slow down. You must keep in mind that the whole point of long-term travel is having the time to move deliberately through the world. Vagabonding is about not merely re-allotting a portion of your life for travel but rediscovering the entire concept of time. At home, you’re conditioned to get to the point and get things done, to favor goals and efficiency over moment-by-moment distinction. On the road, you learn to improvise your days, take a second look at everything you see, and not obsess over your schedule.
- When you want to hurry something, that means you no longer care about it and want to get on to other things.
- Shortly after arriving at your initial destination, find a beachhead (be it an actual beach, an urban travelers’ ghetto, or an out-of-the-way town) and spend a few days relaxing ad acclimating yourself. Don’t strike off to hit all the sights or actualize all your travel fantasies from the get-go. Stay organized and interested, but don’t keep a things to do list. Watch and listen to your environment. Take pleasure in small details and differences. Look more and analyze less; take things as they come. Practice your flexibility and patience – and don’t decide in advance how long you’ll stay in one place or another.
- Don’t set limits on what you can or can’t do. Don’t set limits on what is or isn’t worthy of your time. Dare yourself to play games with your day: watch, wait, listen; allow things to happen. Wherever you are, be it the Vatican gift shop, a jungle village in Panama, or downtown Ouagadougou – keep aware of the tiniest tics and details that surround you. Anything that is remarked, even little flowers or leaves picked up off the ground and shown to a child, even a shoeshine or gravel pit, anything is potentially an attraction.
- The greater value is not in what you’ve seen and checked off the list, but in what you’ve learned deeply, the hard way.
- Once you have learned the basics, it becomes clear that having less work is easy. It’s filling the void with more life that is hard. Finding excitement, as it turns out, takes more thought than simple workaholism. But don’t fret. That’s where all the rewards are.
- What I find is that you can do almost anything or go almost anywhere, if you’re not in a hurry.
Looking at the screenshot above, it’s ironic that there’s a mismatch between the commit message and the actual pipeline result from the tests after pushing the said commit. 😛 What happened was that after making the unit tests pass on my local machine, I fetched the latest changes from the remote repository, made a commit of my changes, and then pushed the commit. Standard procedure, right? After receiving the failure email I realized that I forgot to re-run the tests locally to double-check, which I should have done since there were changes from remote. Those pulled changes broke some of the tests. Honest mistake, lesson learned.
I frequently make errors like this on all sorts of things, not just code, and I welcome them. They bewilder me in a good way, and remind me of how fallible I can be. They show me that it’s alright to make mistakes, and tell me that it’s all part of the journey to becoming better.
And yes, testers can also test on the unit level! 🙂
Knowing how to automate things and building scheduled tests to monitor known application behavior does not guarantee bug free apps.
They do help boost confidence in what we’ve built, and that makes us more comfortable releasing changes into the wild, because it means we’ve explored a fair amount of feature breadth. It’s not the only strategy I’m sure to use given some software to test, but it’s something I’ll practice every after thoughtful exploration.
But, even with that tool to augment my testing, I have to keep my guard up. Every time, I should keep asking myself about the more valuable matter of the unknowns. What sort of things have I not considered yet? What scenarios might I still be missing? Have I really tested enough or am I merely being overconfident, just because I can automate?
We consider a lot of things when we build and test software.
Who are our customers? On which browsers or platforms do we target to deploy our application? Does our software load fast enough for a considerable number of users? Are we vulnerable for SQL injection and cross-site scripts? What happens when two or more people use a specific feature at the same time? Is our API stable and structured well enough for its purpose? How easy is it to set up our apps from scratch? Do we handle rollbacks? What metrics should we monitor on production? Do we feel happy about our happy paths and other not-so-happy paths? What actual problem is our app trying to solve?
There’s a fair amount of room for making mistakes. Bugs can creep in where there are gaps. Some errors are likely to occur while we are building and testing stuff because there’s just so many variables involved.
That’s how things are. There’s not one but several moving parts. It’s up to us to decide whether to be overwhelmed at the complexity or decide to get better at finding out which things to look out for and learn those.
The same is true in building and testing the life we choose to live.
Last week I had a lovely time reading “How to Fail at Almost Everything and Still Win Big” by cartoonist Scott Adams. His views on success and happiness, and his formula for increasing the odds of success through failures are intriguing, based on his life experiences. He shares ideas about goals and systems, skills, happiness, priorities, and personal energy, which provides a guide for living well. Some of those ideas are ones I already exercise, while others have provided answers to goals that have failed me in the past as well as reasons to why I’ve acted a certain way before. It’s refreshing to learn something new about existing patterns of behavior.
Here are some favorite quotes from the book:
- A goal is a specific objective that you either achieve or don’t sometime in the future. A system is something you do on a regular basis that increases your odds of happiness in the long run. If you do something every day, it’s a system. If you’re waiting to achieve it someday in the future, it’s a goal. Goal-oriented people exist in a state of continuous pre-success failure at best, and permanent failure at worst if things never work out. Systems people succeed every time they apply their systems, in the sense that they did what they intended to do. The goals people are fighting the feeling of discouragement at each turn. The systems people are feeling good every time they apply their system. That’s a big difference in terms of maintaining your personal energy. Goals only make sense if you also have a system that moves you in the right direction.
- One of the most important tricks for maximizing your productivity involves matching your mental state to the task. For example, when I first wake up, my brain is relaxed and creative. The thought of writing a comic is fun, and it’s relatively easy because my brain is in exactly the right mode for that task. I know from experience that trying to be creative in the mid-afternoon is a waste of time. By 2:00 PM all I can do is regurgitate the ideas I’ve seen elsewhere. At 6:00 AM I’m a creator, and by 2:00 PM I’m a copier.
- The way I approach the problem of multiple priorities is by focusing on just one main metric: my energy. I make choices that maximize my personal energy because that makes it easier to manage all of the other priorities. Maximizing my personal energy means eating right, exercising, avoiding unnecessary stress, getting enough sleep, and all of the obvious steps. But it also means having something in my life that makes me excited to wake up.
- It’s useful to think of your priorities in terms of concentric circles, like an archery target. In the center is your highest priority: you. If you ruin yourself, you won’t be able to work on any other priorities. So taking care of your own health is job one. The next ring – and your second-biggest priority is economics. That includes your job, your investments, and even your house. You might wince at the fact that I put economics ahead of your family, your friends, and the rest of the world, but there’s a reason. If you don’t get your personal financial engine working right, you place a burden on everyone from your family to the country. Once you are both healthy and financially sound, it’s time for the third ring: family, friends, and lovers. Good health and sufficient money are necessary for a base level of happiness, but you need to be right with your family, friends, and romantic partners to truly enjoy life.
- There’s a formula for success. You can manipulate your odds of success by how you choose to fill out the variables in the formula. The formula, roughly speaking, is that every skill you acquire doubles your odds of success. Good + Good > Excellent. If you think extraordinary talent and a maniacal pursuit of excellence are necessary for success, I say that’s just one approach, and probably the hardest. When it comes to skills, quantity often beats quality.
- I find it helpful to see the world as a slot machine that doesn’t ask you to put money in. All it asks is your time, focus, and energy to pull the handle over and over. A normal slot machine that requires money will bankrupt any player in the long run. But the machine that has rare yet certain payoffs, and asks for no money up front, is a guaranteed winner if you have what it takes yo keep yanking until you get lucky. In that environment, you can fail 99% of the time, while knowing success is guaranteed. All you need to do is stay in the game long enough.
- The single biggest trick for manipulating your happiness chemistry is being able to do what you want, when you want. I’m contrasting that with the more common situation, in which you might be able to do all the things you want, but you can’t often do them when you want. The timing of things can be more important than the intrinsic value of the things. It’s hard to become rich enough to buy your own private island, but, relatively speaking, it’s easier to find a job with flexible hours. A person with a flexible schedule and average resources will be happier than a rich person who has everything except a flexible schedule. Step one in your search for happiness is to continually work toward having control of your schedule.
- No one wants to believe that the formula for happiness is as simple as daydreaming, controlling your schedule, napping, eating right, and being active every day. You’d feel like an idiot for suffering so many unhappy days while not knowing the cure was so accessible.
- The happiness formula:
- Eat right
- Get enough sleep
- Imagine an incredible future (even if you don’t believe it)
- Work toward a flexible schedule
- Do things you can steadily improve at
- Help others (if you’ve already helped yourself)
- Reduce daily decisions to routine
- Always remember that failure is your friend. It is the raw material of success. Invite it in. Learn from it. And don’t let it leave until you pick its pocket.
Some time during the past week I thought about learning how to reduce the overall file size of postgreSQL test databases. It came as a minor annoyance over a 500 MB database backup file, which always took a while to restore when testing our apps locally. Apparently I was bothered enough that I decided to look over all the data to see whether there was anything unnecessary that I can purge.
I ran DELETE commands in places where data did not seem needed:
DELETE FROM <database_table> WHERE <condition>;
But that alone, I found out, does not decrease the size of the database, let alone the size of the affected table. What did the trick was running two other commands after the initial delete instruction –
VACUUM FULL VERBOSE ANALYZE <database_table>;
REINDEX TABLE <database_table>;
– to which I was able to minimize our test database to 166 MB, at least 60% smaller than it was before. It turned out there were still tons of logs in there that we didn’t really want. The database restore process is now faster, plus I also learned more about our tables as I went through each of them.
Recently, I was asked by the Human Capital Management team at work for a list of specific requirements for our scrum master role. I obliged, and at the top of my head wrote the following:
A scrum master is someone who –
- has great written and verbal communication skills
- understands the software development process, has experience working with product managers and programmers; preferably with customers too
- well-versed in the practice of software testing, enjoys exploring systems, thinking in various perspectives, and putting on different sorts of hats
- delights in shouldering a support role to the software development team
- is a self-starter, regularly updates himself/herself on what’s happening in the software development and testing industry
- someone who takes pleasure in a bit of scripting / programming is a plus (Webdriver, Watir, Cypress)
It’s not an extensive list, and I may have gotten some of the details wrong about what skills scrum masters are supposed to have based on the ideal definitions that’s out there in the web, but it’s alright. These are just the things I initially thought would suffice, in the context of what I and my team does and experience most days. Our testers are scrum masters too, and I’m proud that so far we’ve been able to make stuff work on our end.
Scrum masters in other places probably need a dissimilar set of requirements, because those are what allows their systems and processes to be effective, and that’s just fine.