Being a programmer vs. a software developer

17 Dec 2021

All of my programming projects and skills before ICS 314 were restricted to one language or framework per project. This is great for people developing novice skills in computer science, but this is only the beginning of a software developer’s journey. There is nothing wrong with this programming approach; however, the programmer’s capabilities are severely limited. Transitioning from simple programming structures and interfaces to complex, multi-lingual libraries and frameworks is challenging for everyone but essential for all professional software developers.

What’s the difference?

Becoming a software developer is more than just using multiple languages and frameworks for a project, but understanding why one should use a specific language over another. For example, web applications can be created with Python, but web browsers have evolved to use JavaScript natively, so it would be substantially more complex to use Python over JavaScript. Thus, a developer needs a comprehensive understanding of programming language paradigms to understand what language can solve the problem at hand most efficaciously. Another criteria for software developers is understanding what processes occur in the system’s front end and back end.

How to think like a software developer

To be a software developer, one must think like a software developer. The best thought process for this is to think of everything as boxes or containers. These boxes can store packages and are held in high-order components. The actual contents of these boxes are used to display front-end processes, and the process of accessing the boxes and manipulating the data stored within, or the system as a whole, is the back-end aspect.

Another commonality among software developers is their capability to think in and utilize design patterns. Design patterns are optimized solutions to well-known, common problems and can expedite development since these solutions are readily available for all developers. Another specification for design patterns is the portability of a solution to allow all possible use-cases. Creating code that is efficient and portable is vital as it not only helps the current project but can also enhance future software development. Along with design patterns, software developers utilize agile project management to organize what problems need to be resolved and what has already been optimized.

Conclusion

Becoming a programmer is just one component of becoming a software developer. The process is challenging, but you will feel like a computer wizard, making systems bend to your will by the end. The skills and techniques taught in ICS 314 help students evolve into sophisticated software developers. Overall, the experience has been crucial, fundamentally altering my thought process when introduced to a new task. The course also enriched my capabilities of developing software in a team, specifically, skills in communication and time-management.