In February I blogged every week day. It was fun, sometimes demanding, but overall rewarding. I started these challenges to push myself a bit. I have discovered that I am much better at committing to a daily task than to a weekly one. In the past I struggled quite a bit with blogging because I blogged when I felt the need, and that meant one post a month on average.
Only when I stop and really think about it I recognize I made steps in the direction I wanted to. But I don’t stop to celebrate often. One year ago I started drinking a glass of water as the first thing in the morning. It helps me a lot, much more than coffee, which I drink after. I do it every single morning. And every single morning I forget to celebrate.
It happens to everybody. You start with a spark, motivated, you are gonna rule the world. You put a lot of effort, you see the progress, you get feedback, that fosters more motivation, you go on. Smooth sailing. Suddenly that day arrives. The night before you have planned your tasks. You don’t have to think what to do, it’s all there in the list. But you can’t get started. Maybe something sidetracked you?
It’s not a bird without ego :) There’s quite a heated debate about the use of self. If you read the proposal on GitHub there are pros and cons. We had a similar discussion on the Ray Wenderlich team when we wrote our Swift style guide. I am in favor of using self, but I lost the argument :( And my argument is simple: I like code easy to read. I don’t mind writing self, even when it’s redundant, and I am sure my future self will appreciate it (no pun intended).
I am not using a Source Code Management (SCM) system for my products, neither for AppVersion nor for Podrover. People look at me in a weird way when I say it. Here’s why. It’s just me. I am the only developer. There’s no need of sharing the code base with somebody. I save some time. Maybe not a lot. Maybe ten minutes a week. That’s a work day a year.
While building my services I am trying to avoid lock-in as much as possible. I especially try avoiding to tie myself to a non portable technology. For example I could have used Heroku. I used it in the past, it’s very cool. But it doesn’t allow to upload files. I mean it does, but storage is not permanent. The suggested way is to upload files to S3. Another dependency. You see where this is going?
There’s a very nice article by Sebastian Kreutzberger about improving UX by avoiding signup screens. There’s also a follow up post to address cross-platform issues. It’s all feasible, sure. But is it worth it? All of this just to avoid a signup form? I am all for a better UX and a signup screen can be seen as an “obstacle”. On the other hand a form is also a milestone. A customer entering her email is a form of commitment.
We usually see the final product. We judge it pretty quickly. We almost never think how the designer got to that result. Here’s the story behind the icon of Podrover. I wanted to design it myself, but the entrepreneur side of me won that argument with a “let’s outsource the design of the icon while you keep on building the app”. I had a few ideas in mind, mostly playing with the concept of rover as a vehicle.
Here’s a lesson I learned from my professor at the University. What’s cool is that this is not a motto he said, it’s something I internalized while working with him for three years. We had a lot of mishaps while working on a EU-funded project: hardware bought but withheld at the customs local administration delaying the project by putting a spoke in the wheels with bureaucratic nonsense people leaving the project after a few months other professors giving us a bad time, mostly due to envy snow that prevented us to access the lab for a week his son having a kidney transplant It was like bad luck decided to focus all his attention on my professor.
You have it, there in your mind. Maybe it took a while before you “visualized” it. Or maybe you got it in the blink of an eye. Either way now it’s there, so crystal clear that you feel it’s “mandatory” to realize it. The idea. You have time, skills and motivation. Just one little obstacle. Your perfectionist tendencies. I just described my younger self. I have a ton of abandoned projects.
A few days ago I stumbled upon this Taxonomy of Programmers. It’s not exhaustive list but I fit pretty good into the Product Programmer category, especially on this: They want to think about the product I feel pretty uncomfortable if my task is “build this cog, here are the specs”. I kinda need to know how my work fits in, how that cog contributes to the machine.
How do you analyze your app ideas? Here’s how I do it. First a little preamble. I am publishing this blog on S3. I use Octopress to generate it. I write my posts in markdown. Once I am done writing/editing I (re)generate the blog and upload the results to S3. That’s it. Most of this process involves scripts that I run in the Terminal and I am totally fine with it.
I have a toy VPS on Digital Ocean. It runs the backend of a very simple prototype for a demo that I had to run almost a year ago. The backend has a signup and login system but fortunately we didn’t use any sensitive data for the demo, just fake email addresses and a bunch of data about businesses like addresses and phone numbers, all publicly available stuff. At the time we were in a rush so I set up the machine without any particular protection.
Sometimes during podcasts or even at conferences I get asked: “who is your role model?” My answer is “My father and Mick Jagger”. No, they are not the same person :) They share a very fascinating trait though. They are both older than seventy and both still enjoy doing what they did for their entire life. I assume you already know who Mick Jagger is and what he does. My father does not have a wikipedia page, yet.
We have been restoring our house for a few months. I saw many things that are pretty similar to the world of software development. Most of them are related to “executing a design”. When you restore a house there’s usually an architect or a quantity surveyor that leads the job. They check out the house, take a lot of measures, come up with a blueprint and the masons are supposed to execute it.
When you teach it you build examples close to real world scenarios, but still not fully real. When you work on a project on your own you might take shortcuts to avoid what you suspect are intricate situations. When you work with a team, with designers that want a pixel perfect implementation, with an existing code base, with some bridges to Objective-C, with changes of mind along the way then you have a good battlefield to test a tool.
A friend asks you: “what are you doing these days?” You are working on something on the side, or even full time. How do you call it? Product or project? I’m not hair splitting. A project to me is in a sandbox. I do it for fun and to learn something new. The expected outcome is self contained. I know something more when I am done and I enjoyed doing it.
I’d sleep for a month if I could. The point is, I can’t afford it. I am living a phase of my life in which I don’t sleep much. We have two kids. One is 4, the other is almost 2. Nights are crazy. My problem is not sleeping fewer hours than usual, but interrupted sleep. Like sleeping for 2 hours (enough to get in the REM phase) and be awakened by one the kids screaming because he had a nightmare, or because he wants to play.