AkitaOnRails, Retrospective 1985-2007

August 12, 2007 · 💬 Join the Discussion
If you're lazy, click here for the TL;DR

Some readers suggested I should do a “self-interview.” Talking about myself feels weird, but false modesty was never my strong suit. So instead of an interview, I went with a retrospective. Nowhere near a complete biography, of course, just a few key points from my last 22 years (before that I couldn’t read properly :-)

It’ll probably be nostalgic for some, which is always nice. For the younger crowd, maybe it shows that a résumé isn’t built from certificates alone. Experience takes time, a lot of time, but quantity of time is not the same as quality. It all comes down to merging what you really want with what you really love. It’s not for everyone, but if you have that instinct, you know what I’m talking about.

The road is long and endless, so never say “I already know everything I need.” You will never know everything you need. Learning is a daily process, hour by hour: a little during work, and a lot more outside of it.

People who know what they’re doing couldn’t care less about what others say or do. You just do what you know (not what you “think”) is the best path. Right and wrong is a coin flip: on average you’ll be right 50% of the time, like everyone else. The “right path” comes from analyzing the facts you have. Learned something new? Redo the analysis and revise the path.

Dogmas are useless. Stay rational and disciplined, and your odds improve. Never close your own doors: be selective about what you learn, but don’t discard options out of prejudice.

Do what you love. It’s a cliché, I know, but it’s the only thing that works. My résumé didn’t start at my first job: I’ve dedicated my whole life to this, for as long as I can remember, and I never had a plan B. You don’t have to be like that, and it doesn’t mean I know a lot. I know plenty of younger people who started later and already know way more than I do.

I told a friend the other day: “we’re all moving targets.” If you have an idol, it’s because they’re something you’d like to become. You run in that direction and, by the time you reach the level you wanted, your idol has already run a few leagues further. And off you go, chasing again.

Again: there’s no recipe, no step-by-step guide. Not everyone can be a painter, a fashion designer, or a journalist. I’m definitely not a good cook, I’ll hardly ever be a decent carpenter, and I’ll certainly never be a musician. Nobody should pick an occupation based solely on what pays best today. And tomorrow?

In 1985 I was inspired for the first time by a comic book: a special Disney edition called, if I recall correctly, The History of Computers. If anyone still has a copy, with the center pull-out and in good condition, I’m interested in buying it! Guided by Gyro Gearloose and Professor Ludwig Von Drake, I met Charles Babbage, Blaise Pascal, Konrad Zuse, and other names I never forgot. I’ve considered myself a “computing archaeologist” ever since, and I keep coming back to the subject through encyclopedias, books, and articles. My dream machine back then was a Unitron, the Brazilian clone of the original Macintosh, freshly released.

In 1987 my cousin had an MSX Hotbit and I wanted to play his games. I learned a bit of Basic to load the cassette games. My favorite reading was the magazine Micro Sistemas, and Assembly was still out of reach for me. My dream machine was a CP-500 that an acquaintance owned. I tried reading an electronics book, but it was too much for me: I was never good at that. I was only starting to grasp what “expanding RAM” meant.

There were lots of cool micros back then. Today everyone admires the new phones in store windows; in my day I’d stand in front of display cases staring at Apple II clones, Gradiente’s MSX, the Sinclair, the TK-90X, the CP-400. They were too expensive for me to own, so all I could do was imagine those machines while reading their spec sheets.

In 1988 I took a GW-Basic course. I had no computer, but I learned to program on paper. I also got my first taste of gems of the era like Wordstar and Lotus 1-2-3. I think that’s around when I started getting addicted to video games: I already had an Intellivision, and I finally got a Master System!

In 1989 I got my first PC-XT and learned dBase III and Clipper Summer 87. I had two uncles who had been programming since Autumn 86. That’s when I wrote my first booklet, which had nothing original about it: I copied text from books and encyclopedias simply because I enjoyed practicing typing. Thanks to that, today I hit 400 keystrokes per minute, plus a few strange hand pains :-) Before the XT, my hobby was copying text on a trusty old Olivetti; with a computer keyboard, much lighter, my fingers were grateful. Since the previous year, my favorite reading had been the beloved Micro Sistemas magazine, one of the few quality options at the time.

In 1990 I did odd jobs with my uncle, who was a systems analyst. I built several little systems in Clipper 5.0 and FoxPro, the good old days of Ashton-Tate and Nantucket. I created my own text editor in Clipper, but I was no match for the good old Norton Editor paired with Sidekick. There were few language options back then, and you could spend months on a single one. Unfortunately I never got very interested in low-level languages like Assembly and C: I read a few books but never practiced. Big mistake.

In 1991 I started messing around with BBSes with my neighbor. I was introduced to the power of Pascal, still just watching from afar. Good times of FidoNet, PCBoard, Remote Access, Warez, blue boxes, and the like. Long before the Orkut and MSN era, I was already burning hours on message boards. My dream was to get Windows 3.1 running on my XT with its green CGA monitor.

