Invoices Suck

Writing technical blog entries has the requirement of something relevant, can be digested in one or two readings, and is well thought out & proofread. I currently have tons of relevant stuff that can easily be digested by the community, but no time to collect my data & write them. I’ve been so overwhelmed with work, that taking the time, even with a gallivant into the South Caroline mountains to stave off burnout, has been hard to find. Thus, I figured I’d report on my current and past situations in an effort to provide corroboration for others in similar situations for the mere sake of relating, or going, “Damn, I’ve got it good.”

I’ve been contracting with a new company for 3 weeks now, and have officially entered my first Enterprise project. I was under the impression I had in the past, but a few key ingredients were missing, namely more than 1 client developer, and a code-base older than 6 months. I’ve also met my first, successful purist developer, my boss. More on him later, but suffice it to say, he’s apparently successful and follows best coding practices at the same time which is the first time I’ve seen it actually in a real person. He enforces them with a heavy, but well tact hand upon my fellow developers, me included. This is a big deal because I always figured OOP, MVC, design patterns, coding & commenting standards, etc. were just ivory tower concepts that you attempted to implement to help stave off the insanity that software usually is.

Yet, I’ve spent everyday for the past 3 weeks “cleaning” my code in some way, even if it’s no more than 30 seconds worth. I’ve done more re-factoring & encapsulation in the last 3 weeks than I’ve done in 4 months on most projects. My inference on the logic of such aggressive following of best practices, aside from what I’ve been told & discussed is that of confirming my own experiences. For example, it took me about 5 years to really feel like I knew wtf I was doing in regards to programming. Yeah, you always learn, but there comes a point when all of the stuff you’ve researched and learned finally reaches a point where you don’t hate your code at the end of the day… only after a year. That’s still a great improvement and wonderful pinnacle (plateau?) to reach. In that time, I’ve learned how valuable OOP, MVC, and Frameworks are to fighting off scope creep, reducing the amount of code you have to write, and making things easier to maintain over time. This has NOT been the case with code-formatting & naming standards, nor with commenting rules.

Since the scope of Enterprise projects is soo much larger, my guess is… bigger Godzilla, bigger artillery.

However, I’m still in like… month 3 of 5 years when it comes to managing business stuff. Take invoices for example. I still have 1 outstanding, and it’s taken me a month just to get 4 out of the door. And, #4 of 5 yesterday accidentally had a factor of 8 hour days instead of hourly on it… but I put hours on it. This was like almost 5k extra I was charging the client. Thirty minutes go by, and when doing something time related (I’ve been doing a crap-load of time tracking lately as well), I suddenly realized the invoice I did was based on a different time scale and immediately called the client, explained the error, and re-sent them a new one. Oops… what an f’n crackhead.

In reading the Pragmmatic Programmer, and realizing every Flash Game programmer that is good uses emacs. As such, I’ve been trying my damndest to get lower level, to use command line and other automation tools that have been around forever. The goal is to further expedite my development and work to make me more efficient.

…therefore, I’m wondering wtf people do for my invoices. I had a weeklong drama talking to my dad about secretaries, and what they entail, etc. He uses Quicken to do most of his paper work, but it didn’t do his service work sheets, so he’s actually buying a custom product to help run that + expenses + keep track of his service work.

For me, it’s merely I did X in Y time, please pay this amount, thank you, your project was fun, hope it makes you bling, have a nice day all in Excel. Writing these things and keeping track of them as well as who I sent them too, and who sent a check is… well, it sucks. I’d rather be coding vs. running the mundane business details via Excel & Outlook. What do people usually use? The same method? Do they have a Administrative Assistant do it? Or, should I shut the $)%* up and bite the bullet?

