Saturday, March 31, 2007

New social networking site

Today I was searching through digg and found a new social networking site for designers and developers. It's called Tweako its based off a points system that shows your participation in the network. Looks like a cool idea, hopefully the community support will grow. I'll post more about it when I've had more time to try it out.

Friday, March 30, 2007

Defensive programming

I was reading some random articles on codeproject.com, as I do when I want to look like I'm working, and came across this awesome article on defensive programming that talks about how you can use enumerations to code defensively all the way to how you should avoid pointers like their the plague. Check out the article here, its a good read for any developer.

Thursday, March 29, 2007

The choices you make

Today is the first day that I felt that I've developed a solid application. You see I'm a tools developer which means I write small applications that interface, diagnose, or control things that are larger and greater than itself. Most of the time these tools are patched together with some existing GUI code and some back end logic, then its over, the tool almost never gets updated and rarely gets enough time it deserves. Can you tell I'm just a little bitter?

The bottom line is that tight schedules and expensive third party software give development teams little choice in the matter. This is a daunting task for any developer since your normally engulfed in a lot of work as it is, normally meaning you don't have much time to design or even throughly test. Most of the time your worried enough about getting the bloody thing to work, let alone make good decisions in design of the application and especially the user interface. So how does one get around this development hell?

The concept is simple write code that you can use over and over again, the idea of re-inventing the wheel a couple of thousand times is just stupid. Learn how to make robust software libraries, learn to utilize given frameworks if you have any. These don't become apparent until you've gone through it a few times, but you'll quickly find out how make your libraries work for you or you'll find yourself mindlessly coding a bunch of cookie cutter code that is more than likely bug ridden.

Know your environment when developing small scale applications make sure you utilize what's available to you. This goes beyond system resource management, this also includes your IDE (Integrated Development Environment) which means you'll want to know the ins and outs. For example in Visual Studio 2003/2005 .NET you can place bookmarks in your code, that allow to jump from code segments to segments in a few keystrokes. You can also setup basic logic conditions on break points which can help you consistently reproduce errors.

Work language strengths, try to develop in languages you're familiar with but don't be afraid of higher level languages. These languages are usually designed for rapid development and trust me that's a big help. I know people that will swear up and down that C++ is the only language you'll need to know because it can do anything. This is partially true C++ can pretty much do anything but its not the only language you should know especially since there are so many other languages that do things better. For instance I won't write a report generator in C++, I could but I'd rather write it in VB since its got more business logic library support. You'll need every moment you can save, so if you can save time witting in a higher level language do so, if you don't know any higher level languages I'd highly recommend you learn some; yes, as in more than one.

The last thing, test your tools, if people are relying on them they really need to be throughly tested. Don't forget your users only care that it just works, you care if its reliable since you're most likely the one who'll need to fix it. There is nothing worse than being in a situation where you're not sure if you can trust the tool, it makes a lot more work than you want.

Wednesday, March 28, 2007

Why simple is good

I've noticed that in most cases entry level application developers (people who just start their careers as developers) have long forgotten how to be basic users. They know that and many times they try to solve application issues with powerful back end features and presumptions of knowledge. This can work, not necessarily well but it can work in the enterprise world or with small user bases, where training and lots of personal communication occur more frequently. Now I'm guilty of this too and have found that in most cases that is due to an inability to effectively write complete applications or simply put its being over engineered.

Apparently when most developers start their careers they want to "save the world" its like a digital version of a hero complex, we want more for our users than the dreary basic features in short we get feature happy. The thoughts of "wouldn't it be great" tend to take our attention from improving core functionality which is usually very boring so it tends to have the least amount of time spent on it. Instead we build sledge hammers to hammer thumb tacks, this is a classic rookie move and usually doesn't happen right away. Mostly because entry level programmers aren't given their own projects right away. When they do they want to show that they can bring more to the table, this is something that I'm told never goes away you just have to handle it. I'm not sure what that means but I'm sure I'll find out sooner or later. So here is the warning to all your rookies out there, don't make the mistakes of the many... if you do try and make them small.

Tuesday, March 27, 2007

Good Interview by Bjarne Stroustrup

I was mindlessly web surfing trying to get past the mental hurdle that makes up most of my waking hours and came across a good interview with the inventor of C++, Bjarne Stroustrup. Now if your a programmer and don't know the name you may want to reconsider your vocation. The interview talks about Stroustrup's thoughts on programming languages, object oriented programming and even aspect-oriented programming. All in all a good read check it out here

Monday, March 26, 2007

My new addiction

So for the last week or so I've been trying out this new web craze... called Twitter, I'm hopelessly addicted. So in order to make my craziness work for me I'm thinking about working on a Windows application to feed my addiction. However, I need find time to work on it, so this could all be moot. Never underestimate power of procrastination.

Basically there are some great Twitter applications for the Mac, but not so much for Windows so I'm thinking about building one... at some point in time.

Sunday, March 25, 2007

New day... new blog

Today is a new day so I've decided to create a new blog about software development from the viewpoint of someone new to the industry. My goal is to archive my thoughts on something a bit more organized and permanent than a post it note. Mainly to see how dumb I was when I started or at least that's the idea. So I guess we'll just see how this goes