The VBA part is pure programming. Therefore, I am a programmer.
Today, I'll be telling you about the programmer's mindset and how you can benefit from it.
A programmer is someone, like you and me, who knows a computer language so well enough to make his own computer programs. And those of us that studied engineering in the university would have tried our hands on at least one computer language before. But most of us do not become fluent enough to make our own (not assignment mandated) computer programs.
I have tried my hands on FORTRAN (once made a funny game with it), BASIC, C, C++, C#, VB.Net, Java and Linux Bash. Java was almost like French to me. I gave it an unfair amount of attention and investment with very little to show for it. I used C for my final year project, to program a micro-controller. I can't remember doing anything on BASIC beyond school work. I almost read an entire book on C++, but didn't code anything useful. With the help of the guy I owe this blog to, David Olaniyan, I began trying out C# towards the end of my University days. He later went on to represent Nigeria in Microsoft Imagine Cup at New York. He told me about blogging on one Saturday in 2009 and I began blogging that very day.
However, the computer language I became fluent in is VB.Net. I once made a PC suite for my Nokia phone from scratch using VB.Net. I could connect to my phone via bluetooth or cable, load recharge cards via it, send SMS, read SMS, and initiate phone calls from it. But it had an extra cool feature. I could connect to other phones that had their bluetooth on and freak the owner out. I could even switch off the phone from my tool. It was that cool.
I still use VB but the one custom made for Microsoft Office Applications: VBA. I now make programs that help people in their day to day business data analysis life. I even help foreign clients with projects as varied as Stock Analysis programs and inventory management.
So what is the programmer's mindset?
- End in Mind. When a client tells me about his problem, I begin visualizing the end result. What the tool I will build him would do. Not bothering about how it would do it or even if it was achievable.
- Independent Chunks. I break down the programming project into independent chunks. Ones I can build and test separately but in the end will all work together to form the big program the client wants.
- Error Handling. I begin imagining all the possible mistakes the user can make while interacting with my program, and I trap them. I make it as user friendly and intelligent as possible. It would even correct some predictable errors you make.
- My Fault. One thing programming teaches is: It makes you accept your faults. You can't argue with a compiler. Even if you're cocksure, the only option is to accept the fault. So whenever I run a program now and it works, and I run it tomorrow and it doesn't work. I won't start cursing the computer or banging the table with the keyboard. I simply tell myself that I must have done something wrong, and then patiently proceed to find and fix the issue.
- No Arrogance. In fact, it's believed that all good programmers are humble. A lawyer can be boastful and arrogant to intimidate the opposition and validate the high fees he's charging. But if your job involves sitting in front of a PC screen with hundreds/thousands of lines of code, humility will seep into your life. When a single misplaced semi comma can cause you sleepless nights, you wouldn't want to tempt anyone into making life unbearable for you. Shift + Delete of a vital library file is all they need do to make your life miserable.
- Live by Faith. If you program for a living, then you are living by faith. Programmers are the most prayerful. Oftentimes, we plug and pray. Or run and pray. Whenever I run a freshly made program, I'm always praying. Sometimes, a client wants something you've not done before and you just have to faith it. That's why programmers often code overnight; it begins with once I can get this part done with I'll go to sleep. And end up staying up all night on it. If we could plan/know how many hours it would take to get a program working we would just spread it well across several days, like other people. But we don't know; we live by faith.
- Always Ask For help. A good programmer never re-invents the wheel. He always ask for help. What will take you days of intensive coding to make might be online for free, shared by some kind soul. Most programmers are kind and sharing.
- Make Few Promises. Programmers seldom make promises. We know that so many things are beyond our control, we only assure you of our best.
- Find Patterns. What I love most is a problem that has an easily recognizable pattern. It makes programming life extremely easy. Whenever I'm with a client, I'm always asking questions that will establish if the problem I'm to solve has a reliable pattern. I don't want them calling me to tweak the program every now and then.
- Passion. All good programmers put passion into their work. It's the only way to work. Programming is so boring money is not enough to keep you at it. You will have to give up sleep on some days and food on some afternoons.
- Cool headed. When a comma can make or break your program, being cool headed is not an option. It's a survival trait.