Reader Feedback: Personal Project Management

With August winding down to a close and the insane August family event schedule over with (5 birthdays and my wedding anniversary) I now have the time to answer some of the reader feedback questions I had solicited at the beginning of the month. So, to give something back I will be answering one question each day this week. Today’s first topic is Personal Project Management.

As I never get tired of telling people, my employer is one of the enlightened few who lets their employees telecommute 100% of the time, so there are some different challenges in play. I understand that some people could not “handle the pressure” (their words, not mine, although I am paraphrasing) of working from home. At this point I could not imagine going BACK to working in an office.

So, with your boss always around on IRC and just a phone call away, how does your grumpy correspondent stay on top of his tasks since he knows the boss will never show up at my desk asking me a question? You may be surprised at the answer if you know me in real life: through self-discipline.

Yes, I can already feel the immense amount of eye-rolling (including my mother) but it really is true. If you are the type of person who needs to be constantly told what to do, you are not going to cut it in a telecommute environment because you WILL be left alone for long periods of time to Get Things Done Without Constant Supervision. The only way to make sure you are able to function without simply going upstairs and watching TV when you are supposed to be working is to, well, act like the professional coder you are supposed to be. So, how do I handle this? Please be aware that this is a method that works for me and probably only for me. Copy it at your own peril.

I tend to approach programming assignments as if it was Big Problem that can be solved by breaking it down into Little Problems. This is why when confronted with the question “is there any programming challenge you solved that you are really proud of?” I tend to draw a blank because, well, despite all my bluster and accusations of being an asshole, I don’t really look at the stuff I do and say “goddamn, that was amazing work”. To me, it’s really just solving a bunch of smaller problems that make up a bigger problem. I guess you thought I’m a shameless self-promoter of my work. I try to do go

I mean, not every programming task I complete is what I would call exceptional work because sometimes you just can’t figure out an exceptional way to do it. Plus, I can’t bring myself to be such an asshole as to expect everything I do to be perfect. Not everyone is at their best all the time. Therefore, I try to follow a policy that was explained to me by gwoo from the CakePHP project: “Make it work, then make it work better”. I can’t think of a better philosophy for the type of work I do every day.

Everything beyond how I approach solving problems is really just non-important. I make lots of notes, but I’m not a compulsive note organizer. I don’t have any system for keeping track of what I’m working on beyond a simple list of items in a spiral notebook that I cross off and scratch away at while I work. Hate to disappoint people, but I try to keep it very simple. Whenever I veer off into the land of Complex Task Tracking, I spend more time tracking tasks than doing them. Keep it simple, keep it something I can use each day and every day.

So, that’s my approach to personal project management:

  • Be professional since you are, you know, being paid to do it.
  • Keep your solutions simple
  • Adopt organizational practices you can follow every day.
  • Try and do your best work whenever you can, but understand when you are not at your best
Article Tags >> ||

August Is Reader Feedback Month!

With summer half over, I’ve realized that I’m just too damn busy during the summer. As a result, my blogging suffers. So, I’ve decided to turn things around and bit and ask my readers what they would like to see in the next month or so.

Using Mint I do get to see what visitors are looking at when they visit, and it’s a mixed bag. Which is good. Many of my tutorials and smaller posts have gotten lots of visits and lots of great feedback. Again, which is good. Feedback lets me know if I’m being clear in what I’m posting. But now I’ve sort of hit a lull and run out of topics. I’m sure nobody wants to read about my struggles at softball or the intricacies of politics in my job. You know, the boring non-technical stuff. Instead, I want to give YOU more of what YOU want.

In the comments, let me know what stuff you’d like to see. Follow-ups to existing tutorials, my thoughts on certain topics, explanations on other things I’ve blogged about. I’m sure that some of the existing content might be slightly out-of-date, so if there is enough call for revision I’d be glad to revisit things and give them an update spin.

As most of my commenters know, I do moderate every single comment that comes in and only dump the spam that gets through Akismet. Don’t be shy, let me know what sort of stuff you are looking for.

Article Tags >> || ||

What Is Really Considered Documentation?

I struggled to come up with a good name for this blog post, and have totally failed, but give this article a chance. Or maybe you’re here by accident thanks to a weird google search.

