July 1st, 2009 — 3:35pm
I wanted to document the last two projects a little …
Accomplishments
The first was a website for a property management company. This should go live today or tomorrow and I’ll probably post it here. This site took a while to get through because of conflicting timelines and deadlines. Fortunately the client was extremely patient. I’m proud of the work. The site design is really nice and the work was pleasing.
The second was a website for a payment gateway. It should be live in a day or two as well. This project was good for me. It forced me to step back into .NET and made me learn a domain I hadn’t completely understood yet. Going back into .NET, specifically C# was good because I was able to bring some Ruby mentality to the code. I noticed that I wrote fewer lines of code and only wrote code I absolutely needed. This isn’t Ruby idiomatic per se, but it’s the style I learned best from Ruby - not C#. I also noticed that my design process was much more fluid than in the past. I didn’t sit down with UML diagrams first to mock up the design, rather I sat down and started writing.
Lessons
I call these lessons because it’s true, I did learn. But it’s not new lessons as much as reminders. I know all of this stuff. I just need to be more disciplined.
First I learned that I shouldn’t write notes in too many different places. I found I had too many places with notes and sketches. This was problematic because when I’d get to writing code I may only have one piece of info in front of me, even though I had a couple of pieces of info somewhere else. There were quite a few times I’d post products for review and whole requirements were missed simply because I was looking at the wrong note. I did a great job of note-taking but a pretty poor job of note-reading. Right now I have four notepads and two clients and the notes are scattered amongst all of the notepads. The result is that going forward I will put each client project into it’s own Moleskine. This way I can deal with only one notepad at a time for each client.
I learned I should stick to my guns. The second project was requested to be done in 40 hours. Given the requirements I read at the time it seemed doable. And I agreed to do it - even though I quoted more than 40 to finish it. In fact I folded on that twice. My original quote was 60-80 hours. Then it turned into 30-50. I conceded to the client’s wish and agreed to try and do it in more like 40. Turns out we are really closer to 60-80 when it’s all said and done. Funny thing - I don’t feel bad for having missed the deadline as much as I feel bad for agreeing to do it in that short amount of time. Software requirements change and timelines should change with them. Looking back on the work I did it is much bigger than 40 hours, and the original requirements I was provided represent half of the whole project.
The last thing I learned was to take my time in the first week of a project. I need to really absorb the whole product before I dig in. I still need to write code early, but I shouldn’t do it to simply fulfill one or two of the requirements. I should do it with the whole product in mind. There were a number of times where in the middle of writing code for a feature I would realize that there were actually two or three features hidden in the one I was working on.
Pretty good work for the last few months. And from now on I’m going to focus my notes, stand my ground on expectations and take the time to think out the whole product early and often.
Comment » | Work
June 5th, 2009 — 12:08am
I’m working on a project for a partner that requires the app to be built in .NET land. Bad enough, but OK. I’m a developer and love code so I can dig it.
But then we (and when I say “we” I mean “they” and I didn’t fight too hard otherwise) decided to use GoDaddy. Oy vey. My first response was “don’t use GoDaddy”. But then I held my tongue. It’s my partners project and product. His call. The dude abides.
So we call up GoDaddy and we ask questions about their hosting plans. Sounds great. Grid computing for the web app front end and a virtual dedicated server for the SQL database. And - it’s pretty cheap. So we sign up for 2 years of VDS and 10 years of Grid computing. The accounts are setup and I start work on moving the app over to them.
The pause is me leaning back in my chair and running my hands over my receding hair line with a grimace on my face.
…
First of all that SQL Server we thought we were getting … eehh … not so much. It’s a legit Windows 2003 server, but it doesn’t have SQL on it. I email support and they say “oh yeah. Download SQL Server Express”. What? But we talked about the dedicated server as a SQL server the whole conversation on the phone. You would think the guy would have said “it doesn’t come with SQL Server licensed or installed.” OK, I can work with that. Download SQL Express and try to install. Fails. Over and over again it fails. As I discover 2 hours later, Windows Updates has been blocked on the server. Not blocked as in turned off. No I mean blocked deep in the bowels of Group Policy settings. Once I twiddle all of those stupid settings I get SQL installed.
Then with the little bit of patience I have left I install the web app on the grid computing account. Piece of pie. 5 minutes. I go to the URL to test and FAIL! Can’t connect to the SQL server. Yes - that SQL server I just spent hours trying to get up.
[2 more hours of throwing darts in the dark]
Turns out GoDaddy basically blocks any and all SQL connections to outbound servers (TCP/IP and Named Pipes). Even their own apparently.
You can’t have a GoDaddy website that connects to a SQL server database that is located anywhere other than the exact same machine the website is on. Not cool.
I’m sure the decision to make this kind of architecture for hosting was all well intentioned. I know people don’t sit around thinking of this kind of evil. But the stupidity still amazes me.
So now I have a call scheduled to discuss how we’re going to unwind this clock. Fun. Can’t wait.
Comment » | Work
May 31st, 2009 — 4:27pm
I just finished watching a presentation given by Merlin Mann. It made me think of a recurring theme that has been in my head for a few weeks now. The theme: I waste a lot of my time.
Merlin’s talk was about creativity patterns. More specifically patterns of behavior that people can create for themselves to be more productive. In his discussion he says a pretty critical thing which is creative work is still work. He then goes on to labor the point by saying “stop building up devices and ticks to induce creativity and start working” (I paraphrase).
I took it this way: shake and bake. Do something.
For a while now I’ve had ideas for projects and things I want to build. And in order to help with that I do all kinds of reading online. Searching for the 1 or 2 things that will spark my fire to get it done. I’m doing it wrong.
I took out a paper and drew my day into blocks. I marked sections of the day on what I do and sections I think I would like to devote to my work. Turns out I waste a lot of time. Like close to 4 hours a day. Huh? Yep. And most of it is on TV.
I work a full day, spend time with kids and eat at proper intervals. And yet I can still waste 4 hours on TV. Yes I can. Seems to me I’m not prioritizing my time to the things I want. I’m letting them get sucked into the 1 eyed monster.
Kimberly and I have already decided to turn off the cable. Actually this conversation has been going on for almost a week now. Today however it is crystalized with me. No more TV. Thats a sacrifice I’m willing to make. And I bet that I will find that creative spark to light my fire and get my projects going. At least I’ll have more time for it to happen.
Draw your day into blocks. Mark off each hour. What is it your doing all day? How many hours do you lose to things like TV? I bet you might be surprised.
Comment » | Life, Work