5.9 KiB
One year as a software engineer
The 1st of June earlier this month marks one year that I have been a software engineer. I am amazed and excited by the amount I have learned in one year!
Beginning Work
I still remember the first few weeks when I started at Infinite Campus. It's a very interesting experience starting out at a new company fresh out of college. Everything in the business world just seems very new. It's almost as if you are thrown into a whole new country with a completely different culture.
It was not a bad experience though. Everything takes time to learn, and anything software related is absolutely no exception. At this point in my life I knew a fair amount of programming. I had done some personal projects (this site was about it), but I hadn't been anywhere near production code. I started out with the intro programming projects they had set up. They were all {insert programming language} Koans (a paradoxical anecdote or riddle, used in Zen Buddhism to demonstrate the inadequacy of logical reasoning and to provoke enlightenment).
I remember learning Groovy, UnderscoreJS, as well as testing frameworks such as Karma and Spock. These testing frameworks were very new to me, even though I had just taken a software testing course less than a few months prior. I felt like I didn't learn that much in the class and it showed. I never really understood the point of writing these unit tests. I remember thinking "yeah, of course I expect the outcome of this function to equal { test: 123 }".
Real Work
As I was finishing up with these "Koans" tutorials, I began getting handed real work to do. I was extremely excited about this, because I've always gotten enjoyment out of building real world things. At first it was small things like adding a google drive button to a WYSIWYG editor, or fixing some unit tests. It was during this phase where I started to get a better understanding of the importance of unit tests. It made more sense that some unit tests broke when I made changes to someone elses code. This is something that just didn't seem to be emphasized in the college course. I was also learning the workflow of how a real software company operates. Back in college I had no idea what the point of a business analyst was. I was also learning how a version control system is used in the real world. I had known Git from college, but there is a lot more to it than I had previously known.
First Real Project
After about a month or so of learning and helping where needed, I got handed a project to work on! Now that I look back on it, I don't even remember being nervous at all, even though I was supposed to do the entire UI of a web app. I think it was around this time where I realized I really loved what I was doing. I was on a fairly large team right away. I think it was 6 developers, 1 BA, and 1 tester. This wasn't a typical setup for the company, but the project had quite a bit left and of course it had a deadline.
Part of this project included making a UI that allowed students to take and complete assignments. All of the end points also needed to be created. I remember being asked if I wanted to do the front or back end. At this point I was more interested in the front end, so that is what I chose. The back end of the current code base also looked extremely scary! The database schema looked like it would have taken months to learn in itself! The company was using AngularJS as a front end framework at this time so I was pretty excited about that!. Now, I had the responsibility of creating a fresh new UI project with AngularJS 1.5!
Luckily there were other projects within the git repository that I could study. Getting up and going wasn't too bad after all! I really started to learn the ins and outs of Javascript as well as CSS. CSS has been very tricky, but after hours and hours it becomes like riding a bike.
It was toward the end of this project when I started to realize that the bottleneck in software development is not always the programming itself. Something to remember is that software is written for real people to use. Because of this, we had requirements that always seemed to be changing.
Company Changes
Around the time we shipped that project the company had a reorganization. There were a few teams that I had the potential of being on. One of these teams I had in my mind because I was really enjoying the front end work with new technologies such as AngularJS. Luckily I was able to land a spot on this team and the AngularJS development continued! I worked on this specific team for about 2 or 3 more months before the entire company had a reorganization. It was during this time a brand new building was built and we were the first group to move in!
I continued to work on the same project, but a few team members had been adjusted. At this point it was 3 developers, 1 tester, and 1 BA. Something to keep in mind when working for a decent sized company is that things seem to change all the time. If you don't like the position you are in, there is always potential to move somewhere that you would enjoy!
Current Work Life
About 5 months have passed since the reorganization and I really like where I am in the company. I think I have gotten into a pretty good groove and I know I've come a long way since when I started. It takes me significantly less time to whip up a prototype on the UI. I also find myself googling a lot less. There is still a fair amount of googling here and there when it comes to front end development though, as the ecosystem seems to be rapidly changing. It's to the point where I know exactly how to go about solving a problem about 80 percent of the time when it comes to UI work.
Future Work
At this point the future is unknown to me, but that keeps it exciting! I'm very content with what I am doing right now, but I am an optimistic person and I'm always working hard for new opportunities. I love to work on personal projects in my free time, and I've completed a few notable ones in the past year. That is for another post though!