I’d like to share with you how I got into programming in this series of posts. I never went to university to study information technology, but I found a way to get around it. Please leave a remark below if you enjoy the series and would like to see a book made from it.
At the end of 2006, I found myself at a fork in the road in my life. My dreams of becoming a secondary school linguistics teacher had evaporated in an instant, as a series of events conspired to prevent me from continuing my education.
My wife was working long hours for a measly $160 (USD) per month in my hometown of Durazno, Uruguay. That’s $1,920 each year. We had given up time together so that I could study to become a teacher and earn a better career because we hoped for a better future.
The trouble with dreams is that they usually evaporate as soon as you wake up, and life’s alarm clock had just gone off.
I returned to my hometown to seek out my future steps when my job path abruptly veered off course. Needless to say, I was upset about how things were going, and our living arrangement just served to exacerbate my feelings. It was lovely to see my wife again, although the circumstances were difficult.
We were also sharing a house with my wife’s aunt, which limited our privacy to our bedroom and made us feel like we were overstaying our welcome.
We tried selling handmade pasta on the streets to supplement our income. I’d go from house to house gathering orders for the weekend. “Hello, would you want to order ravioli for Sunday dinner?” I’d go around asking people. “Yes, they’re prepared from scratch.” Just give us a day and time, and we’ll bring them to you.”
Then, after customers requested them, we spent our weekends preparing 2,000 ravioli, only to walk away with 500 pesos in our pockets (about $20 after expenses).
It was a depressing circumstance that left us feeling helpless. My wife would work hard throughout the week and then come home to help me make ravioli on weekends. She couldn’t even take a day off during the weekend. She pleaded with me to stop selling ravioli, even if it meant we’d be unable to pay our expenses. I eventually agreed, but it meant that I’d have to look for work, which wasn’t easy in our little town. Anxiety and despair had begun to creep in.
One night, I was talking with a friend who was a computer engineering student at Montevideo’s university. He told me about the many work prospects available in the capital city, all of which came with incomes that were the stuff of dreams for someone from the rural. “In Montevideo, there’s this gigantic company called Live Interactive,” he explained. “They’re usually on the lookout for programmers; perhaps you could apply there.” They are really highly compensated.”
He cited a salary that was around three times what we were earning at the time, and I couldn’t help but think of all the things we could do with that kind of money. We wouldn’t have to worry about putting food on the table any longer. We’d finally be able to afford our own internet connection, good clothing and shoes, and even a washing machine!
Not only that, but I had prior computer experience. I enjoyed working with them since they tapped into my problem-solving abilities. Programming reminded me of deciphering a code or solving a difficult puzzle, but it was also enjoyable. Furthermore, I regarded programming as a vocation with a lot of room for advancement.
However, there remained one minor snag: in order to work as a computer programmer, one must be able to programme computers. Me? I could probably install Linux on my own, but that was about it.
How can you get a job as a computer programmer if you’ve never programmed before and don’t have a university degree to back up your claims? How can you learn to programme if you don’t have access to the internet at home, no mentors to connect with, and no programming books? That was my issue in 2006, and this is the narrative of how I dealt with it.
The Early Days
Since I was a teenager, I’ve been playing with computers, mostly when visiting a friend who had one. While we frequently used the computer to play games, I wasn’t really fond of them. Why? A friend’s father let us use his ZX Spectrum computer when I was in high school. He had a large stack of cassettes with a variety of games for it, and we could play as much as we wanted, but one day he showed me something that blew my mind: anyone could programme the computer to develop their own games!
He showed me various BASIC methods, such as how to use the RAND function to produce random numbers. I was blown away. At that time, I learned computers were more than just a glorified Nintendo with a keyboard: you could order them to do fascinating things like create lines with trigonometric functions and then paint them with random colours! By passing different frequencies to BEEP, you may even generate music with them. In fact, I’m sure my mother enjoyed it when I brought the Spectrum home and spent a full afternoon on my TV making various beep sounds.
How can you get a job as a computer programmer if you’ve never programmed before and don’t have a university degree to back up your claims?
Later in my adolescence, I continued to spend time with friends who owned computers, and we naturally played games on them. Meanwhile, I picked up a few operating system tips from my more tech-savvy acquaintances, mostly for MS-DOS.
Every now and then, we’d try our hand at BASIC programming by copying code snippets from old computer publications character by character. They appeared to us to be magical spells or technological incantations. Trying to change the text messages that a game would display for certain situations was one of our favorite things to do. We felt we were the best hackers in the world!
I persuaded my grandfather to purchase me a computer in the early 2000s: a Pentium MMX with 32MB of RAM! What a beast! I used a SUSE CD that was free with an Argentinean computer magazine to install Linux for the first time on it. I spent a lot of time on that computer, experimenting with different Linux distributions, learning the command line, and so on, but I never did any programming.
Looking back, I’m not sure why I wasn’t learning C programming — or any form of programming for that matter — back then. Because I didn’t have access to a handbook, a buddy provided me the C programming bible by Kernighan and Ritchie. However, after reading a few examples, it didn’t pique my interest because I couldn’t see how what it covered would be relevant to me. In any case, playing with Linux was the extent of my computer experience at the time.
I took a few little jobs after that, joined a rock ‘n’ roll band, and attempted to become a linguistics teacher, all while getting married and moving across the nation with my wife.
Fast forward to November 2006, and I was in desperate need of a way to make myself hireable by a software firm. I needed to establish myself as a reliable computer programmer.
Time for Some Goals
If I wanted to get recruited, the first thing I needed to do was assess my programming abilities. I needed to be honest with myself in order to determine where I should concentrate my efforts.
I knew a little about ActionScript for Flash MX and the very beginnings of PHP programming at the time. I had started learning such technologies as a pastime earlier that year. I’d also begun a side project to learn programming in the hopes of turning it into a second source of income.
I had the idea of creating a digital map of my community where users could drop pins indicating the location of businesses, shops, and noteworthy places. In exchange for appearing in my internet map application, I would charge those businesses money.
Of sure, I understand your viewpoint. You say, “That’s just Google Maps.” Yes, but Google Maps only knew about my hometown in 2006 since it was traversed by a major national route. Given this, I thought my map would be a nice idea. In addition, I believed that this project would be an excellent method to demonstrate my abilities to a potential employer. I knew exactly what I wanted to build; all I had to do now was go to work and make it happen.
So, towards the end of 2006, I set a target for myself: by February 2007, I needed to have a working map application concept. This required a Flash frontend to be served by a PHP backend, with data persistence provided by MySQL. The technologies I just mentioned may not seem particularly relevant today, but the point is that I needed to write down every detail of my plan so I’d know which issues to address first, because time was ticking: every day that passed was another day where my wife was overworked, working overtime to put food on our table.
Furthermore, I had to demonstrate to potential employers that I could program in those specific technologies in order to even be considered for a programming job, as that was part of the job description. Naturally, I had nothing on my resume that connected to these talents, so I had to start from scratch, and my app would be the presentation of my programming skills.
The aim was to secure an interview at the company my friend had mentioned before, and then hopefully gain a job there thanks to the combination of my abilities and my app. Even back then, I understood the value of defining specific goals for yourself in order to attain your objectives.
Learning project: a Map Application
Aleph Maps was the name of the map program I designed, which was inspired by Jorge Luis Borges’ 1949 tale “El Aleph,” which describes a place in the world where everything — past, present, and future — is encompassed. Isn’t that a bit ambitious? And, in order to make the notion a reality, I’d have to learn how to code web apps.
A potential web developer has significant difficulty if he or she does not have access to the internet at home. When I first started, ADSL broadband uptake was essentially non-existent, with businesses and possibly rich households being the only ones who could afford it. Connecting to the internet for the average family meant dialing into a modem and paying hefty charges for a poor internet experience. I couldn’t afford it, so I had to go around bothering acquaintances every time I needed to obtain online instruction on how to program in PHP.
So, despite having a computer and a desire to study, I didn’t have simple or consistent access to knowledge on how to accomplish it. But I was dead intent on getting that job, and I knew that no obstacles would stop me from learning PHP. You don’t have time to be desperate when you don’t have time to waste; instead, you must concentrate on finding solutions.
Meanwhile, because of the shortage of internet connection in the city, cyber cafes began to spring up, charging roughly half a dollar for an hour of surfing. This seemed like a better option than harassing my buddies all the time. But it also meant scraping together an extra 50 cents and a couple of floppy discs to get to a cyber café, get the information I needed, copy it to one of those diskettes, and transfer it to my computer at home. Data was frequently corrupted during the process of extracting information from floppy discs.
Consider how enraged and upset I was: I had wasted 50 cents on a trip to an internet cafe. A dollar and a half! This may not seem like much, but a burger or a bottle of beer cost a dollar where we lived at the time. It was a significant sum of money for us: it meant a daily bottle of milk or a loaf of bread.
My daily routine consisted of attempting to solve problem A in order to reach point B. The tasks were sometimes simple, and I felt like I was making good progress. On other days, it seemed as though I was going nowhere. Assume I needed to add a feature like “insert new data into the database.” This entailed documenting all of the challenges I faced along the way — from developing a SQL INSERT statement to executing it using PHP — and then integrating everything into the app.
Each of these activities was on my “shopping list” for the internet cafe on a daily basis. I’d pack a couple of floppy discs and go online to look for blog entries, tutorials, and guidelines to assist me handle the problems on my to-do list. After that, it was time to store them on my diskettes and return home, hoping that the data had been correctly saved and would be accessible on my computer.
Because of the unknown, the bike ride back would be filled with the worst anxiousness imaginable. “What if the data isn’t there at all?” says the narrator. I was perplexed. “What if the bike shakes too much and corrupts the data?” I won’t have any more money till tomorrow, so this better pay off when I come home.”
I was dead intent on getting that job, and I knew that no amount of obstacles would stop me from learning PHP. You don’t have time to be desperate when you don’t have time to waste; instead, you must concentrate on finding solutions.
To say the least, this wasn’t feasible. I’d use the information I’d brought back to assist me finish the task at hand once I got home, but after that was done, I didn’t have the knowledge to move on to the next stage. This meant I was stuck at home, pondering a dilemma, and had to wait until the next day, when I could wring another 50 cents from our budget to go to the cafe and repeat the routine. Though it appeared to be my only alternative at the time, I eventually had to confess to myself that it was time for a change. I required a single resource that covered the majority of the knowledge on how to develop a web application with PHP and Flash MX, as well as tips detailing how to execute even the most basic tasks. Books, not the internet!
It may appear to be a no-brainer, but for someone in my circumstance, the types of literature I required were not always readily available. The issue is that when you’re a member of a marginalized group, getting access to books is difficult. The closest thing to a programming book you’d find at the public library was an obsolete computer repair handbook — may be a dusty MS-DOS guide, or if you were lucky, a BASIC or Delphi book — but not much else.
At the very least, books could be purchased, right? Not at all.
Technical publications are rarely found on the shelves of bookstores in Uruguay’s remote villages, and my town was no exception. Add in the fact that the majority of tech books — especially those on cutting-edge technology — are written in English, and you can forget about the local bookstore. Finally, I was left with only one choice: Amazon.
It wasn’t easy, but neither was it simple. To buy books on Amazon, you’ll need a small piece of plastic known as a credit card, but to acquire one, you’ll need a strong credit history, which most people don’t have. But in my case, I was in an entirely different world: we had to pay cash for everything we bought. We didn’t have the funds or the financial assurance to get into a credit agreement.
For us, it worked like this: if we wanted to buy anything that cost more than our monthly income, we either saved month after month until we had enough money, or we asked a family member to buy it for us and then worked to pay them back later.
Even if we’d been able to buy books on Amazon, we hadn’t considered that shipping from the United States to Uruguay would cost about as much as the book, not to mention that it would take a month to arrive.
But in my case, I was in an entirely different world: we had to pay cash for everything we bought. We didn’t have the funds or the financial assurance to get into a credit agreement.
Sometimes the answer to these kinds of issues is closer than we believe. We eventually had to rely on family members for assistance. My wife’s aunt had been living in the United States for quite some time, so we felt it was worth a chance to ask her to buy me a couple of programming books. So, on one of my internet forays, I wrote her an email describing my predicament, pushed submit, and crossed my fingers, and prayed to every god out there that she would assist us. I had a new email in my inbox after a few days. “Tell me which books you need, and I’ll order them from Amazon,” she said, straight to the point. After some investigation, I decided to request the Flash MX Bible as well as the PHP 5 and MySQL Bibles.
In the weeks that followed, those two books proved to be extremely useful. They were both so comprehensive that I was able to make steady progress without having to go to the internet cafe on a regular basis to look up missing material. I was finally getting a handle on what I needed to know in order to construct my maps application. It was finally time to settle down in front of my computer and get to work, now that I had all of the information I needed.
I hope you liked this Article.