The “Weekly Rant” column was featured in the PC Mechanic Newsletter since 2005. Topics relate to some aspect of technology, which include opinions on hardware, software, new technology, technology companies, and computing standards.
Long story short is that the first two iterations of this exam creation, taking, grading, and notification system did not work. Time was a factor, and inexperience was another. Some of the source code I’ve viewed has included novice mistakes–I’ve picked up on these even though I’m not entirely familiar with the language it was written in. Why?
There is a large gap between programming theory and actually applying it using a programming language. For some people, that just comes with time and experience. The best solution for that is to work on somewhat minor projects to hone your skills, and go from there.
Now, I have been working on web applications for a while and have a pretty good handle on what I’m doing, but I certainly don’t know all there is to know about them. It’s a learning process. While my first few larger projects that I’ve undertaken have functioned properly, they are full of novice mistakes and workarounds that should not have been done, thus making alterations to the code very difficult. Maintenance is also an issue with those programs. But, considering their low utilization, I’m not too concerned about that or their performance. I look back on these projects and just shake my head at all the poor coding I did. If the client ever expressed interest in revamping the applications in question, I would–and much improve on them. But, as it stands, they aren’t worth my time to redo. For now, I can just look back on them and see where I’ve been and chalk up those projects as learning experiences.
If you do not have the experience to take on a large project, do not take it on. Even if the price is right. Chances are you won’t be able to complete it in time, and/or it will end up being a shoddy product that doesn’t work well (or at all). That sort of reputation will get attached to your name, making it difficult to land another project in the future. This also gives other programmers a bad name by passing along the idea that *all* programmers are incompetent. This isn’t so, and if you’re smart, this won’t apply to you.
So far, since I’ve only tackled smaller to medium-sized projects that weren’t very critical. I’ve built a reputation for putting together good, functioning web applications, and gained programming experience that way. This is the way it should be done–not the sink or swim method that many upcoming programmers tend to lean towards because in the programming world, unless you’re a total genius with this stuff…you’ll sink like a stone.
In time, once you master the smaller, non-critical applications, you can move up to the larger, more complex and critical applications. Trying the “sink or swim” method on this sort of endeavor is suicide, especially with a limited skill set. Like with anything, you can’t become a master at it just by reading one of those “learn how to program in 48 hours” books. Sure, you can learn the basics to get you started, but don’t expect to handle Morgan Stanley’s investment system and get paid the big bucks to work with it.
So, the best way to bridge the gap between theory and actually working with the language is to start small and keep building. Soon you’ll have a decent portfolio and the reputation of being the go-to guy for getting the job done right, rather than being the fool who flubbed it up the first time around.