This is the second installment of My Crusade for Agility, if you missed it check out Part One first. As a quick recap, I went through college, not agile, I worked for a few years as a COBOL developer, not agile, then I moved to Java and despite all the new shiny tools I realized...still not agile.
So what is "agile" and why was I looking everywhere for it? Good question. At the time, I didn't know what I was looking for, I just knew that something wasn't right. Something with the way I was doing my job. I felt like I was writing good code, but it seemed to always end up becoming a lot of work to maintain. I didn't have any tests of any kind, I was spending a majority of my time in meetings, I was putting in all kinds of extra hours trying to make up all of the time I had spent in meetings, code reviews were getting put off until "later" (which never came), I was being pulled in tons of different directions working on multiple projects at the same time, and there was an overwhelming amount of work to do. Agile is what I wanted, I just didn't know it existed at the time.
I tried to implement some more agile practices, but I didn't really know what I was doing enough to sell anyone on it. After a few more years as a Java developer another opportunity presented itself with another (much smaller) company and I took it. There were a lot of reasons for me to move to a new employer, among those: my prior employer had been a very large company. One of the cons on working for a large company is that change is hard to implement, there is a lot of red tape and politics involved. I had a plenty of good things going for me, I had my co-worker's and customer's trust, I had a fair amount of influence as far as technology related decisions, but I was constantly wondering what if...
What if I didn't have to answer to corporate? What if my team was all Agile all the time? What if my team could use the right technology for the job and not have to conform to the corporate standards? What if I could deploy my own code, or change my own database, or have root access to a server? What if I could control my own professional destiny? I asked myself these questions and I didn't really have an answer, because I'd never really experienced any of them. Part of what appealed to me about my new employer is that my interviewer had mentioned how the project I would be working on was on a small team, who had their own server, who was using an operating system different than the rest of the company, and a different programming language, and a different database, and a different application server... I couldn't believe the freedom. When I inquired into why they had decided to go a different direction for this project than the rest of the company the answer boiled down to "because we felt like it". Major selling point.
That concludes Part 2 of My Crusade for Agility. Tune again next time for Part 3 to see how my transition from a very large to a much smaller employer changed everything more than I could have ever imagined.