When I graduated college and landed my first developer job, I had many preconceived notions about what being a software developer entailed. I (wrongly) assumed that the industry experience would be similar to that of the collegial experience I had as a Computer Science (CS) major. When I started working in the real world, I quickly realized that in addition to the technical aptitude, there were a few non-technical and not-so-obvious skills that I needed to know to be successful at my job.
This article discusses the top four topics I feel they don't teach you in school. These are the skills that I didn't realize I needed until I started working as a full-time developer.
Reading Documentation 📚
With the popularity of open-source software and the adoption of third-party libraries, you will inevitably have to read through technical documentation at some point in your career. Reading through the official documentation is usually the first place I start when I want to find out information like API details or code examples, to name a few.
Unfortunately, not all documentation is created equal. This means finding an answer for an issue may prove easy or convoluted based on how well it is documented. Some third-party libraries use tools like Docusaurus and have full-blown websites dedicated to documentation. While other libraries, like CSS Modules, make use of a simple README file. Whatever the medium of choice, it is important to know how to sift through tech docs to find library-specific solutions and best practices.
One thing I found surprising was how much communication and collaboration are required when working on a software team. When I was a CS major, a lot of the work we did was in silos. Due to that, it was a bit of a shock when I realized that I would not be the Lone Ranger on a project. However, this was a pleasant realization because I have grown exponentially by interacting and working with more experienced engineers.
I've also learned that sometimes you have to communicate across multiple teams. For example, the team you work on may handle one portion of an application, but you may need to interact with a completely different team about a related feature that you have to implement. Maybe you need to have a follow-up meeting with a Product Manager to flesh out more details on a user story that you were assigned. Whatever the case may be, having the ability to communicate effectively makes the process a lot smoother in the long run.
Refactoring/Maintaining Code 💻
I have worked for a few different companies throughout my career and have found that if you work for an established company, especially one that has some form of a monolithic application, it's highly likely that you will be refactoring and/or maintaining code for a significant amount of time. I know that a lot of the thrill is in greenfield development, but maintaining previously written code is a large part of being a developer. It's common to work as fast and efficiently as possible to release a minimum viable product (MVP) and then work for a while afterward fixing bugs and providing enhancements based on user feedback.
Learning on the Job 🎒
The main programming language I used throughout my CS degree was C/C++. Despite my passion, experience, and love for front-end development, I had no exposure to web technologies until about a year into my first job. I was so lost when I was placed on a project that used Angular.js. It was the first time I was working with a front-end framework so, in addition to learning the syntax, I was also trying to grasp the concepts of MVC and two-way binding. At that same job, I would later go on to work on projects that required me to use Java and even some database work with PL/SQL. All of these technologies were ones that I had no prior experience using. Needless to say, I learned a lot at my first job, and working on a variety of projects exposed me to different parts of the tech stack.
Even though I now specialize primarily on the front-end, there are still times when I find myself having to dabble with brand new technologies. Nowadays, when I have to learn something unfamiliar, I'm a lot less intimidated because I have a successful track record of doing so in the past. To sum it up, you never stop learning and, a lot of the learning you do is on the job.
Technology is moving so fast that it's inevitable that you will have to learn something new on the job. In my opinion, that's what makes being a developer fun!
Embrace the unknown and uncomfortableness and enjoy the journey of learning by doing.
El Fin 👋🏽
This article sums up the main lessons I learned when transitioning from a Computer Science graduate to an Associate Software Developer. Landing my first "big girl" job was a big step for me and came along with new insights and the occasional growing pains. I relocated to a new state and slowly began learning the ins and outs of working as a professional software developer.
If you enjoy what you read, feel free to like this article or subscribe to my newsletter, where I write about programming and productivity tips.
As always, thank you for reading, and happy coding!