A concept like software engineering is extremely complex and time consuming to realize, thus why universities have it as an upper-division course. The wide range of topics in such courses are designed to give students an experience using the tools and methodology used by developers while providing instructional material. At the core of any software development experience, there is the tech stack. This is the protocol of applications opened and steps taken to get to the baseline working environment. For example, one may open their web browser, then their github, then then create a project in github, then clone it locally, then open that project in a development environment, then run a script to load packages, and they would begin to code. Such a process may seem tedious at first, but it gets quicker and easier with practice. That is part of what makes software development as a concept such a time-consuming topic. Not only must you become familiar with the coding language and techniques you wish to use, but you must also become proficient with the software required to program efficiently.
I just got through such a course on software development, and it was one of the more time-consuming courses I’ve had to take. The course had a major focus on web design, a new topic for many students. We covered a new topic almost weekly, with some topics taking more than one week due to their complexity (like the Meteor
package for javascript). This broad range of topics built off one another, so managing time effectively was probably the most valuable skill emphasized by the class. Something I appreciated was the use of coding standards, and the use of an auto-checker in the development environment. Coding standards are a nifty tool to ensure your code looks good and meets a certain standard of quality. I go more into depth on these in my essay titled Your Saving Grace
. An auto-checker is probably the greatest tool in existence, as it makes both spellcheck and error checking easy. Having worked in an environment with and without one, I can say for sure that you certainly want one as a part of your work environment.
I think the most valuable skill for software development is how to form good habits. Everything done can be made easier or faster with the right knowledge and some practice.