If you’re at all successful in your job and work for a company that looks towards the future and wants to do more, you’re going to end up with more projects than you know what to do with.

I find it most helpful to not store all that project data in my email program.  No matter how good your email program is, it is not a project management system.  I subscribe to the concept that I should “clear” all of my email whenever possible.  For me, that means I have them all marked as read.  This is the fastest way for me to recognize things that I still need to do something with in one way or another and those that have been handled.  Some people actually go so far as to delete emails once they’re done with them but I often find that I need to reference emails days, months, or even years later.  Some people also actually file those emails into separate folders or tags but I would spend all day doing that.

So what do I do with all this project data?  Use a project management system.  If you’re working in a team it will be important to share critical pieces of that project with your team members.  There’s lots of project management software out there, and I’ve used a few of them here and there.  For my day-to-day work at DT, we use a system I created called “Kirkland”.  It does everything we need because we made it ourselves.

Side note: since I’m a programmer, I see the world through a programmer / engineer’s viewpoint.  If I look around and don’t find the tool or system I want, I make it myself, hence why we have our own project management system at DT.

Your project management system should at minimum if used by only yourself:

  • Be easy to use
  • Support multiple updates per project
  • Support categories or tags, or clients, or some way to group projects
  • Support sorting and/or prioritization
  • Have statuses and filter by them

In addition to the items listed above, if you’re working with a group of people your software will need to:

  • Support multiple users
  • Have at least one user assigned to a project, an “owner”
  • Support some kind of communication method to encourage people to write their updates in the software

Why is all of this important?  If you have so many projects you don’t know what’s going on and/or you loose project details because they get lost in email, you’re an ineffective programmer.  Keep your stuff in order and you’ll be more sane and therefore will get more productive work done which will make you feel better.

August 12th, 2013

Posted In: How to Work

Leave a Comment

When programming, use the right tools for the job. Use tools you’re not only comfortable with but also help you get work done in a more efficient way.

I highly recommend a solid code-writing program. Whether it’s TextWrangler, BBEdit, Notepad++, Coda, Eclipse or something else, find a tool you like and use it. It should support the ability to use your cursor to select chunks of code, syntax highlighting, be able to properly handle tabs and not make them into spaces, the ability to SSH onto remote servers and work directly with code stored there and have multiple windows or tabs open at once. Features beyond that are entirely up to your personal taste.

You should have some kind of SSH command-line tool. Mac OS comes with Terminal but I prefer iTerm myself. All flavors of linux have a terminal built in as the very core. Windows? Not sure, I don’t do any programming there.

A FTP / SFTP browser is helpful but not all that necessary for most plain-jane programming work.

Why use these good tools? Does a carpenter use a pipe wrench to put in nails? No, duh. By the same token, would he use a hammer made from wood? No. Modern tools help us be more efficient and focus more time on what we’re trying to work on rather than the how of how we’re going to work on it.

August 12th, 2013

Posted In: How to Work

Leave a Comment

Focus is incredibly important.  In the last several months I found myself distracted with switching back and forth between so many projects that I wasn’t effectively getting anything done which resulted in even more open or pending projects.  It also made me feel like I was a ball in the pinball machine, never knowing which way I was going to be thrust.

I’ve redesigned my week so that I have periods of dedicated programming time that cannot be interrupted by anything short of an emergency.  Technically, this is only about 2 hours per day but it’s resulted in a whole ton of stuff actually getting done, and that’s fantastic.  Accomplishing projects that were somewhere in the medium-difficulty range that simply weren’t being done before is fantastic to have that sense of accomplishment again.

If you’re finding yourself so busy you can’t seem to get anything done, then block off some time and do only one thing.  Everything else can wait, because it would be waiting anyways.

July 19th, 2013

Posted In: How to Work

Leave a Comment

Don’t be vague in your communications and assume that people know what you’re talking about.  All you’re going to do is spawn more communications and delays.  Take an extra couple seconds and include the right words, images, or just general clarity so the receiver knows what you’re talking about.

May 23rd, 2013

Posted In: How to Work, HR

Leave a Comment

So I just reviewed and am overhauling a project another programmer worked on.  The programmer worked way harder than he needed to in order to get the project completed.  As a result, it didn’t get completed and that’s why I’m taking over.

In this system, it’s a reverse shopping cart.  Meaning the customer is selling stuff to the website instead of the website selling stuff to the customer.  This particular project is actually a pretty easy one because the programmer doesn’t need to create all of the code, structure, backend, administration, functions and features that would be required for a system like that, instead he/she only has to utilize an API to a system that handles all of that.

The API handles pricing, cart functions, customer functions, order processing, etc.  All you have to do is tell it what the customer is doing (adding an item to the cart, removing an item, attempting to log in, etc.), and the system will reply back with success or failure messages and any pertinent details.  Our programmer is then responsible for outputting necessary information the the page and moving the customer through the process.

I estimated this project at less than 10 hours.  The previous programmer spent 9.5 hours on it thus far and is about half way done.  He wrote a ton of code to handle advanced cart management and other object-oriented systems when he didn’t need to.  All of those functions, even those concepts were handled by the external system.  All he needed to do was send the user actions to the external system and it would handle all of the high-level stuff.

My message here is simple: just because you can build a sophisticated system that can handle everything under the sun doesn’t mean you should.  A much smaller, simpler system is going to be faster to implement (and cheaper since time=money), easier to debug (less lines of code in a less complex system) and easier change or manipulate in the future.

April 7th, 2013

Posted In: How to Work, HR

Leave a Comment