I’ve been playing Lumosity’s brain games daily for several months now. I’ve read about people swearing by it, so I decided to try it myself.
For many months, my morning routine included meditation, and then the brain games. I thought that’d be when my brain would perform at its best: early in the morning, before reading emails or anything like that, and right after meditating. Well, I was wrong.
There was one week where I had time to meditate in the morning, but didn’t have time for the brain games, so I was doing them later in the day, around 9pm or so. I thought my scores that week would drop noticibly, given I was very busy working all day and would be tired in the evening. That’s not what happened: all my scores went up that week, despite the fact that I was feeling very tired!
I then decided to change my brain games time to my evenings, and my scores have been consistently better than when I was doing it early in the morning.
I’ve been experimenting with finding the best time of the day for me to perform certain tasks. I’ve always had this feeling that my brain works much better from mid afternoon into the evening, so it seems these brain games are confirming that.
I feel like meditation is finally paying off for me!
I remember I was a kid (maybe 10 years old or so) when I first tried any sort of meditation. No idea what motivated me to do so at the time. Maybe it’s because I was into watching martial arts movies and saw the characters meditating?
I used to close the doors and windows to keep my bedroom dark, put on Vangelis’ Alpha song (my brother had a small LP that had that song), sat on the floor, and went like “ommmmmmmm” for a while. Go figure.
A little over year ago I heard of Headspace’s app for guided meditation and decided to give it a go. I tried their free 10-day program, enjoyed it, and ended up getting the yearly subscription.
As of today, I have had 243 medication sessions, totalling 44 hours, averaging 11 minutes per session. I first started doing 10-minute daily sessions, and only about two months ago I’ve increased it to 15-minute sessions.
It’s definitely not easy sitting through those sessions trying not to get distracted by everything going on in my head. For a long time I kept asking myself whether that thing was actually working, since I couldn’t tell difference. But I decided to insist on it.
Now I think it’s finally paying off!
I’ve been noticing how smoothly I’m handling some stressful situations, such as cases where in the past I’d lose my temper and end up regretting how I handled it.
I’ve also been noticing that I’m detecting my distractions a lot quicker and more frequently and bringing my mind back to whatever it is that I need to be focused on.
Many times those distractions come in the shape of thoughts that bring me down, and most of the times those are things either sitting in the past (which I cannot change) or future (which I may or may not be able to change). I’m noticing I’m doing a lot better at recognizing those thoughts and letting them go as quickly and smoothly as possible.
Overall, I’m feeling happier and more focused, which are things I had been really in need of, and I believe meditation is one of the things helping me with that.
Due to my consistency following my daily sessions, Headspace has been giving me vouchers that I can give out to people who would like to try their app for one month for free. Let me know if you’d like to get one voucher.
A few months ago I mentioned how I’m Catching up with my Book Reading. There are so many books I want to read, but there’s never enough time. Usually, before deciding on whether I’ll read a book or not, I read reviews on Amazons or blog posts from people who have read it. A few days ago I’ve learned about a better way to do that: Blinkist.
They have 15-minute summaries of several books, including many books that have been on my reading list for a while. I can either read these summaries, or listen to it. These summaries contain the gist of the book, and it gives me chance to make a better decision as to whether I want to read the full book or not. Regardless, those 15 minutes should give me enough information which I might not get otherwise.
I had already put a “read for 15 minutes” item on my “building better habits” daily list, and now I have a great source of reading material to fulfil that daily habit. I’ve added a bunch of books to my library and will be going through each one of them, daily, 15 minutes a day.
Let me know if you give Blinkist a shot. I’d like to know how you like it, and what your favorite books are, as I’m always looking for recommendations to add to my list.
At the last Virtual Brown Bag we talked about Test-Driven Development (TDD), Behavior-Driven Development (BDD), and related subjects (you can watch it here).
I’ve been very fortunate in the last 5 years working on projects where I simply write the tests as part of the work. It’s just something I do.
Is it a new feature?
If I need to work on a new feature, I write the tests to spec out my understanding of the feature. If I can’t write the test, most likely I don’t understand what the feature is, and if that’s the case, I shouldn’t write any code to begin with. Instead, I should pair up with the QA guys and/or the business analysts (or work directly with my client), and make sure I understand not only what the feature is, but also why it is important to the business.
Is it a defect?
If I need to work on fixing a defect, I’ll do my best to write a test that reproduces the issue. Granted, some issues (such as multi-threading issues) are really difficult to reproduce in test, but hopefully those types of issues aren’t the core of my projects. Whenever there is an area that’s hard to test, I’ll try to isolate as much of the code as possible, decreasing the surface that’s hard to be tested.
The biggest lessons I’ve learned from testing
While I think I’ve learned quite a bit about the technical aspects of writing tests, and have been harvesting so many positive outcomes, such as writing better code, I don’t think that alone makes me a better developer.
I believe that the act of taking a step back to think about how I’m going to write tests has made me take an extra step back to understand what it is that I’m building. This has made me collaborate a lot more with people who actually understand the business. I don’t really care much anymore about using this or that framework/language/etc just because it’s cool; I care much more about building features that will bring value to my client. Seeing a client smile because you gave him or her the feature needed is very rewarding.
A recent experience
In the last 3 months I’ve been working part time on a project where I’m the only developer, and I have no QA, no business analyst, no project manager. Here are some bullets from my personal project notes:
- The first phase of this project has gone into production two weeks ago
- The client is beyond happy
- Very few defects were found in production (and corrected immediately)
- There are close to 400 tests
- I do NOT have everything under test. I’m keeping Controllers very thin, calling out to Commands, Services, etc. Things the controllers call ARE under test.
The whole testing thing…
As I finished writing this post, I just remember I actually wrote another post about the whole testing thing 8 years ago! Time sure flies by…
Many times it seems like the hardest question to get answered by clients is:
“What’s your domain?”
I’ve seen people putting their feet down and yelling:
“There is no domain!!!”
“This application is 100% customizable by the end user… everything is dynamic… the screens, the reports, this, that, the other…”
My default answer for that has been:
“Well, luckily, there’s already some software you can use for that, then: it’s called MS-Excel!”
I then proceed to ask:
“Can we take your app as-is, give it either to Walmart or the Mom and Pop store around the corner and tell them to use it to run their business?”
To which I hear:
“Well, no… that’s not what our app does.”
Darn it, whatever happened to the “100% customizable by the end user…” talk?
As it turns out, there’s always a domain.
Yes, the user may adjust the application to make it fit the business better, but that’s always done on top of the core domain the application addresses.
Zooming tools are very useful whenever doing a presentation or training. It helps both the people at the back of the room, as well as drawing people’s attention to the area of the screen you need them to be looking at.
On the PC I’ve used ZoomIt, which is part of Microsoft’s SysInternals tools.
Recently I’ve found Zoom It for the Mac, which is cheap, and works like a charm.
Why am I starting this post with such a silly question? Of course software developers know how to use software! Or maybe not…?
Am I a good developer?
What makes it for a good developer, anyway?
For many years I’ve focused quite a bit on programming languages, IDE’s, patterns, and all those things that are definitely fun for most developers. Mastering those things, however, does NOT turn someone into a great developer. Knowing those things well is very important, but there’s more to it.
I’ve seen developers who…
- spend a lot of time building applications, but not using software productively themselves;
- seem uncomfortable using their own tools, not learning the bare minimum in their IDE for things like quick file lookup, code navigation, code completion, etc;
- don’t adjust their environment in order to reduce the friction when getting things done;
- don’t take the time to understand what it is that they need to get done.
What is it that I’m building?
Most developers are supposed to develop the software designed to automate somebody’s tasks, workflows, etc (others may be building games and such, which is a different story). I believe a good software developer should be able to understand the business, identify its needs, and then think of good solutions. Sounds simple, but I keep seeing cases where people start to code without really understand what needs to be built.
Am I productive?
When a developer doesn’t bother about automating repetitive tasks of his or her own, the likelihood of achieving success doing that for the client is very slim.
I used to do a presentation on “productivity”. I talked about tools and add-ons, but just spitting out code as fast as possible doesn’t mean we’re productive, so I also talked about the mindset and techniques I use, while always asking myself “why am I doing this again?”.
My conclusion (for the time being)…
I have had clients tell me they decided to hire me after seeing how I use technology. They say they see me using my smartphone, my tablet, and my computers in ways they haven’t thought of. They say they believe I use these things not because they’re “cool”, “flashy”, “trendy”, but because I focus on the benefits and results instead. They believe that if I’m able to automate my life this way, I’m qualified to automate theirs, too.
These are things that keep coming back to me and I feel like I need to explore more into it, as it’s giving me good results.