A couple of months ago I celebrated 10 years in the software development industry. I have grown a lot since I first started. I have learned a lot as well. I am going to now share some of what I have learned and experienced over the past 10 years.
Years 1 - 2
My first couple of years in the industry were spent learning the ropes. I do not just mean learning how to write code. I mean learning how to work in the industry. Writing code is only one of the many things a software developer has to do. The company I joined, and am still employed by, was using Perl as its primary language on its user-facing platform. I did not know Perl. Not too many web developers use Perl now, or really ever. The company knew that finding Perl developers would be difficult so they looked for software developers that they knew could learn Perl on the job. I started as a part-time software developer. I was basically an intern, but they only used the intern title with students from one specific college in Michigan so I had the title of "Associate Software Engineer". I was working around 25 hours a week while finishing up my undergraduate degree. I took 15-17 credit hours every single semester so adding 25 hours of additional work was challenging. I worked in this part-time role for my first 6 months. Only being in the office for only 3 days a week meant that I did not get projects of my own. Most of the projects were fairly fast turn-around projects that had initial building lasting anywhere from one day to a few weeks. I mainly helped fix bugs in the projects of experienced, full-time developers. I think in that 6 months I might have spoken to 3 people total. This was a company with a little under 300 employees, almost all in the office. This was the first office job I had ever had. I was 31 years old at the time, so I had worked plenty of other jobs in my life. I worked in fast food, as an assistant manager at a shoe store in a mall (back when malls had shoppers), as a security guard (I sat in a "security" building and signed people in and out), as a lockout specialist (unlocking cars when people locked their keys inside), and as a milkman (delivery milk to stores, not homes). Saying this was a big transition would be an understatement. I did not know how to act in a business setting. I figured I would have to wear a dress shirt and dress pants every day. I showed up for my interview in a nice dress shirt, a tie, and dress pants. While getting a tour of the office I saw people wearing t-shirts and shorts, in the middle of February in Michigan. I felt very uncomfortable and overdressed. The interview was fairly easy. I was asked a couple of technical questions, such as calculating the mean, median, and mode of an array in pseudocode, as well as a few questions to gauge my fit with the team. I think I got lucky in that my interviewer was doing the work of about 3 different people at the time so he was incredibly busy. They liked me, for some reason, and offer me the part-time role. By the time graduation came around, I had a few other offers from some companies, mostly large companies, including one of the Big Three with the blue oval logo. The company I was working part-time for also made me a full-time offer, which kind of surprised me that anyone even knew I existed there. I had a "desk", which was nothing more than a fold-up card table placed against a brick wall. I weighed my career options at the time and my wife and I decided that staying at the company that took a chance on me while still in school was the best move, so I graciously accepted the offer. Once I began working full-time I was able to get my own projects that I would work on from start to finish. The team was incredibly busy, but they were also incredibly helpful. Working part-time on bug fixes for those 6 months while still in school allowed me to hit the ground running though, which was nice. I was finally attending meetings and meeting many, many people at the company. I had no idea what I was doing, but I like to think I hid that well. In reality, everyone probably realized I was a deer in headlights. The next year and a half I spent learning as much about how the company operated as I could. I asked a lot of questions to my fellow developers, but I quickly learned to not ask a question without being able to explain what I had done to try to come up with the solution myself first. The majority of the people I interacted with were very friendly and helpful and always willing to answer my questions. This was a period of extreme growth. I probably learned more in those first 2 years than I did in the following 8.
Years 3 - 5
After about a year and a half at the company, I got my first promotion. I was promoted to "Software Engineer", so I was considered mid-level. I was now considered to be competent enough to work almost completely independently. I was not asking as many questions and I was able to actually start answering questions from new hires that started after me.I had mostly figured out what I was doing and felt comfortable knowing that I could solve almost any problem thrown at me. I also started mentoring new developers. I decided to go for my Master's degree in computer science so I was very busy working full-time and attending classes full-time as well. I was still learning at this time, and to be honest, I am still learning. That is the key, never stop learning.
Years 6 - 7
If you know anything about the software industry you know that spending 5+ years at one company is somewhat rare. I was now considered an "old timer" at the company. I knew 90% of the people that worked at the company, and they knew me. I was beginning to earn a reputation for being able to take on any project, no matter how complex, and figure out how to accomplish what was sold to the client. I received my next two promotions during this time, and they both happened at the exact same time. I was promoted to "Senior Software Engineer, Team Lead". I was still mentoring the less experienced developers and had direct reports of my own. The Perl platform that I was working on had become easy for me. I had done a lot on the platform and was not really challenged much with the code at this point. I would say I grew much more as a leader during this time than as a developer. People knew that if I was assigned one of their projects I would get it done, no matter what obstacles got in the way. I switched teams a couple of times during this period in order to get more experience in different areas with different clients. I was the person that would train all new developers. I also began teaching, part-time, during this time period. I became an adjunct college professor because I love teaching people. I definitely did not do it for the money because it is very, very low paying.
Years 8 - 10
The last few years of my career have been crazy. I am not sure if you know this, but we had a pandemic going on. The pandemic caused a slowdown in business, but that only lasted a few months and then we had a large surge of business. We went on a giant hiring spree. I believe we hired somewhere between 20 and 30 new developers during this time. I was involved in interviewing most of them and was the hiring manager for many. I experienced rapid career growth over the past few years. I went from a team lead to a delivery manager, to a director. These promotions meant I was mostly removed from day-to-day software development duties and most of my days are spent in meetings. I have kept up with the mentoring. I am still teaching as well. The one thing that did not change was that I am still learning. Another thing that did not change is the uncomfortable feeling, just like I felt at the very beginning. The big difference though is that I became comfortable being uncomfortable. I know I am not like most other leaders and instead of trying to be like them, I embrace my differences. Many of the leaders have come from other companies and were hired in as leaders, but I worked my way up at this company. I did the same work that I now ask my team to do. I am not saying that the other leaders did not work their way up, because I know they did, just at different companies. The one thing that helps me stand apart from some of the other leadership is I worked on the exact same projects that my teams are currently working on. I worked with those same project managers and clients as a developer.
What I have learned
- never stop learning
- make connections with people
- change is inevitable so embrace it
- being different is not a bad thing
- being able to wear shorts and a T-shirt to the office is awesome
- never forget where you started
- get shit done
Here is to the next 10 years...