So you are interested in software development and want to become one who do that job. Initially you think that it’s only a matter of coding. creating source code, have them compiled, and then deploy the software for the customer/client. Later on, you realize that developing software is hard. Even harder since so many things beyond technical issues are also involved. Suddenly you realize that what you have learned in school is not enough. Well, it is almost impossible for university to deal with this advancement in technology, but instead they should work hard to cultivate core values of software developer: how one can survive as software developer?
To survive in this profession, in my opinion, one should embed some core values into him/herself. I will give some which I think very important.
Rookie understand syntax and semantic of programming language only, while software developer effectively code.
I don’t underestimate people who wrote something like “Idiot’s guide to xyz” or “Learn xyz in 24 hours” and all sort of books but they only scratch in the surface. You may read and practice them but don’t ever think that they are enough. What you need is something beyond that, something like Effective Go or Effective Scala or Effective Rust or Effective OCaml (some may not use “effective” word but they remain the same, see JavaScript — The Right Way for example). This may also include something like coding style which has to be obeyed by the team.
Development tools / ecosystems is not less important than the programming language itself.
I may specify some category of development tools which one minimally has to get acquainted with: manual pages (whether something like man, info, devdocs, — help, or any other similar tools), profiler, debugger, IDE / text editor plugins, build tools, project management tools, SCM(git. mercurial, darcs, etc, and their workflow). Some cloud based tools are now getting more and more popular for development (vagrant, virtualization, etc). In this regard, whether one use Cloud or not, cloud based development (or hybrid development) workflow will take over “traditional” method, therefore you may need to prepare.
Software developer don’t just write code, they (should) write good documentation.
That is why we need godoc, rustdoc, javadoc, scaladoc, etc. People come and go, developers come and go, someday people need to understand your code. If you don’t want people to understand your code, you are doomed, because in this era — reputation is everything. This one is more important if you develop open source software: good documentation will attract contributors.
Software development methodology is an integral part of software development project. Live them to your heart’s contents.
For software developer, development tools are their provision for a long journey — from version 0.0.x to 1.0.0. Software development methodology guide them through the steps and activities needed from inception to deployment.