As a committed user of open source technologies, the difference between me using something and not using something is the documentation. Is there documentation for it? Is it easy to find? Does it answer my questions? Is there someone I can call an idiot if I disagree with the level of documentation? These are all very important questions.

My involvement with CakePHP has opened my eyes in terms of what people consider documentation. Me, I’m the type who learns from examples that come with explanations. While API documentation is great, it only becomes useful to me once *I* can figure out how to do something useful with this new technology. I see people on the mailing list for Cake asking for the source code to a sample application, which I immediately file away in my head as “looking for answer to their homework”, and move on. Maybe that’s unfair, but it’s more a reflection of the fact that I tend not to learn anything from having the source code for an application. I learn by getting in there and DOING SOMETHING and figuring out why this goddamn thing is not behaving properly and who do I know who can help me with this problem etc. Learning by mooching, I call it.

So, back to CakePHP. CakePHP had acquired the reputation that the documentation for it sucked. While I did not share that opinion, I can see why people say that. Because most coders are lazy. Seriously. They want solutions handed to them in a form that they can just drop into their application and then get onto the next problem. There are definitely times when I wish someone else could just write this goddamn “alter the football game stats form dynamically via Ajax and send the results to the XML database” code for me. Inevitably, I build the code up from an example stolen via Google into something that both works and that I understand fully. However, most of the time I am content to figure stuff out on my own and ask for help only when stuck. I’m not lazy, but maybe I’m suffering from a bit of the Lake Woebegon effect.

So, things are much better in terms of documentation for CakePHP. Whereas we used to have a manual that only covered 1.1, we now have the amazing CakePHP cookbook that covers both 1.1 and 1.2. If that’s not enough, well, you might actually have to do a little thing I like to call “research”. This gets us to the point of this blog posting. Sometimes you have to stop being lazy and actually think about where you could find an answer.

There are no shortage of blogs that talk about CakePHP. Some of them are even good. Maybe you like the code examples I put up here. People seem to like them enough to comment, so maybe I’m doing something right. Google is your friend to track down blogs that have exactly the type of information that you need: small examples with explanations about how they work.

The CakePHP mailing list is done via Google Groups, so all those posts where I make fun of people for no reason other than my poor self-esteem can be found with a few keywords. But there are a lot of great tips on how to accomplish things using Cake, so a search of the google group will find lots of good information.

The Bakery is another good source of CakePHP info, consisting of all sorts of small articles along with comments. It has a search function as well, but could easily be considered YACB (Yet Another Cake Blog). Again, perfect for people with the same learning style as me: short examples with explanations of how it was done.

Finally, we come to one of the more unorthodox documentation sources: the unit tests for CakePHP. CakePHP has some really good unit test coverage, although I sometimes wonder if you can really say that a piece of code works properly if it passes all the unit tests associated with it. This is by no means a phenomenon limited to CakePHP, it happens everywhere there are unit tests. Sometimes you can’t figure out a test that makes something break. It happens, so please do not misinterpret my thoughts on this. Unit tests are good, and the amount of tests that CakePHP has in place is awesome and perfect example of a cohesive development team. Automated testing is a goal worth striving for, don’t let anyone else tell you otherwise. I’m in the early phases of automated testing for a work project on the integration side of things because I’m tired of always running through the same damn tests by hand all the time to make sure something that I wrote didn’t break things. Tips on what good browser-based solutions are out there would be appreciated. Other than telling me to use Selenium. A solution that is tailored to the framework I have been forced to use would be even better.

Okay, back on topic. Since the unit tests cover so much of what CakePHP can do, what better way to see examples of how to actual do things? My work on fiddling around with new console functionality showed me that I had no idea of how to create unit tests for my console work. That led to discussions with people on the best way to do testing of console functionality. Which leads to changes in the console code itself to make it easier to test certain things. But at least when I’m ready to get back to doing that console work I can see if doing testing for it has become easier.

So, having been told all the stuff above, how can anyone who is not simply lazy say that the documentation for CakePHP sucks?!?

Article Tags >> || ||

What’s In Chris’ Brain, July 2008 Edition