In 1993 I worked as a game presenter at Brasoft Games during school break. It was interesting because I got access to “MPCs,” the multimedia PCs with CD-ROM and sound card, optional and expensive extras at the time. I’ll never forget the LucasArts gems, like Day of the Tentacle. Nothing to do with programming, but it mattered for my sense of aesthetics and possibility. Masterpieces of the era? Wolfenstein and Doom, the originals, of course.

In 1993 (or was it 1992?) I liked to draw. I dabbled as an illustrator until around 1998, when I gave it up for good. That year I wanted to do illustrations for a games magazine (did I mention I was addicted?). I took my portfolio to the editor, and he suggested I learn to illustrate on a computer, since all I had was freehand drawings. I went home and that same day bought a book on CorelDraw! 3.0, a brick of a book from the Berkeley publishing house that I still remember. A few weeks later I came back with a brand-new portfolio, all done in CorelDraw!. I illustrated some six issues, wrote one article, contributed here and there, and quit: it wasn’t my calling. But the notions of Bezier curves and vectorization would come in handy when I later picked up Flash.

In 1994 I took my only break from hobbies and computers: entrance exam year. I studied at least 8 hours a day, 7 days a week. I set goals, planned, and passed. I never had a second option, so passing on the first try was all I had: USP and Unicamp, at minimum, were mandatory. That was the year’s big lesson: set goals, draw the plan, follow each step while correcting course along the way, but don’t stop.

In 1995 I entered USP. In the first semester I had to turn in work in Turbo Pascal, and I built my first framework, a graphics toolkit for Pascal, plus some fractal tricks. I finally understood the importance of the previous decades of computing and became a fan of Donald Knuth and Niklaus Wirth.

I got my first internet account, with one catch: terminal-only Unix access. I had to learn Unix to use the internet. Gopher, Lynx, Pine, good times. It was also the first time I confronted a major deficiency: my terrible English. When I saw some classmates were good at it, I decided I couldn’t fall behind (and that’s how the article Be Arrogant! came to be). It was a pre-Google era: I used the early versions of Yahoo!, WebCrawler, even Amazon (which was ugly back then).

This was also the year I waited most eagerly for a piece of software: Windows 95. I read everything I could find about it and never dissected an operating system that thoroughly; in fact, since DOS 3.1 I’d been exploring every corner and back alley. I was also excited about the brand-new OS/2 Warp, some 20 3.5" floppies, if I recall correctly! Running Windows 3.1 virtualized inside OS/2 was amazing, the same feeling I got years later running Windows XP virtualized on my OS X for the first time. Those topics are what finally got me interested in systems architecture and the evolution of operating systems.

In 1996 I did a side gig on a little system for Windows 3.1 (I know, I know). I learned Delphi 1.0, released a year earlier. I was already a Turbo Pascal fan, so Object Pascal came naturally: my first step toward the “fad” of the era, so-called Object-Oriented Programming. UML showed up around that time, but before it I was already poking around the original methodologies: Booch, Objectory, Fusion. I always found the subject kind of boring.

I also started learning Java 1.0, after downloading the betas from Unicamp’s FTP. But AWT didn’t seem good enough, so I stuck with Delphi. Strange to think about it today: back then Borland looked so big.

I built a few personal sites about my hobbies. Yep, I was once an anime and manga fanatic, and I made my first “successful” website, quotes very much intended, because I stirred controversy even in my hobbies. There was nothing in Portuguese on the subject, so I translated manga and subtitled anime. I’ve known Japanese since I was a kid, which helped, and translation is nothing new for me :-) Building personal sites, I dissected every trick of the era using only HTML, JavaScript, and lots of Photoshop. I also played around quite a bit with Windows for Workgroups networks and OS/2 1.3.

In 1997 I started working at a multimedia production house. I leveled up in web design, got to work with Macs (on the beloved System 8), and had to learn Director 5/Lingo and Flash 2/ActionScript. Building interactive applications in Director on a Pentium 200 MHz with 32 MB of RAM wasn’t exactly comfortable, but it was fun. I lost count of how many times I slept on the office floor waiting for files to burn onto Zip drives, or CDs writing at 2x.

By then Linux was already quite famous. I made my first attempts to level up my Unix with a RedHat 4.2, whose little blue box with the red logo I’ll never forget. A few years earlier I’d tried Slackware 1.0, but gave up after frustrated installs, incompatible hardware, and driver problems.

In 1998 I had my first contact with server-side: Microsoft Index Server, SQL Server 6.5, and ASP. It wasn’t much fun, but at least I learned a lot of SQL. Newsgroups were always my safety net, and the DejaNews site was a real find: an indexed archive of Usenet, now known as Google Groups. My use of that kind of service dropped a lot since then. Did the quality drop with it?

In 1999 I had to build sites in PHP and a few Perl scripts for Apache. I learned regular expressions the hard way: I should have known Regex already, so I learned it once and for all, and it makes a huge difference to this day. I had to level up on Linux and the whole toolchain around it, and fortunately the era’s RedHat 7 was already quite good. I ran all sorts of experiments with protocols and understood why knowing them matters. I don’t remember how or why, but that’s when I became a devoted Slashdot reader, my daily reading, religiously, ever since.

