I am in a major stump right now.
I am a BSIT graduate, but I only started actual programming less than a year ago. I observed that I have the following attitude in programming:
- I tend to be more of a purist, scorning unelegant approaches to solving problems using code
- I tend to look at anything in a large scale, planning everything before I start coding, either in simple flowcharts or complex UML charts
- I have a really strong impulse on refactoring my code, even if I miss deadlines or prolong development times
- I am obsessed with good directory structures, file naming conventions, class, method, and variable naming conventions
- I tend to always want to study something new, even, as I said, at the cost of missing deadlines
- I tend to see software development as something to engineer, to architect; that is, seeing how things relate to each other and how blocks of code can interact (I am a huge fan of loose coupling) i.e the OOP thinking
- I tend to combine OOP and procedural coding whenever I see fit
- I want my code to execute fast (thus the elegant approaches and refactoring)
This bothers me because I see my colleagues doing much better the other way around (aside from the fact that they started programming since our first year in college). By the other way around I mean, they fire up coding, gets the job done much faster because they don't have to really look at how clean their code is or how elegant their algorithms are, they don't bother with OOP however big their projects are, they mostly use web APIs, piece them together and voila! Working code! Clients are happy, they get paid fast, at the expense of a really unmaintainable or hard-to-read code that lacks structure and conventions, or slow executions of certain actions (which the common reasoning against would be that internet connections are much faster these days, hardware is more powerful).
The excuse I often receive is clients don't care about how you write the code, but they do care about how long it takes you to deliver it. If it works then all is good.
Now, did my "purist" approach to programming may have been the wrong way to start programming? Should I just dump these purist concepts and just code the hell up because I have seen it: clients don't really care how beautifully coded it is?