I was working on something for a client when The Invisible Developer walked into my office, looked over my shoulder at the code and said,
“So, you’re a PHP programmer now?”
“I’m a whatever-language-we-happen-to-need-at-the-moment programmer.”
A year and a half ago, I took a look at Codecademy and was underwhelmed. It’s gotten mixed reviews and if you find it awesome, good for you.
One of the drawbacks I saw is that it didn’t reflect the way I think most software is actually written.
A big complaint even people who liked Codecademy had was about the console. When I was an undergraduate taking my first couple of programming classes I did nice little things like their program to calculate taxi cab fares, or tips or whatever it was.
Now I make things that people actually use and it’s a lot more complicated. In doing that, there are some tools that make my life so much easier. There are three broad types of extraordinarily useful tools.
XAMPP – if you are going to be doing anything with PHP and MySQL, take the time to download and install this. It’s free. At first, I thought it was wasted effort because why do I want to go to the trouble to create an extra copy of the same SQL tables on my desktop. At first, I was an idiot. Here’s the deal, you can have your SQL database on your server, upload your files to run them and test them, or you can have it on your desktop and test it locally. Of course I don’t have the entire database on my desktop, just tables with the same columns and some fake data. It’s much, much quicker and easier to find errors than going through the whole uploading the file, finding an error, fixing it, uploading it again. Just install the damn thing and quit whining. I have had zero problems, zero complaints and cannot believe I didn’t do this on day one.
Some type of Integrated Development Environment (IDE), I use Webstorms, but there are plenty of others out there. Any IDE is going to include a source code editor,debugger and most have intelli-sense, which will try to automatically sense what you are planning to type and offer to complete it for you. Kind of like your iPhone but it works much better since there is a much smaller subset of words. It will identify if you have left off a closing bracket, parentheses, semi-colon, etc., let you know if you are deleting a file referenced in another file and stuff like that.
Developer tools – just about any browser will come with a set. I like Safari’s the best but I use Firefox almost as often, and sometimes Chrome. These usually include an error console that will show you any errors, a view to look at the source code including scripts being called by your web page.
You might notice what all of these have in common are de-bugging. If you’re making anything that’s more than a bit complex, you’re going to spend a great deal of your time de-bugging, probably a lot more time than you spend writing code.
I think I’m pretty typical. Normally, I write a first draft that doesn’t run. Then, I swear and find whatever bugs are there. Depending on how complicated the project is, this may take a while during which progress is defined as finding bugs further down in the code. My second draft runs but is not very elegant. It could be more secure, more efficient, use macros, whatever, but it runs. I often post my second draft on my blog where nice readers who post comments and suggestions (which I DO appreciate and I no doubt don’t say THANK YOU enough) probably wonder how I stay employed writing stuff like this. My third draft, if I have time and there is still money in the budget, also runs but is easier to maintain or interpret. Then, I got back to step one.
— Funny thing, I wrote a book on matwork for judo and mixed martial arts which is selling amazingly well and I followed the same model. The first draft sucked, the second did not suck as much and after several iterations and rounds of editing, I’m quite proud of how it turned out.
In between these two extreme are code libraries like impact.js , which I use for 2-D game development, that are not free but are well worth the price. Impact costs $99 and does so much of the game development for you – you can easily create levels, entities (players and their ‘enemies) and much more.
There are a couple of others on my list to download and check out the second I have the time. I’ll let you know how that works out.
ASSETS/ WIDGETS etc
These are kind of like code libraries in that they are parts of your project pre-written for you. Whether it is downloading sprite sheets, Dreamweaver snippets, drop-down menus or reading papers in SAS Global Forum proceedings and copying macros, I have no shame about using other people’s code. The Internet is full of wonderful, generous smart people who make things and put them up for free just to share, show off, or get business.
They are also bits (both literally and figuratively) that you can buy for not a lot of money. I don’t have that silly idea that everything on the Internet can be free. If I can buy something for $30 and it would cost me more than $30 to create it myself, I do. Yes, maybe I could code it myself. I could also clean the office myself but I pay someone to do it.
It’s all about efficiency.