Thursday, June 20, 2013

Seven Warning Signs of Highly Dysfunctional Programming

This is the long-promised "part 2" ("part deux" for you French folks)  mentioned in this previous article...


In any case, let's begin:

1. Inconsistent or missing code documentation. 

Document each distinct function or subroutine. Document your variables. Document any complicated sections of code as well. It's not just for someone else; it's to help you as well. A year later, after you've destroyed half of your already-dwindling feeble brain cells on red bull, liquor and meth, and assuming they let you out early on good behavior, you'll be glad you left some clues behind to explain your delusional code. 

2. Inconsistent formatting. 

If you're going to capitalize some particular word or phrase in your code, do it the same throughout ALL of your shitty code. The same goes for indentation. And for God's sake: indent your shitty code!!!  Between the start and end of each function definition, while-loop, if-then-else block, switch-case or select-case block, whatever: indent the crap in between!

If you can't be counted on to be consistent, you can't be counted on to write code that works consistently. 

3. Stupid Versioning. 

If you write code for Google, Microsoft, or Facebook, by all means, follow their internal guidelines. If you work for a start-up along with other developers, coordinate to develop a standard set of guidelines and follow them. 

If you write code for your own projects, try to avoid pretentious douchebaggery habits like setting version numbers as 0.0.01101.33b. Back away from your can of RockStar and come down to Earth a bit. There's nothing wrong or shameful about using version numbers like 1.0 or date-based versioning, like 2013.06.22.01. 

Using stupid long meaningless version numbers doesn't fool anyone into thinking you run your own coding empire with enslaved coders rowing a yacht in unison as you drone out coding orders over a megaphone. 

4. Picking the platform or language without regard to the target demographic. 

If the majority of users you expect to target your uberware at are running on Windows-based devices, then use a platform toolset that is native to that platform. Same goes for Linux, Android, iOS, and what have you.

Using some obscure, or favorite pet languages might be cute and clever, but unless you can prove there is a significant performance benefit, don't bother. If you're concerned about the costs of using those tools, maybe you chose the wrong target audience. 

5. Working in isolation. 

It doesn't matter if you've been writing software code since 1743, if that was even possible; every human can benefit from the advice and experiences of their peers. If you don't feel that your current environment provides any peers, then maybe it's time to consider one of two possible options:

(1) Seek additional staffing.
(2) Quit.

6. Ignoring Redundancy. 

Make backups every day. Make backups every day. Make backups every day. 
Make backups every day. Make backups every day. 

7. Assuming You Are a Namespace. 

Prefix your variables, function names, module names, etc. with a common and consistent naming convention. Preferably something unique and not likely to collide with namespaces on the target platform you are developing for. 

If you app runs on the Google Plus environment it might not be good to name all your public variables "gplus_" 
, or on Facebook to name them "fb_" or "facebook_" ..,whatever. If your app is called "Fubar Plus 2014", maybe a good namespace prefix could be "fubar_", "fubar_2014_", or even "my_shitty_code_".

If you haven't encountered namespace conflicts before, consider yourself either fortunate or be concerned about being the only developer on your target platform. 

8. (BONUS): Coding Without Caffeine. 

I will accept Adderol or some other dextroamphetamine-based stimulant as a suitable substitute. However proficient and productive you believe yourself to be at coding sans chemical stimulation, scientific studies have proven beyond all doubt that said chemical stimulation makes you even more proficient and productive. Even if you suck at coding, you will just suck faster. 

Disclaimer: I can't cite any specific scientific studies, nor am I a professional medical expert, however I have been known to play the role of an expert at social gatherings and on some Internet forums. Actual results may vary. Batteries not included. Add water to make its own sauce. Offer not valid in states where prohibited. 

No comments: