It didn’t take long working here to realize that programming on the job is a lot different than how I programmed at school. It made me realize that while class projects are useful for learning syntax and the core concepts of programming, they don’t do a whole lot to prepare you for the ‘real world’.
Coding for School
On a class project, if there are parts of the code that are kind of sloppy, or if it doesn’t work perfectly, often times I might find it worthwhile to get 5 – 10 points knocked off the project grade than spend hours debugging. Occasionally, a project may have a really obscure bug in it that the TA or professor might not catch, and it doesn’t matter, because no one is going to be using that code after the Professor is done grading it.
Here, that kind of coding won’t fly. You are working on something that is going to be live on the Internet and if it can go wrong, no matter how obscure, it will go wrong. You have to me much more careful about the way you write code. There is no sliding by with a B, you have to do your best to get a 100 on every project at work.
At school almost every project you work on is a solo affair. You may talk with your classmates and discuss ways to go about accomplishing whatever goal your project is trying to accomplish but usually you will be the one writing all of the code from start to finish.
Coding for Work
At work, when we start a project, we’re handed HTML and CSS files from design and we start by using code repositories written by other employees. On larger projects there could be different programmers building different parts of the site simultaneously and we may have to make sure that they can all work together seamlessly. Once a site goes live, even if one employee may have done all of the programming work, another may have to come back to it later to answer support requests or work orders.
This all means that at work, a programmer has to be a lot more careful with how code is written, documented, and structured. You have to make sure your code is easily readable and understandable to anybody else who reads it and that the code is modular and easily integrated with other code. As a wise programmer once said: “Write your code as if it would be maintained by a serial killer who knows where you live”.
I feel like a lot of colleges do a real disservice to students with how they teach a language. In school you spend a lot of your time memorizing the exact syntax of a language because you will have to write it out on pen and paper without any kind of developer kit, compiler, or resources to help you out.
At work, we have a lot of tools (such as PHP Designer) that help take care of the little details. Why should I spend an hour looking for a misplaced semi-colon when a program can find it for me in a fraction of a second? As the old saying goes “hardware is cheap, programmers are expensive”. And there is no shame in googling something or checking one of our reference manuals. As such, most of the learning on the job focuses on more important concepts and learning the finer points of a language. It’s also been helpful because the real world will present you with all kinds of problems to solve that a text book author would have never come up with.