Since landing my first programming job when I was a junior in high school until now, I recently realized that I've now worked at 10 different companies, including my current employer. I thought I'd take some time to reflect on lessons learned from each of the places I've worked at (from oldest to most recent):
Strategic Data & Telecom
Give someone a chance: I was a 16 year old high school student who knew a few things about computers and could write code in BASIC but was a very ordinary student. As someone who is now responsible for making hires, it somewhat blows my mind to think that a legitimate for-profit company took a chance on an ordinary high school kid like me and invested in me. Between me and this company I'm certain I got the (much) better end of the deal. They gave me a chance and not only did I gain valuable skills and experience, I'm convinced it gave me a huge edge when it came to my ability to land my next few gigs afterwards. IMO relevant work experience is the single most important asset when you're an entry-level person in your field.
Be patient with those who need your help: Taking technical support calls was a big part of my job while working at this local ISP. During my time with the company I talked to a lot of customers who really very desperately needed my help with getting connected to the internet. This was back in the late 90s when everyone was on either Windows 95 or 98 and being on the internet was still sort of a new thing on the block, especially for the older crowd. And getting connected to the internet wasn't very straight forward (it's STILL not as straight forward as I would like it to be). There were a few instances when I gave up trying to help people over the phone because it was as if I was speaking Martian to them. In these situations I ended up making home visits and they were so happy to see me. I still remember an older individual tipping me $20, which was like 3 times my hourly wage. The lesson learned at this job is that when people who are clueless about technology are utterly dependent on you to help them out, be gracious and demonstrate extra patience. Once you help them out and resolve their issue, 9 out of 10 times you will be their hero and they will be extremely grateful to you for your help and for being extra patient with them. You just need to accept the fact that not everyone is as technically savvy as you would like them to be... but guess what? I'm sure there are things that they are very knowledgeable about that you are completely clueless of.
Federal Reserve Bank of Chicago
Who you know matters as much as what you know: I landed a pretty sweet gig with the Federal Reserve Bank while in college. My hourly pay was double what I was making at my previous job and the hours were super flexible--I could pretty much work whenever I wanted to. This was an especially great perk as a full-time college student. As much as I would like to believe that my web development skill set was what got me this gig, it was my friends who were working there that got me the job. Without them I wouldn't even have known that the job existed and probably wouldn't have been qualified enough to even get an interview.
It's possible to be a part of a wonderful community of Christians in the workplace: This was my first job after graduating from college and it was very typical of a large corporation. It involved working with an outdated set of technologies (PowerBuilder, for example... which I can't believe is still actively being worked on today), it was a very slow moving culture (I got yelled at by some union worker for attempting to relocate my desktop PC because that wasn't my job), and it just wasn't the kind of company that's set up to help you grow in your skill set. I have a lot of complaints about my time with the company but there's one aspect of working there that I am so grateful for, which is the fact that I got to be a part of a wonderful community of Christians, all of whom were employees at the company. I didn't know that such a community was even permitted to exist in the workplace. I regularly met with one or more of these folks and we studied the Bible, prayed together, sang together, and engaged in spiritually enriching times together. Unfortunately I've yet to experience this again after leaving the company; however, I hope and pray that this is something I'll get to experience again at some point in the future in my career.
The Pampered Chef
"Years of experience" is way overrated: I don't think I'm exaggerating when I say that the 17 months I spent at this company were THE best 17 months of learning in my life. It was at this company where I got to work closely with some of the most skilled developers I've personally encountered (to this day). This is the place where I wrote my very first unit test and the first time where I got to lead a project professionally. This is the place where I was introduced to test driven development and pair programming. I got to write a ton of SQL queries. This is the company where I first experienced Agile development. This is the place where I learned that you can get REALLY good as a developer (not me, the others) and have an opportunity to teach and mentor others how to excel as a developer. This is when I started to get really interested in picking up technical skill set on my own time for my own enjoyment. This is where I realized that "years of experience" is an extremely poor way to guess at how good someone might be at his or her job. I can almost guarantee that I had I stayed at AT&T for 20 years, I would not have picked up the kinds of skill set that I gained during my 17 months at this company. When I phone screen and interview candidates, I remind myself that years of experience is not all that meaningful. It is tragically too easy to rack up some very useless "years of experience" by doing the same things over and over again, working with technology that is all but dead, or spending time investing in a non-transferable skill set (see right below).
Accounting Company X
Don't waste time investing in a non-transferable skill set: This company shall remain nameless. I pretty much wasted a month of my life there. Within my first week there I knew I had made a big mistake in joining this company when I learned that I was going to have to develop within some portal/CMS tool created by Vignette Corporation. It was a clunky and overly complicated piece of software that often left me confused and frustrated even after I was flown to Texas to partake in their training course. I started looking for another job pretty much as soon as I started there because I realized very quickly that the vast majority of what I learn at the company will only be useful if I develop within this horrible vendor-locked software that I do not ever want to go near again.
Face to face communication is a wonderful thing: My time with this company was unique in that during my 19 months there I did not have a single face-to-face interaction with anyone at the company. Even the interview was completely remote. If you were to drop me off in a room full of my colleagues from this period in my life, I would probably conclude that they're all complete strangers to me because I don't really even know what these people look like. The only pictures I've seen of these people are their LinkedIn profile pictures.
Anyhow, I really enjoyed my first year with the company because I could work from the comfort of my own room every single day and the hours were really flexible. However, once the honeymoon period was over it was really quite depressing to work with people you felt such little connection with. By the second year, I got really sick of always having to talk to my co-workers over the phone or via online chats. While there were significant time savings by working remotely, I also knew that we were wasting a lot of time by not talking face-to-face. There are commonly stated statistics which say that 90+ percent of communication is non-verbal. While I'm not sure how accurate this is, I can tell you that face-to-face communication is way more efficient, effective, and engaging versus online chats, phone calls, or even video calls. So much of the enjoyment that comes with being a part of a team comes from sharing in a sense of connection with others you work closely with and this is so much more easily gained in-person versus remotely. It doesn't mean that people should come into the office every single day; however, not creating a semi-regular (even if once a year) opportunity for people to get together in person was a big mistake that this company made, IMO.
Consulting Company X
Get things in writing: Another company that shall remain nameless. Another company where I ended up staying for only about a month (hopefully the very last time this happens in my career). I took this job a few months before I got married and during the interview process, I told them that I was getting married soon and was going to need to take some extended time off for my wedding and the honeymoon. They agreed. Fast forward several weeks. I started working there and reminded my boss that I was planning on taking an extended vacation for my wedding. And quite unexpectedly I got some serious push back, which shocked me. Well, I wasn't going to let them get in the way of my once-in-a-lifetime experience so I quit. And I'm very glad I did. When I told them I had decided to quit, only then did they agree to let me take the extended time off and if my memory serves me right they were going to throw in some money as well. By then it was too late. I was pissed and the damage had been done.
I learned a very important lesson of getting things in writing. It wasn't my fault that they wanted to ruin my wedding (ok, I'm exaggerating now) but I should've been smarter about getting the extended vacation agreement written down somewhere on the offer letter.
Don't let money be a strong motivator: When I decided to accept the offer that was extended by the company, it was a rather difficult decision. I had another offer on hand and including salary, perks, and benefits this other offer was going to result in about 20% more money per year--not an insignificant amount by any means. I made the decision I did, though, because I had to remind myself that as long as I'm getting paid fair market value, I should not let money play a bigger role than is warranted in my life. I have no idea how things would've turned out had I taken the other offer but to this day, I'm very happy with the decision I made and I think it turned out well for me.
Fast forward a few years and it was announced that the company was going to be acquire by Oracle. Of course I considered sticking around post-acquisition. They told me they would pay me extra money if I stick around for a year after the acquisition is completed. I decided not to stick around because working for Oracle simply did not excite me and I knew there was a very good chance that Oracle was going to come in and ruin a lot of what I really enjoyed about working for this company. From having spoken with some of the folks who stuck around, I'm very happy I made the decision I did and didn't allow money to play dictate my decision.
Always operate with a career plan in mind: During my first 9 months with the company the team that I was a part of (the only engineering team within the company) went through 4 different bosses. It was quite jarring to have to cycle through so many bosses that quickly. No one on my team (including myself) was fond of these changes and a few members of the team left the company because of these changes. During these repeated changes in leadership, I could've very easily concluded that I would like to be a part of a more stable team and that the only way I was going to obtain this sort of stability would to quit and join another company. I decided to stick it out, though, because it became very clear within my first few weeks at the company that if I stuck around, there's a decent chance that I could have opportunities that I never had before. For several years prior to joining the company it had been my goal to be a technical manager. Not that I wanted to be a technical manager for the rest of my career... but I did want to at least experience what it's like to be a manager. I thought there was a chance that I could be pretty good at it. I went from having zero experience as a technical manager to managing projects, process, people, and ultimately the entire technology organization--all within a span of 2 years. It's really amazing when I think about it. It's scary to think that had I decided to seek stability I still may not have had any technical managment experience.