The software world is vast and erratic, with constant improvements to the tools and technologies developers use every day. In such a fluctuating field, it is no wonder that colleges and universities focus software-related coursework on fundamentals such as programming languages and basic algorithms. Recent grads can then find themselves reeling upon graduating and entering the tech field, where an expansive portfolio and diverse skill set are valued much more highly than a degree alone. As a recent grad, the transition from education to the industry has proven challenging and incredibly rewarding. I thought I would record some key differences I have experienced that might help the next generation of software developers on their journey.
The Technology
While valuable, languages are just the tip of the iceberg in software development. In college, many students consider what and how many programming languages a person knows to be most important when entering the software industry. For myself, the usage of development frameworks was a concept almost entirely missing during college, but frameworks are a nearly universally used tool in software. The decision of what framework to use for a project often determines the language used.
Frameworks are invaluable platforms for application development, providing collections of functions, classes, libraries, and other valuable tools to a project. However, frameworks often have their syntax and methodology to learn, just like a programming language. For some, all this new information can be daunting when starting as a new dev, but most modern frameworks have plenty of documentation and examples available. Looking back, implementing a framework into various homework or practice projects would have been invaluable to my education and made me a more industry-ready developer. Of course, there are many other things I wish I had known before graduating, but frameworks are one of the most accessible and instrumental.
The Team
As a student, almost everything you do is done at an individual level. Assignments, projects, practice work - about everything done only affects the person doing it. Your grade will only be your own. Even in group projects, the result is often split at the beginning and combined at the end, with little interaction in the meantime. This couldn’t be farther from how modern software teams interact and collaborate on projects. Software development is compelling in that much of the work is done at an individual level, but the work itself is a part of a greater whole in which all involved contribute and rely on the work of others.
Many tools have been created to enhance software development’s collaborative nature, though none are more famous than Git version control. Creating an application is complex, requiring immense amounts of coordination and planning. This makes communication and interaction paramount, with each team member providing input for the next steps of a project and feedback to improve one another and the project itself constantly. are
Git is the tool that allows individual members of a dev team to work on the same project with minimal toe-stepping and easily combine separately developed features into one. At a basic level, Git allows developers to keep different versions of the same codebase in various stages of development and track changes to that codebase as they happen. As a college student, it is doubtful that most have worked on a project of large enough size or with enough members to necessitate Git, despite its almost universal usage within the industry. Of course, using Git requires some familiarization as well, utilizing its syntax and methodologies to accomplish all it can. Additionally, there are many different strategies for version control that exist, requiring further learning.
Git can sometimes be intimidating for a new developer, mainly due to the lack of coverage in college. However, it’s almost inevitable that recent grads will utilize Git at some point in the software industry, making it an alluring skill to bring to the table as a new developer.
The Work
For some, the title’ software developer’ means you can huddle over a keyboard and seemingly conjure magic from the many windows and tabs on-screen. As a developer, ‘develop’ is indeed the operative word, with progress only incrementally achieved. Developers don’t create magic but instead carefully and systematically build illusions, in the sense that the end-user only sees what is intended and not the complexity and calculations behind the scenes. In most cases, the ‘magic’ is the product of sometimes years of planning and implementation, developing from an idea to the end product. As a student, the education process rarely accurately reflects this long-term process.
Many courses regarding software utilize homework and projects to apply the knowledge being taught, but few encompass the full scope of what an actual industry project envelops. A homework assignment might ask a student to accomplish a particular task by writing a function within a week, with 6 or 7 assignments given in a semester. While excellent for reinforcing programming fundamentals, these assignments do not prepare students for actual software development. In school, these functions are usually a means to an end; they accomplish the task as described or didn’t. Conversely, as a developer, completing the job is only the first benchmark for a good program, with maintainability and scalability almost equally important. These types of homework are essentially non-existent in industry, where sometimes numerous programs work in unison, as well as multiple facets of the application. Even in large semester-long projects, it is unlikely for students to work on something that includes a database, front and back end, API usage, and appropriate security, all things you can expect to find in an industry project.
New devs might find the change in work challenging due to the differences from that done in college courses, making personal practice and projects more critical in school. Similarly, new devs may have driven their education to be exclusively good at one development element, such as the front end, and feel confused about integrating successfully with other application areas. Diversifying skill sets and identifying strengths and weaknesses helps ease these feelings and quickly feel comfortable as a developer!
In an industry as constantly innovating as software, no graduate starting their career will seamlessly transition to software development. However, if, like the industry itself, new devs continuously improve their skills and understanding, success should follow!
Thanks for Reading!
We certainly hope this Bio::Neos blog post is insightful and engaging for you. Be sure to contact us with questions and comments, and follow us on LinkedIn for more updates!