The summer is always the worst for me in terms of blogging. That’s when I have to run my team in the IBL, play slo-pitch (or softball for my American readers) at least once a week, do side-jobs to help pay the bills, and spend time with the family. Phew. So, that leaves little time for the types of activities that lead to good blogging. But never fear, I will continue to dispense what wisdom I can from here. So, here’s some of the things I’ve been thinking about.

Closures and lambdas coming to PHP

Via twitter I found out that PHP 5.3 is going to have lambdas and closures. I suggest you google around for a better explanation of what they are, but they are an incredibly powerful tool. If you do any Ruby on Rails work, you end up using them. If you use jQuery, you end up using them. I had a conversation in twitter with Mr. Git Book about this, where he accused me of being a “closure hater”. Believe me, I’m not a hater of that particular programming construct. I simple expressed my feelings that given how horribly some PHP programmers abused OOP concepts, I imagine the same things happening with lambdas and closures. Please prove me wrong.

Where The Hell Are The Easy Layout Editing Tools For Non-Designers?!?

I have a side job where I am taking an existing app and converting if over to CakePHP, but preserving the look and feel. What this poor designer-challenged programmer needs is a tool that will take that existing HTML and let me edit it in a fairly intuitive way so I can fix the so-many-damn-tables-I-want-to-bleach-my-eyes layout that exists. Can nobody help me with this? Sheesh. I don’t want to burn up my billable hours fucking around with layouts.

The Framework Jihad

I need a “Framework Jihad” t-shirt. Size 2XLT, please.

Yes, the arguments about frameworks will just not go away. Which one is best?!? Why should you even use a framework?!?! And the more it goes on, the more ambivalent I feel about it. I cannot think of the last time I wrote a PHP script that was NOT part of a framework. Hell, even my Python programming has been 75% Django and 25% straight Python, but that’s only to do things like loading up databases with info from a CSV file. But here’s what I think: the Framework Jihad is winning.

If you substitute “modularized code with standardized API” for “framework”, would that make people feel better? I use frameworks because so much of the infrastructure code is stuff I DO NOT WANT TO WRITE ANY MORE. After 10 years of doing this, it’s time I stopped reinventing things. My old motto of “just build it, damnit!” requires a structure around your application to let you quickly build something. To me, that means a framework that has taken care of database access and application flow and templating.

The number one complaint about frameworks appears to be that they are slow and have all sorts of overhead. Fair enough, but I tell you what: I’ll worry about scaling when I, you know, have something to worry about. If I get to the point where I have to worry about scaling, then I have done very well indeed. Despite our desires, not everyone can create a Flickr or Twitter. They are the lucky ones. The rest of us should shut up and just build something.

It’s just too easy to dismiss the Framework Jihad as irrelevant. Like many things in life, dismiss it at your own peril.

Article Tags >> || || ||

Web Mockups, With A Hint Of Balsamiq

(Disclaimer: after trying out the demo for this application, I discovered I could get a license for it by saying nice things on my blog. I was ready to fork out the money for it though)

I cannot be the only one useless at interface design. I know my buddy and fellow patio-laying-at-my-house-worker Kevin is too. While checking out Hacker News I came across this great application called Mockups, which is cool AIR app (I use Ed Finkler’s so-awesome-I-actually-use-it AIR Twitter client Spaz) for (shocking, I know) doing mockups of things.

When I saw this, I said (really) “Holy shit!!!”. And started to play with it. And quickly realized that for people like me, this is the PERFECT tool for creating mockups of the sites I want to work on. I agonize over sites when I’m building one from scratch, so much so that I feel the “paralysis from analysis” effect I have heard others talk about. Don’t believe me that it’s this cool? Check this demo out:

To me, the really cool thing is that it is also available as a plugin for some of the most well-known collaboration applications out there: Confluence, JIRA and Twiki. For me, the desktop version is just right, as I can take those mockups I create and export them as PNG’s that I can then pass onto designers for comments and tweaking. This is a sign of a developer who is “done, and gets things smart”.

It costs $79, and for the frustrated programmer who wishes he could better as a designer, this is an amazing tool to add to your toolbox. Go try it out and give him your money!

Article Tags >> || ||
Want to advertise on this blog? Send email to chartjes@littlehart.net
GTcars Canadian Car Audio TurboDodge Car For Sale Sign
Audi Forum Mustang Forum Dodge Intrepid Miata Turbo
GTscene Pontiac Bonneville