These days, I’m living in the great city of San Francisco. I’ve got a job that I love, and one that I’ve dreamt of having for a long time. Everything seems easy now, but it wasn’t always like this.
How it all started
I was born in San Pedro Sula, a small town in the northwest corner of Honduras. I started programming when I was 12 years old. It all began with BASIC. One day, I was playing a videogame, and it crashed. When I saw a screen full of error codes and messages, I got curious—so I started learning some BASIC commands, which eventually led to buying some programming books on Clipper, Turbo Pascal, C, C++, etc. It was great. I had all the time in the world to spend coding up whatever I wanted: no time constraints (besides school, which wasn’t quite as demanding as a full-time job) or adult responsibilities.
Several years later, at age 15, my father was having trouble with some junky accounting software. I told him that I could make a better version—without really understanding what I was really getting into (I had never even opened a SQL database). So I bought some more books and got to work. (Note: This was at the time when the Internet wasn’t as prevalent as it is today: I was living in a third-world country, and Internet only arrived around the end of 1997, 5 years after I had started programming.)
Dreams and ambitions
I remember saying to myself: “I want to be a computer engineer”. Of course, I had no idea exactly what that would encompass, but I knew that I liked computers (I’m talking about those old square, green monitor, slow PCs with DOS—awful, of course, now that we have all these shiny new operating systems.)
So, as a naïve twenty-something, I decided I wanted to immigrate to the US—of course, that’s a long and rocky road.
I remember very clearly that on my second or third trip to the US (we used to come for vacations), I decided that I wanted to live there. Everything was so advanced! Of course, today, with globalization and the Internet, the differences aren’t quite as vast, but gaps in growth and advancement can still be seen through infrastructure development, political instability, crime rates, etc.
So, as a naïve twenty-something, I decided I wanted to immigrate to the US—of course, that’s a long and rocky road.
At the time, my father ran an accounting firm, and they had begun running into issues with their accounting software. The developer was stubborn and unwilling to help out, so my father started looking for alternatives. He wanted to get me up to speed as a programmer, so he went to the local university—the only place where they sold advanced programming books—and loaded up on resources. It was a new world to me: I had one of those new (at the time) green monitor PCs with a 5 MHz processor, 256kb memory, and 10mb hard disc space. It used those old mechanical discs, so you could hear everything the hard disc was processing. The keyboard was mechanical and the sound of each keystroke was pleasant to hear. Fast-forward 10 years and I’m still working on the same accounting software; now, however, I was selling it to customers, with a Windows interface, a SQL database, and, Internet connectivity.
At that time, I decided to drop out of school and start my own company. I had been working with my father, in a way: we split the earnings on the accounting software earning (although it was my idea and execution, he invested a lot of time teaching me accounting). So we parted ways: he kept selling the current version of the software and I went off to create a new one. But as I would shortly find out, the software development business in Honduras is no walk in the park: customers don’t want to pay for your services, and they always see software development as a relatively easy task given that it doesn’t require working with a tangible product; often, they don’t perceive the value in the software as it doesn’t create immediate revenue, making it even more difficult to sell.
On the business side, I’d hired some of the best undergraduates around (whom I found by returning to college myself). But over time, I began to wear too many hats: CEO, accountant, HR Rep, Customer Service & Support, Project Manager, and (my favorite) Developer. I really just wanted to code, but it became too difficult as all these hats wore down on me. Eventually, we ran into problems as our customers weren’t paying on time and we struggled to find new projects: when you have the best talent around, they want to get paid well, and we were paying well; but our customers weren’t responding as we’d expected. Plus, living in a third-world country had deterred any investor interest. I should have foreseen this and pursued another business model, but I was too busy juggling all my roles. Ultimately, the company went broke, and I was left with a ton of debt, angry employees, and a sour taste in my mouth. I had to start again from square one.
The iPhone SDK
150k paid app downloads later, I was proven correct.
What matters most is how we rise up again in the face of defeat, and how we learn from our mistakes. It’s daunting to start again, to re-think everything, but that’s what I had to do. My wife helped me through these difficult times and she pushed me to do things I thought I wasn’t capable of. So I began working on my accounting software again, but without any money for marketing, it was too difficult to promote. Income was scarce, and I needed to sustain my family. I had to shift gears. Around the same time, Apple introduced the iPhone SDK. It sounded like a risky new platform to me; plus, I was new to the Mac itself. (My transition to the Mac started with the iPhone and a Hackintosh, which let me taste OS X without shelling out on an expensive machine.) Some of my friends laughed and totally ignored me when I said I was going to develop for the iPhone; but I truly believed that there was money to be made in the App Store. 150k paid app downloads later, I was proven correct; although, of course, those figures alone don’t tell the whole story: App Store economics are complex, and you really need to invest in your product and find customers to create long-term value. For this, you need a team. So even though my app was doing well, it wasn’t sustainable (from a business standpoint) to continue developing on my own. Regardless, I had proven what I could do—so, one day, I woke up and said to myself that I would finally immigrate to the US.
As I found out, immigrating to the US was no easy task. Probably the simplest route is to get a Green Card through a family member, but my closest option was my brother, who was born in the US; however, he lived with us in Honduras and couldn’t petition for anyone since he wasn’t working at the time. And even if he could, the process would take as long as 15 years (Note: sibling relationships have least preference for family-member Green Card sponsorship). My solution was to create a US company. I got a friend to invest and we began creating iPhone and iPad games. On paper, everything looked great; but of course, App Store economics would prove us wrong. Soon, we needed more money; my friend hadn’t anticipated that. In the end, we published one app (another was under development, but was never finalized due to funding issues). Again, things looked bleak. I decided to pursue what I thought was my last resource: work for a US company.
It’s tough to get hired by a US company from overseas. I applied to several positions, but their first problem was that I required relocation: they would have to petition and sponsor me through a work visa. The process was expensive in terms of time (up to a year, if no visa is available at the time) and money (i.e., legal fees). So instead, I began looking for work through an online freelancing site. In theory, it’s a good service. But first, you need to start building trust—which is tough. There are also hoards of developers that charge lower than average just to get noticed; because of this, it’s difficult to get paid well. I ended up doing just one project through the site, worth 8 hours of work.
Later, I was contacted by Toptal with what sounded like a pretty good opportunity: they hire great developers and connect them with customers. Plus, I could work from home, and for a US company. I’d appeared on their radar through my work in the App Store, but I still had to pass a strict vetting process, doing everything from reading comprehension to programming trivia, from algorithm optimizations to timed coding sessions. Most memorable was my final interview, which included discussing one of my projects and walking a Toptal engineer through some of my code to prove that it was really mine.
After Toptal accepted me into their network of developers, I was put on a waitlist. Once a customer shows interest in a particular developer, the customer will interview that candidate (as with any normal job interview) to make sure that they’re a good fit. Before my first interview, I was pretty nervous. It started off with the customer explaining what was expected of me, as well as the overall project, and asking questions all the time to see if I understood everything. As the interview progressed, things weren’t going quite as well as I’d hoped, as the questions became more specific and technical. They ended up going with someone else. In hindsight, it was great that they didn’t want me: one week later, I interviewed with what would eventually become my full-time employer.
I prepared harder for the next interview, which went as well as I could’ve hoped: we spoke more about my experience as a developer, and the company got familiar with my approach to problem solving. Three days later, I had a signed contract and began working for this new customer via Toptal.
I worked for Life360 through Toptal for at least 9 months. Their flagship product is a family locator mobile app, but initially I was working alone on a couple of side-projects: first, an earthquake alert app; and second, a police scanner. For a few months, my workflow mostly consisted of: receiving high-level requirements from Life360, sending back mock-ups and questions, and integrating their feedback into these apps, iterating on this loop a few times. I was in contact with a designer and a couple of Life360 employees (the company only had five or six at the time), but I had a lot of autonomy. It was liberating to work from home: I didn’t have to commute, and I’d created a distraction-free environment.
I soon found myself integrated deeper and deeper into the team—I had proved my worth, so-to-speak, with these two initial projects. By December, I was asked if I would like to join the team full-time in San Francisco—I eagerly agreed, and they began the paperwork. By January, I was attending daily scrum meetings (virtually, as I was still in Honduras), describing my work from the previous day and my todos for the upcoming. My workflow became more organized, and I became more engaged with the company.
This was a dream come true: I’d done great work for a US company, and I was now on my way to relocating—but I still had several obstacles to overcome. Firstly, I had never finished my university degree. While not strictly necessary for working at a tech company these days, you do indeed need a bachelor’s degree to qualify for an H-1B visa. So I had to finish my degree; this required a six-month commitment to a large-scale project, which I had just enough time to complete.
While not strictly necessary for working at a tech company these days, you do indeed need a bachelor’s degree to qualify for an H-1B visa.
The lawyer filed the paperwork on April 1st, the day the H-1B visa process opens up (at time of submission, he left the diploma as ‘pending’, since the H-1B visa are limited and they could send in the documentation later). I finished my project on time, attended my graduation ceremony, and received a diploma.
From that point onward, above all, the company that hires you must be very open, and very patient. The visa application process begins in April; if you opt for the premium processing option, you’ll get your result from the USCIS in two weeks. After that, you still need to go through an interview process, at which point you can still be denied a visa; but if everything goes well, you can enter the United States after October 1st—six months after the application date, and not before. This means that you cannot work for that company until you actually get the H-1B visa, which can be a problem: the company needs to figure out how to continue working remotely while they wait for the visa to become active. In my case, the company decided to contract me as a freelance developer, billed my hours as professional services, and did not break any immigration and labor laws.
I flew to San Francisco on October 1st, 2012. The goal that I’d fostered from as early as I can remember was finally complete.