After 20 years...
TL;DR: I started as sysadmin, thought going back to development would be cool, landed job at dream company and now dream job at dream company!
My IT career started as a computer lab support tech in uni at 17 because that gave me a scholarship so I could afford paying for it. This was in 1997. With the purse reduced by 80% in the following year a colleague at the lab invited me for an internship where I had to help work on their custom build sales/inventory/accounts payable and receivable written parts in VB3 and parts in VB4, manage the MS SQL server 6, migrated from MS Mail to MS Exchange 5, be responsible for all backups and learned how the Internet worked; DNS, NAT, routing and so on.
I had a bad experience with the code, so much so I decided drop from development altogether and started investing in learning Windows NT and Linux/FreeBSD; I was dabbling on Linux since 1995, running a desktop on Red Hat, Debian and Slackware at any given point in time, I later dabbled on Gentoo and Arch but settled on Debian for a while. It seemed quite cool at the time, lots of things changing, from NT 3.51 to NT 4 and later Windows 2000. It was exciting how Linux and FreeBSD, being free, could do almost everything that paid Windows could.
My career then shaped to be a sysadmin/support tech for most of my life. Learning the ins and outs of Cisco routers, Windows printing issues and a quick brush on Novell Netware as well, just for good measure :)
In 2007, 10 years after I started my ride, I joined a North American company as a senior sysadmin. Taking care of the Linux servers, moving application servers from Windows to Linux and taking care, with the team, of the networking equipment across some locations. At that time the 2008 crisis hit and that was when I decided, looking at the office we had in Rio, that development might be in the cards again. I was dealing with many Java developers at this time and it seemed to me that I might have a better chance to stay relevant by transitioning to another role.
Now, a few things worth mentioning here. I have no college degree. I abandoned uni when I was 23, thinking it was sucking my money and not adding much to my background. A decision I’m not still clear if it was good or not since I’ve never seen its fruits being a sysadmin. The bad thing about it is that, in Brazil, every job hangs on the fact that you have a degree. If you don’t, it doesn’t matter what level of experience you have. I was very lucky to be able to get some good jobs without having to lie about it.
I then started learning Java and worked with some colleagues on some web development projects of theirs and started learning about Grails afterwards since they were looking to increase their productivity, so I went along. I learned about the main framework, Struts, which is big in Brazil, Spring, Hibernate and so on. I did a few side projects here and there to learn more about Java and web development in general.
I got lucky and maintained my job as a senior sysadmin, still doing side jobs here and there with friends and colleagues in Java, but the office in Rio was closed so I started working for home. This arrangement lasted 4 years, when, one day my wife and I decided to move abroad. Which made me start looking for positions all over Europe, then I trimmed it down to the UK due to the language. One day I saw it, the company I always to work at but never thought I was good enough, Red Hat. I’ve been a follower of Red Hat since my early dabbling on Linux and, especially, after they filed their IPO. I knew it must be great company, how it could not be? Linux, open source and making money out of it? I was enamoured for many years and here it was, a job position in support. It asked for Tomcat experience, I knew how to start it, deploy some .war and stop it, so, check; Hibernate experience, well, I know how to set it up, create a DAO, use JPA annotations, so, check; Spring experience, I know how to set it up, map some beans, use Spring MVC, so, check; some Linux experience, that was easy!; more than 5 years of Java experience, well, 4 years, close enough, right?, so, check.
That was one point in my life I felt the most confident. I’m a self-learner engineer who, as I always said in all my interviews, “if I don’t know something, give me a computer with Internet, 5 days and I will have an answer for you”. So, what was the catch? I was tired of support, loving development, and, although confident, I didn’t feel I could prove myself as a software developer. I never worked on a big team, only understood the basic principles of agile, Scrum and other methodologies, so how could I be a software engineer at Red Hat?! My wife answered me quite nicely, “get in, then you figure out what you need to do to get here”. So I did. I bit the bullet and applied for the position. After 3 months and some 5 interviews I got the job! I was to start 1.Feb.2013.
Joining I learned about Java EE, JBoss, more Java than I imagined, troubleshooting JBoss, which lead me to learn how to read source code and translate it into possible issues and how to tune the JVM, something I didn’t think it was needed in general, apart from the usual Xms/Xmx settings. I also learned how to chase people to help me understand what I was looking at, part of that had to do with learning how to ask for help, something my Brazilian background taught me to never, ever try or else you are en route to get fired, after all, you need to know everything to do your job. So, support prepared me a lot for what I was to face. I now work on the sustaining engineering team, trying to fix bugs opened by the support team based on customer issues. I still don’t understand 80% of what I read, but I try, I ask around, I try to engage others to help me understand what I’m doing and if what I’m doing is right.