Raleigh NC, USA
support@misfittech.net
lab1_dark
Future Value
Home » Uncategorized  »  Future Value

You most likely have read my previous blog about what is a successful project. Well a few years back when I came to this realization that most of the projects would be throw away projects. I asked myself if this project is thrown away what can I get out of it that will help me in my future?

Future Value

This got me thinking different about my work product and what I wanted. Specifically I started realizing I could learn how not do projects.

Note learning about what is going wrong in projects and about good management is a sure way to make your engineering career very frustrating. It is like watching a train wreck in progress where you know there is nothing you can do about it.

Beyond learning about what not to do on projects I realized that all the designs and code I did should be items I can reuse. This idea was not revolutionary for most, but for me it was a significant change. That is I would write code and comments with the assumption I would be using this code again.

This reality really hit me as I was writing a UART driver for a new processor. Over the years I have probably written 20 UART drivers for various processor and chips. As such this was not a new thing for me.

I normally start by writing a getc() and putc() polled function for the UART. Then I implement interrupt handlers and FIFOs for the UART, and then I might even implement a DMA system for UART. So it was a day like many others and I started writing the FIFO code. I had always hate writing the FIFOs as that off by one errors always see to happen. I then realized that I had written code for a FIFO 100s of times and it seemed silly to me that I would be writing the same code again.

I think stopped and wrote a FIFO library. That is I took the time to write the code where I could reuse it. This way I verify the library works once and never have to write the same code again.

This radical change in my coding a few years back has created some interesting results. Specifically now my code is more organized into libraries. I have developed a foundation in the code, like how to do error logging that is portable. However the biggest change I have noticed is my development is faster and has far less bugs. That is most of the bugs I tend to fix are ones where the requirements change or were unclear. Like what should happen when what is expected to happen doesn't.

This also has changed my happiness on projects as I know that even if the project dies my work can be of some future value.

Leave a Reply

Your email address will not be published. Required fields are marked *