In 2000 I had to build a site in Zope/Python. I always figured that system, with its ZODB, Products, and DTML concepts, had the potential to grow a lot. It grew, but not the way I imagined. Today I think Plone is nice, but with the feeling that it missed its market window. It was my first contact with Python and the first time I heard of a language called Ruby, which I paid no attention to at the time.

In 2001 I had to build several sites and systems with ASP and other Microsoft technologies, like VB and DCOM (you have to respect Don Box). Dealing with limitations is always a great way to grow: when you have a lot, you waste; when you have little, you learn to optimize. Generating DCOM components with VBScript was fun. I did a lot of “Ajax,” except back then it had no such name (MSXML and DHTML already existed), and lots of “Web Services,” which didn’t have that name yet either (HTTP and XML already existed, of course). Amazing how half a decade later these things come back with new names and everyone thinks they’re novelties.

.NET looked very promising in Beta 1, and I remember building a framework for ASP using ASP.NET concepts. It may seem odd to jump from the previous year’s Linux world back to Windows Server. I never understood why, to like one thing, you “have to” trash the other. My job has always been just one: solve problems within the constraints I’m given, regardless of technology or platform. Period.

In 2002 I had to integrate an ASP system with an SAP R/3 one, so I had to learn ABAP. The book “Learn ABAP/4 in 24 Hours” took, in fact, 48 hours. Knowing the concepts of DCOM and CORBA paid off: I already knew what RFC was and how to handle a distributed environment. This is where my “career” as a hired gun (also known as a “consultant”) begins: lots of work, little added value. My learning had ups and downs in the following years, and my pace slowed until 2006.

In 2003 I had to build systems on SAP Portal and Java, and learned things like Hibernate and Struts. With no access to SAP’s Java server source code, all I could do was decompile the classes and explore. I also had to make a cell phone talk to SAP systems, hand-coding the protocols. After that bit-scrubbing exercise, I never forgot the difference between Big Endian and Little Endian, nor how annoying the iDEN protocol is to deal with. I handled some cryptography and reinforced my notions of security, encryption, and authentication. You can never be too paranoid.

In 2004 I needed a version control system and learned Subversion. I never had a good feeling about CVS. Subversion was still beta, full of bugs, and I even had to patch TortoiseSVN to work with Visual Studio .NET, but I felt SVN would be big. Fortunately, I was right. I think it was the year I wrote the most Java: I hunted every kind of bug in the freshly launched SAP Portal, built a productive framework on top of the lousy one that shipped with the product, and did a lot of integration with R/3 systems.

In 2005 I had to integrate telecommunications systems and learned a bit of Tuxedo/C++. ESB, SOA, and similar acronyms proved to be vendor bullshit, as I always said. Communication and integration were never novelties: renaming things to sound new doesn’t help. EAI is one of the oldest things in the world; integration existed since the second computer was built. Around that time I was poking at the project management world, and someone convinced me to get PMP certified. Waste of time: I got certified but never liked the method. I spent some time studying CMMi and other methodologies and lost interest fast. I already know I have no calling for too much talk.

In 2006 I had to deal with more telecommunications systems, now with webMethods. More “SOA,” more “XML,” no problem. Why does everyone struggle to integrate hybrid systems? Whoever knows SAP doesn’t know webMethods, whoever knows webMethods knows little Java, whoever knows Java doesn’t know the other two. It’s all lack of will.

In parallel, Rails entered the picture, and off I went to write a book. Amazing how the thing exploded abroad while nobody here paid it proper attention. It’s the old chicken-and-egg problem: programmers won’t learn because there’s no market, the market isn’t interested because there are no programmers. One side has to move first. Americans are experts at first steps; we’re doctors at waiting for time to pass. But I never paid attention to the others. A month and a half of writing nearly drove me insane; sleeping 4 hours a night is not normal. The book came out, the blog is here and, most importantly, I learned a lot. Luckily more people are getting interested in the subject. Maybe soon we’ll cross the tipping point between the number of professionals and market interest.

Finally, in 2007 I was fed up with consulting and with clients. Turning a blind eye to idiotic things was never my style. I walked away from those who never truly supported me and decided to fly solo. If you ever hear the word “Balance,” run! I mean it! But good coincidences do happen: after almost a year and a half talking about Rails, I finally got to work with it full time.

And here’s the thing: what got me hired was the result of the previous 22 years. The Rails year weighed little.

I hope this tickled everyone’s curiosity. The biographies of the people I’ve interviewed far surpass mine, and I’ve met plenty of people with much better stories. Mine, for now, is reasonable.

As I said before, I’m a moving target too. Tomorrow I’ll be writing the 2007, 2008, 2009 retrospective. Next year I’ll know many things I don’t know today, and not by accident: everybody learns something new, unless they’re a vegetable. I’m talking about a conscious effort to learn.

I won’t stagnate in Ruby, as much as I like it. It doesn’t matter whether the novelty comes from the open source world, from Apple, from IBM, or from Microsoft: we have to watch everything. A cook with 10 years in the kitchen who only knows how to make the same half-dozen dishes is an automaton, not a master. Ten or twenty years make no difference. And automatons are easily replaced.