14 Replies to “Invoices Suck”

  1. Yeah it sux. Right now I just use PDF templates cuz I HATE excel. I’ve been wanting to build something with zinc to prepare, print em and organize em in a db, but its still a pipe dream.

  2. invoicing, is a bummer, what a pain, but….
    as with programming having a good system that is traceable and verifiable is a must. I have owned my own business and have see IRS audits (they suck!!!!). Excel is fine for just a few invoices, but what if you have a more complex situation, such as
    billing client for other purchases( software,hardware,etc.)
    partial payments
    retainers and service contracts
    variable rates (html v. flash)
    credits, returns, etc..

    Yes many of these may not be relevant, but they might some day, and if one day you have your own business will be. Also accounts like consistency and clarity. Yes blinksale may be fine for a few invoices, but can you track your average cost per billable invoice, can you determine instantly if you are charging enough for a particular service, what about expenses related to the project, this is important come tax time, hey that new Flash book is a business expense.

    So utilizing a decent system to maintain this does several things. One, creates a single source of information for all business related monetary transactions, gives the IRS and account a clear picture of your business, insures your cost v. income are inline, and teaches you good practices that will benefit you throughout life.

    Hey a little effort can maximize your income. e.g. I Itemized my charitable deductions and added over $900 to my return for what a little forsight and an evening with turbotax and its deductible.

    Oh, so something like quicken premier would be good as a start. good for both personal and business and only $80 bucks.

    So no slacking

  3. Glad to hear your really working on your OOP. I have been doing the same lately and it only takes that time where you have to extend an old project to realise how well your building things now. It really helped to work on an Enterprise project to get into it. 6 Developers doing everything properly was a real eye opener…..the Ivory tower is nice to live in :o)
    C.

  4. I’ve been a consultant/contractor for over 10 years. Dealing with invoices sucks… and always will. I’ve used Quickbooks for about 9 years now, and it has worked really well for me.

    It takes me just a few minutes to generate an invoice, print it to PDF and email to the client. I then can track how long the invoice has been outstandint, and if need be generate an overdue invoice.

    I also use it to track my business expenses.

    I only use a small subset of Quickbooks functionality, but it has worked very well for me.

    Unfortunatly, it is Windows only.

  5. oh there are plenty of invoice software out there :) I feel your pain.. I have a very stupid process that works for me very well:

    My Docs
    /invoces
    /2006
    /out
    /paid
    I have my PDF invoice template to create them, when I send them out, they are under out. After they pay I move it to Paid :)

  6. Jesse:

    I’m not a contractor, so I have almost zero expereince when it comes to invoices and the like, save maybe my weekly labor claiming via an intenal IBM app — I’m sure you could create a Flex app to do the same…and then integrate it was pdf or flash paper… ;-)

    As for enterprise development — clean, consistent, well documented assets (via code comments and design docs — some type of architectural work products like UML diagrams, etc), design patterns, frameworks, etc all will prove extemely worthwhile in this type of engagement. This facilitates communication between developers by creating a common language set (one of the basic points of design patterns), and allows new and old developers, those that have worked on the project for yrs and those that have just begun, to become extemely conversant in a matter of minutes / hours, instead of days, wks,…dare I say never…

    We’ve had our fair share of large Flex / Flash apps, and I can’t impress upon you enough the importance of well documented desgin docs. Often, we’ll create UML class, sequnce, use case diagrams as a starting point; from there, we’ll generate heavily commented (javadoc style) stubbed code — there’s some tool sets out there that do this for Java, and then you can convert Java to AS, etc — once we have this thickly documented code base, we can generate docs. You’ve seen them for ARP, Cairngorm and what not. I like AS2Doc.

    And as for automated tasks, gotta use ant…but you already know that.

    Best of luck.

    -riley

  7. Riley, I hear what your saying. In fact, I’ve heard it for 3 years… and never seen it happen until the past few weeks. I’m not the one who has to explain to the client the importance of these things, and apparently my boss can. so it’s first time I’ve actually been able to actually follow through with 90% of what you said.

    I clearly recognize the importance, but none of my passed employment has allowed me to actually do all of those things consitently over a long period of time. Deadline pressures had removed all desire to do any of that; end goal – finish the project no matter what.

  8. Read you loud and clear — while I’d like to say we follow the aforementioned schema all the time, it’s not the case all too often. We’re often given projects that have been scoped by someone who *isn’t in the know* — they know how to sell, and do, but where does that leave the development team? It usually leaves us in the unfortunate predicament of, just get it done mode, and there is no time for design prior to build; instead they become one in the same — not a good process, but it happens all the time. ;-)

    …cherish the project where you can take advantage. Again, best of luck kid…and from one geek to another…enjoy.

    -riley

  9. Welcome to what we call ‘overhead’. You’ll learn to love the invoicing. Invoices mean coin. Coin means food. More coin means shelter. More and more coin means toys. The bigger your business gets, the more overhead you incur in the way of business processes.

    Quicken for Small Business or Microsoft’s new small business accounting package are both good.

    Don’t be crazy — no administrative assistants needed until your generating invoices every couple days and need to track down unpaid bills. For now you set aside time every Friday afternoon to do invoicing and other business paperwork.

  10. You say ‘haste makes waste’ in your code… I’d say, yes. But there’s also a point where you can over-engineer. That probably doesn’t apply to your 5 month project… but both points (haste/waste and don’t over-engineer) apply to invoices. Personally, I’m so low tech it’s silly. I keep a text file and add to it every time I work on a project. I usually include notes as to what I did. Often, if the project is getting gnarly or close to crunch time, I’ll make a simple table in which I track all bug fixes and revision numbers.

    When it’s time to send a bill, I just copy the hours into excel–really for no other reason than to check my addition.

    In any event, a contract MUST build in time for invoicing as well as down-time… prospecting… keeping up on technology… and networking. It’s so easy to get one job and become 100% booked–but it’s important (to me anyway) to never let that happen. It’s tough to justify sometimes but those other things keep you sane and keep your business moving. A key goal is to smooth out your activity–that is, avoid hills and valleys. Anyway, close to your #1 priority must be getting paid. I mean, sure, it’s nice to take on projects you believe in… and those that help you grow. But if you’re not getting the money you need then you’ll never make it to the next step (of growing etc.)… you’ll just burn out and move on to something else.

    Hope it helps.

  11. Ever had a boss that basically tells you not to waste time planning? That’s pretty much my boss. Little planning, no documentation, no planning for reusability, advocates copy and paste, against seperating view and data access, etc. He can get stuff done quickly but of course his way of going about it shows. Kind of frustrating. I would much rather have a boss that pushes planning and good practices.

  12. Here’s the answer to your invoicing dilemma In fact, the first step in this solution might bring total harmony to every area of your life: 1. Convert to Mac. 2. Buy iBiz time management and invoicing software. http://www.iggsoftware.com/ibiz/
    The company’s tagline says it all: Beautiful, intuitive, powerful…the way Mac applications should be. Great post, it’s always a pleasure to listen to your story.

Comments are closed.