Monday, December 10, 2007

I knew this would happen

One thing that I've learned about myself over the years is that I have a difficult time staying committed to projects. I often get pretty interested in a particular idea or project and start in on it all gung-ho and within a time period as short as a week or up to a couple of months my energy will fizzle out until the thing finally drops off my radar as if it never existed.

I intend not to let that happen with my blogging efforts because I find that it really helps me when I can put my thoughts down into words and, shocking to me as it's been, I've actually heard people read and comment on what I've written. However, there has definitely been a downturn in the number of posts over the last month. Now I agree there's nothing more boring than someone blogging about their blogging, but I will say that I can see why the change in my posting habits has occurred.

I don't think it's due to a loss of interest, but rather a change in the way I perceive my situation. I've been at my new job for close to 3 months now and I think things are becoming routine and familiar. There isn't quite as much going on that really gives me an idea of something interesting to think/write about. And I'm not a person to just talk about trivial things just to hear my own voice. So that just means that topics I think are worthy of writing about are coming in longer intervals.

So, if you're reading this, thanks! I'm not giving up on the blog, but simply acknowledging that it's going to be going at a slower pace than it has in the past.

And that will be the last blog post about my blog posts. :)

Thursday, November 15, 2007

Paid vacation

While it isn't really a vacation, I am really looking forward to this weekend when I will be going down to Chicago for the No Fluff Just Stuff software development conference. The silly name simply reflects the fact the the conference organizers put a lot of effort into packing the most useful and interesting information and speakers into the weekend as possible. I was introduced to this conference through my previous job, where all of the developers were encouraged to attend each year. I asked my new company if they would send me this year and they seemed happy to do so.

I really think that paying for this kind of training and career/skill development is an amazing benefit that a company can provide its employees. I always find that I learn something of value and I certainly get exposed to a lot of new ideas and technologies by attending this show. It seems like a pretty small price tag per person and the return on investment seems quite high. Not only do I come back with some new ideas and new motivation, but I also feel very thankful to the company for investing in my future.

I'm really looking forward to the conference. I will be meeting up with a few of my previous coworkers, so that will be a lot of fun spending time with them. It should be great!

Tuesday, November 13, 2007

A different breed

As I mentioned a few weeks ago, we're looking to hire a few people in our software R&D group and this week we've started interviewing some of the first responders. Being such a small group, our leader has taken the tack that all of us in the group should interview potential candidates since each new person will substantially change the dynamics of our little office here.

I'm no stranger to interviewing people for various positions including software developers, software QA engineers, and project management types. However, the type of positions we've posted seems to be drawing a wholly different breed of person to our doors than I have previously had experience with. I think part of it has to do with the nature of our company and our target markets. We're looking at potentially embedded systems, low-level algorithm development, and Quality process management (yes, with a big Q). It also has to do with the level of experience that we're looking for. Management has always said that they're looking for the "best" people that can come in right away and make an impact... this was one of the things that really excited me about this job. As a result, however, I'm interviewing people backgrounds far different than I am used to.

For starters, everyone I've interviewed so far has been over 40. They have all been working at (or consulting for) extremely large companies. They have all been working under what I would consider very heavy-weight development processes. This is quite a change from the types of people I've been used to interviewing, which were mainly recent college graduates with little to know professional work experience outside of school. I'm used to trying to drag information out of interviewees, trying to get them to show me that they're bright and talented and can do the job. With the people I'm interviewing now I kind of have to try and get them to stop talking about how much they can do.

But the one common thing I keep coming back to is the need for the interviewee to convince me that they want to do the job that we're offering them and that they are the right kind of person to work with us. "Kind", in this usage, is not a strict category that you can use to segregate people. Rather it is a blend of the necessary and desired qualities that make a person stand out as someone I would really want to work with. I have seen very talented people that have had the absolute wrong personality or attitude for the team they joined. I've seen extremely likable and fun people that fit in perfectly with a team but that cannot perform the work. That ideal blend is just as hard to come by in a 22 year old as it is in a 52 year old.

Thursday, November 1, 2007

First release

After the confusion and uncertainty that ensued over the green blob I discussed last week, we decided that I should focus on getting an initial release created of the code I've been working on. By the end of the day yesterday I had it built and tested and sent out the installer and release notes to the team. It feels really good to have now actually delivered something. Even thought it's just an internal release, it feels good knowing that the things I've been working on are actually going to get used. Actually it feels great because every time I hear my boss telling someone what the software does now they get really excited about it. So that is cool!

Now we'll just wait and see what kind of bugs and things I've missed come out of this. That's the flip-side to the "Yay, someone is using my code!" excitement ... it's the "Oh man, someone is using my code and finding all sorts of things I need to change." sort of feeling. We'll see how it goes. :)

Monday, October 29, 2007

We're hiring

Another round of funding has come our way and, with it, a little more work. We're currently looking to hire three people in the software development group. It seems like for now that there's only enough Java work for me at the moment, so we're looking to hire in other areas.

Primarily we need a software QA person to help us get our products up to snuff by putting together some test plans and validating the existing software we have.

Additionally we really need what they're calling a "Systems engineer" position, which is basically a person that is good working with software development teams and IT staff that can help us whip up a solid system for packaging, distributing, and configuring our software and hardware systems.

Finally there is also a need for a skilled C++ programmer to work on some of the core, computational components used in our software.

If you are one of these people, or if you know one of these people, please take a look at the descriptions at our employment page.

Thursday, October 25, 2007

You want a what, now?

I guess pretty much every programmer in the world goes through this experience in their lifetime when they are presented with a project that is so ill-defined, so nebulous that it twists your mind inside out as you try and fathom exactly what it is that you're being asked to do. You poke and prod at the amorphous blob that is your project hoping that, either by skill or by chance, you can coax it into revealing to you some of its actual features or some of its internal machinery. It's like looking out an icy window: you can tell that there's stuff out there, maybe you can even discern some of the colors and shapes, but the reality of what's outside may in no way correspond to what you thought you saw through the frozen glass.

As such, how do you begin? One approach would be to say, "Well, all I can see is a green blob so I'm just going to make some software that does green blob-like stuff. I can always change it later when I get a clearer picture of what's needed." This approach appeals to the part of me that doesn't want to waste my time on doing complex things that may very well be wrong. But there's a part of me that really doesn't like doing simple things that I know for a fact are going to be wrong. I know that I'm not really looking at a green blob ... it's probably really a stalk of broccoli, something with defined structure and intricate detail. But what happens if I go through all the work to deal with broccoli and it turns out that I was really looking at asparagus?

So, food-related metaphors aside, I'm at this frustrating point of not knowing quite enough about what I need to know, yet still feeling like I need to make some sort of step forward. I keep talking with other people to get their ideas and it's all still very blurry and green blob-like in their minds too. For those of my old coworkers that make it this far into my ramblings, it sounds like I'm going to be basically implementing metadata, but with a few extra twists. Metadata was, in my mind, easily one of the few most complicated areas of the code that I worked with. Maybe it had to do with the way the code was written, or maybe it was just that it was a complex, hard-to-understand beast of a problem. Either way, I'm going to get my chance to try and replicate it and, hopefully, understand it better this time around.

Monday, October 15, 2007

Welcome to the machine

If you've ever worked in a company where "quality" was a word spoken with a capital "Q" than this might not seem that foreign to you, but I've been a little amused by the efforts going on at setting up our Quality control systems here at work. Working in the bio-tech field and, hopefully one day, creating systems that will be used to diagnose patients and affect their treatment subject you to the need to worry about certification, primarily by the FDA. In order to meet the requirements your company needs to have tip-top shape documentation about how the Quality of your product has been maintained throughout the development process.

We have a full-time employee whose job it is to define and maintain that documentation and it's only just started to actually affect me. The approach we're taking is using the GMP (Good Management Practice) which is espoused by the FDA. So far, it seems that all of that is just coming in the form of SOPs (or Standard Operation Procedures) which travel around in little blue folders and can only be photocopied once, and blah, blah blah. At the moment, I don't see that it's going to be much of a burden at all in our group. Mostly all of the work is focusing on the lab-based work and the actual engineering group who are responsible for building the device prototypes.

However I did get to sign three documents last week as part of the Quality process, which just made me have to laugh. The first was a "signature list", which was just that ... a list of all the signatures of all the people in the company. Oh, and by the way, atop each of these forms is a Training Form, which each person must sign to say that they have been trained on that particular SOP. So I got to sign the signature list and the training form to say that I signed the signature list. But it gets better!! The next one was the SOP about that Training Form itself. Yes, I signed the Training Form to say that I had been trained on the Training Form! I joked that she just did that for us computer geeks who find that kind of recursion appealing.

As laughable as it is to me, I suppose it's good that someone is looking out for these sorts of things. The last thing you'd want is to get this great technology built and tested only to find out that no one will use it until you can get certified and that you don't have the work done to meet certification. I'm just glad it's not my job!!

I hear (and I don't think they were joking) that SOPs for taking out the trash and refilling the water coolers will be coming soon....

Monday, October 8, 2007

All hands on deck


I think that one of the most powerful management tools that exists for getting people motivated, focused, and on-task is the "All hands meeting". Now, I agree right off the bat that there are good all hands meetings and there are bad ones. However, I really think that there are very positive things that can come out of bringing your people together as a team and sharing information with each other. It's incredibly important that everyone has a common sense of the direction they are going in and an idea of what lies ahead of them. An all hands meeting is the perfect time to instill a sense of purpose, of urgency, of importance, and of pride in each of your team members. Getting people from different groups together in one room is a unifying experience and can be a great way to galvanize a team and send them off in a positive direction.

Here are the core things that I think you have to have in order to pull off a successful meeting:
  • Have a moderator
  • Every meeting needs someone to make sure that it stays on track and that the things that need to be discussed get covered. This can either be the person that's delivering the address or someone that introduces and gives the floor over to others, but you have to have a custodian that looks out for the health of the meeting.

  • Have an agenda
  • The number one killer of meetings is the aimless leader who doesn't have a clear idea of what is going to be discussed in the meeting. Disconnected ramblings and flip-flopping between topics can confuse your attendees and fumbling around trying to remember what else you wanted to talk about only frustrates them.

  • Be direct
  • If you've got something to say then say it. People demand honesty and forthrightness from their leaders, even if it makes them upset or uncomfortable. Don't tip-toe around issues and come right out and say what needs saying. Nor is this the time for verbose and flowery language, quirky little jokes, or funny (to you) side stories. Don't water down your message with meaningless words.

  • Be concise
  • Keep topics short and sweet and avoid tangents and other rambling. Say enough to fully explain the concept you're trying to present, but keep out extraneous anecdotes or non-essential information. Let your team ask for more detailed information or background if they want it. These people are giving you their time and you must be considerate with it.

  • Tie it all together
  • After all of the items on the agenda have been covered, take just a moment to bring together the various topics that have been discussed and try to distill it all down into a single, easily digestible message. This is the message that you want your people to walk away with when the meeting is over. You don't want to repeat everything you've said before but, instead, try to summarize the important points into a little nugget that they can keep in their heads for the near future.

  • Take questions
  • Always allow your team to ask questions about the information that has been presented in the meeting or other relevant topics. It may be a good idea to ask people to hold questions until the end to make sure that all topics have been covered. Make sure there is time allotted for people to get more information, but the moderator should keep an eye out for questions or answers that take too long and cause things to drag on.

Friday, October 5, 2007

Testing from the ground up

Anyone who writes software knows that it's easy to write code rapidly and get something working right away, but the difficult thing is maintaining that code over time as the requirements for what it does and how it does it change. This is where bugs creep into a system and it's up to the programmer and the testing staff to find and remove those bugs. But coders have a tool that they can use called unit testing which allows them to build a testing framework around their code. These unit tests are also code (which makes it a little more fun to write) and is intended to focus on a logical unit of functionality and exercise it in such a way that you feel confident that it's doing what it's supposed to do. As the code changes you always have that suite of tests to run to make sure that it's still doing what it was supposed to do, regardless of how the implementation changes.

At my previous job we spent a fair amount of energy trying to make unit testing a part of our culture, encouraging developers to add unit tests for code when they fix bugs or when they are adding something new. What I found was that it's often pretty difficult or painful to add unit tests to a code base that was built without the idea that it would be tested that way. You would often have to jump through great hoops to try and test something quite simple. This often led to a fair amount of frustration and people would just avoid unit testing at all. One of my past coworkers started a new project of his own and decided to try building unit tests along with the code as it was written. This experience seemed to completely change his mind about the value of unit testing after seeing how valuable it was in creating a project from scratch.

It turns out that, if you have testing in your mind as you develop your software, it naturally gets written in a testable way. And having those tests telling you that everything is okay is incredibly valuable at times. At my current job I am encouraged to build unit tests along with the code that I write and have found that it has been extremely helpful in finding bugs that I would have otherwise missed until a much later date. It's actually pretty easy to write unit tests while you're creating the code, even before you actually write the code. This practice has actually helped fix most of my bugs. By writing a test that shows how the code should work first you then can write the code the way you think it should work and find out if you got it right.

Tuesday, October 2, 2007

Troop surge

The world of venture capital funded companies is a pretty bizarre one. I've never been in a company like it before, having previously worked with more established companies. With the arrival of the initial round of capital funding it's like someone fired off the starting gun and yelled "Go!!" My coworker that's been here for years, through ups and downs in the past, tells me that the company's roster tripled in the month of September! As I'm sure you can imagine, that creates quite a drain on the folks that have been here for a while as they train up all of the new people. The good news is that most of the new people are in the lab group, working on the nailing down the procedures for preparing DNA samples just right so that we can process them with the best accuracy. We had one more person start in the software group, bringing a background in genomics to bear in helping to interface between the lab group and the software group. She's going to help us design the best system interface and organizational structure that we can for presenting and storing data.

I would say the feeling in the air around here is similar to what I imagine it might have been like to be in the galley of an old maritime ship. Everyone is getting to know each other, getting used to the tempo, and getting in synch with everyone else in order to really drive the ship in the right direction and with haste. The starting gun has definitely fired and we're off!

Wednesday, September 26, 2007

Flow

The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.

-Frederick P. Brooks, "No Silver Bullet"

I love that quote. Brooks is an outstanding writer and a great source of a lot of good quotes about programmers and software development and they're just as true today as when he wrote them. Despite all of the unbelievable changes in hardware, the proliferation of programming languages and software frameworks, and decades of evolving and adapting our approaches to making software we are still find a lot in common with programmers of 40 years ago.

".. slightly removed from pure thought-stuff" ... Dealing with such a delicate and fleeting substance requires a good deal of concentration, persistence, and awareness. When building these castles of air you often find yourself juggling bricks and mortar, moving pieces and materials around until they fit just right. Suffering any interruptions during this process can cause you to drop what you're doing and struggle to pick it back up again. Worse yet you can drop things into a configuration where it seems that everything is stable yet, hidden from view, a flaw is left waiting for the day when it brings things crashing down.

Most programmers know about the idea of flow. If they don't know it by that name, their eyes will light up with recognition as you go into explaining that state of mind where you become so in tune with the task at hand that your thoughts speed up and become perfectly clear, code flies from your fingers and, when you finally come out of it, you realize that time has passed at a seemingly impossible rate.

This was something that, for the past year, at my old job I very rarely experienced. Most days I was dealing with a number of little projects or small tasks or bug fixes simultaneously. There were interruptions as customer sites would experience problems or there was a meeting to attend or another developer wanted to ask a question. I pretty much stopped entering into the flow state altogether.

But for the last two days I've been spending a lot of time flowing as I gather understanding about this project I'm working on and come up with ideas of what is needed and how to implement it. I have people to go to when I need clarification or help fleshing out an idea, but I have a free reign to write the code and pretty much no distractions to keep me from it. It's an amazing feeling and I can honestly say I haven't had this much fun at work in some time. I know it can't possibly last forever, but I'm so pleased to be back in a position where I can write code and create some of my own castles in the air again.

Monday, September 24, 2007

Can't turn the brain off

After lying in bed and trying to go to sleep for a while I realized that my mind is just full of thoughts and that perhaps a blog post might be the best sleep pill I can take right now. Chances are that I have some sort of personality disorder that causes me to be thinking about work while I'm trying to go to sleep ... or perhaps it's just that I'm pretty excited about actually getting in and starting to really contribute to my new team. As mentioned in previous entries, I spent a good chunk of last week trying to learn a bunch of new stuff without appearing to be a complete dullard. But today I got to actually start showing people that I can actually do some things and, I'm happy to say, I got some pretty positive feedback.

I think I'm really excited because I'm beginning to see where I can really start making a difference in the way that software is created at OpGen. Most of the codebase that they have is pretty much considered to be a working protoype, with just about everything written in Perl/Tk. Perl/Tk is NOT what I would choose to implement a large-scale product that you're hoping to ship to a customers site. There are one or two projects lying around that are written in Java, but it's hardly the Java that I recognize. Clearly it was prototype code, written by somebody that grew up programming in something other than an object-oriented programming language.

Dealing with these sub-optimal (in my mind) software codebases isn't incredibly fun, but it's not really all that hard either. However the really fun part is that I am getting to start on a fresh, new Java project with the intent that I will be building up a Java framework that will eventually replace all (or most of) the existing prototype code that has been written to date. That will be a long haul, for certain, but I'm excited about getting started at pretty much ground zero and making technology, framework, and design choices. I've pretty much been told that I am going to be "The Java Guy" and that I can (within reason) run things the way I want. That is pretty exciting to me!

I'm really pleased to see how some of things that I've learned from my previous job can really be used at OpGen to make a real positive impact in productivity and ease-of-development. I have to laugh a little when I say this, but first just using an IDE. I'm not entirely sure how the Java code that exists got developed, but rumor has it that it was created only using vi and ant. To me, that's kind of like building a doghouse using only 19th century tools. Sure you can do it, and there's some amount of geek credibility to be earned there, but wouldn't you rather use a cordless drill and a chop saw? Beyond just simple stuff like that, I'm very excited about the possibilities of using Hibernate (these guys have never heard of an ORM tool) for simplifying their database access routines and JavaSpaces for some robust, distributed processing. It's pretty exciting seeing that you've actually learned some neat tricks that you can apply in other situations.

I'm very happy about the way this week is starting off and I'm hoping to demo some software tomorrow and get going on my database access framework and start working on getting some stuff really cooking. I don't know if this is going to help me sleep or if I'm just more amped up now than when I started.

Fixed my first bug

Hey, I fixed my first bug today! Man, it feels soooo good to be playing around with code again... tracing through the lines and finding that little missing bit of logic that's causing a problem. I even sat down and wrote a unit test around the stuff that I thought was misbehaving, which really helped point me in the direction of where the bug really was. It's like a surge of adrenaline, I'm actually doing something useful at work now! Hooray!

PS - I don't expect to post like this every time I do something. It's just that this is such a welcome change from last week.

Saturday, September 22, 2007

House of business cards


When I left my old job I had a big stack of business cards and I wasn't sure what to do with them. We decided that they would be pretty good for making a house of cards out of. While I didn't have enough to make the house I wanted, it turned out pretty well nonetheless. I have to thank my father for teaching me how to make houses out of cards. I had a fun time doing this.

Friday, September 21, 2007

That delightful aroma

Ahhh, the smell of something to actually start working on!

This week has been full of ups and downs, strongly correlated with how much I feel like I'm understanding the things that I'm learning. There are peaks of a near euphoria as a couple of neurons fire simultaneously and a flash of insight occurs. It's like sifting through a box of puzzle pieces and just happening to stumble across two pieces that fit together. Then there are the low valleys where it seems that I will never, ever understand what the heck is going on. This has been extremely frustrating .. like sifting through those puzzle pieces and realizing that there's actually no picture on either side. The good news is that I'm making steady progress and some of that is behind me now and I feel somewhat confident with some of the terms and concepts that get used here in daily conversation.

And that shaky level of confidence now means that I'm actually ready to contemplate contributing something useful to this company, which is exciting and daunting all at once. It looks like I'm going to be looking into creating a software workflow tool to automate what is now an intensive manual process of messing around with files on the file system. The good news is that there are a couple of existing applications that I will just be modifying, which keeps the scope of the work down and allows me to get familiar with code that's already written. But I will also be starting some new modules that will hopefully be the start of a new software framework, written in Java, that is used all over the place. I've written up the design document and will hopefully get started cutting some code on

Wednesday, September 19, 2007

The code monkey and the computer scientist

Guess which one I am? One of my co-workers, named Thomas, is a bona fide Computer Scientist. Yes, I have a degree (a bachelor's) in Computer Science from Carleton College (did I mention it was a Bachelor of Arts?) but Thomas is the real deal with a PhD from Carnegie Mellon. He is seriously into computational analysis and algorithm development and, at IBM, was part of the team that built Deep Blue! The man has is own Wikipedia entry. Nuff said!

I'm excited to learn what I can from Thomas .. he has an incredible mind and I'm really excited to be working with him.

Second wind


Well the first day was pretty overwhelming for me, I have to say. But yesterday, with a fresh start and about 4 espressos (thanks to the espresso machine in the next cube), I felt a resurgence of my faculties and my ability to actually learn something new. I think my brain had just reached its saturation point and I needed a night to digest what I'd learned so that I could start over again.

One of my colleagues, whose background is in Computer Science but who has been in the molecular biology field for some time, lent me this book that looks to be a very good introduction to the field in which I'll be working. It's especially nice for me because, well, there's a monkey on the cover and lots of goofy little cartoons in the book along with chemical compounds and all sorts of other notation that is new to me. I read about 5 chapters last night and what's really funny is that I actually remember a lot of this stuff as I am reading it. It's been buried deep in the sediment of my brain and is getting dusted off a bit.

Additionally, I actually got to start looking at code yesterday and will be doing so more today. I'm excited to actually start looking at what we have right now and what we're going to need to build/re-build. I'm excited because it sounds like my first project may be building some common database access routines in Java and using those to take some prepared data from the file system, parse it, and put it in the database. Talk about something familiar!

So, I'm feeling quite good today (1 espresso already). I have to find out if anyone cares if I reinstall this computer I'm on ... it's got quite a bit of crap on it from the guy that was here previously and I like to start with a clean slate. So, in comparison to my old job, here there's a +1 for not having to construct my own desk but a -1 for not having a tip-top-of-the-line machine cleanly installed for my use. That's okay, I love reinstalling systems.

Monday, September 17, 2007

Now I know what I don't know

The first day at a job is almost always overwhelming for the software developer joining a new team. Lots of new people to meet, learning the layout of the office (where the heck is the bathroom?!), figuring out the work environment, setting up email accounts, source code repository accounts, and Wiki accounts, getting the architectural overview, reading a stack of design documents and developer documentation.. oh and don't forget about all the forms and HR stuff that needs to be done too.

Well, that's all well and good but on top of all of that, I got a fairly detailed overview of a lot of the science behind the work that we're doing at OpGen. Wow! Do I really know nothing about biology!! My supervisor was going into these great descriptions of how DNA molecules are separated and prepared for imaging and I have to interrupt him and ask, "Err.. DNA is a single molecule? What's a molecule again?" Throughout it all, he was quite patient with me and did a pretty good job of dumbing it all down so that I could at least nod mutely when he asked if I understood.

The main thing that I learned today on my first day was that I could really use an intro course on microbiology .. one that doesn't require me to study, do homework, or exert myself too much, of course. Aside from that fact, using the shallow understanding that I was able to gain today, I am really impressed by what the guys at OpGen have been able to accomplish. I've heard people say that working with computers and software seems like magic ... well, I think that some of this biology and chemistry work is pretty freaking magical. I hope to learn a lot more about it and get more comfortable with it so that it doesn't seem quite so mystical.

I left the office today feeling like my brain was oozing out of my ears (Excuse me, I think you've got some on your shoe). I'm hoping a good night's sleep will bring me back to work tomorrow well-rested and ready to start all over again.

Sunday, September 16, 2007

A new adventure

Here, on the evening before my first day at work at my new job, I sit feeling a unique mix of emotions as I contemplate this new adventure that lies before me.

Excitement
I'm not the sort of person that will change jobs just because they can. I don't lightly leave behind a job where there are lots of people that I like and respect and where I have the tools and ability to work on a lot of various (and often interesting) projects. What draws me away from a secure and comfortable environment like that is the exciting possibility of really doing something meaningful. My new company is called OpGen, which is located here in Madison, WI where I live and I will be working full-time as a software developer. I don't want to shoot my mouth off about what I'll be working on until I know for sure that I'm not giving away any company secrets, so for now I'll just point you to this press release on the company website. It gives a pretty good synopsis of the technology we're dealing with and the type of market we're going for. I think this quote pretty much sums up what has me so excited about this company:
“There is a huge unmet need for systems to rapidly and accurately diagnose clinical infections...,” added Corey Mulloy of Highland. “We believe that OpGen’s technology is uniquely placed to meet this need and to transform clinical microbiology.”

Loss
As I mentioned, I'm leaving behind a group of people that I've worked with over the last three years with whom I've created very healthy and positive working relationships as well as friendships. I'm also leaving behind a position where I had the ability to work on a large variety of projects and tasks. I had the freedom to explore some of my own ideas and work on things that interested me. I can also say that I feel that everyone I worked with felt that I was doing something worthwhile and that I was a valuable part of the team. Walking away from a situation like that was the hardest part of making this change.

Optimism
As I've been explaining my new position to friends and family, I keep saying that I'm very optimistic about the opportunity .. hopeful that all if it's brilliant possibilities come to fruition. Truly, in my mind, there is no better situation for me to be in at this point in my life. I will be engaged in a brand new software development project, working to build a product that will provide genuine, revolutionary changes in a vitally important field like health care. I will be part of a small team, helping to shape the very foundation of the software architecture. And to boot, I will be invested in the company such that if, as everyone at OpGen expects, the company and it's product is wildly successful we all stand to benefit financially. I couldn't imagine a better starting point for a new job.

Fear
It's been frequently stated that programmers are optimists at heart, yet they have a keen sense for all of the minute things that could go wrong in any enterprise. The same is true here in this situation. As optimistic and excited as I am about the future, I know all too well what can happen with software projects. Late, over budget, failure to deliver what customers wanted, stress, burnout.... all this is possible and more. The optimist in me says that this company knows what it's doing .. I know what I'm doing, dangit!. I've never worked in a venture capital funded start-up company before. The rules and expectations are different than anything I've been a part of before. Will I be able to handle it? What if it turns out I'm just not as good a hire as they thought I'd be? What if it turns out I just downright suck?

Confidence
When it comes right down to it, I feel that this is the right position for me at this time in my life. I'm ready for something exciting .. something challenging .. something that just might keep me scared enough to make sure I work my butt off every day trying to really make a difference in the world. Sure, a part of me really is scared of the things I mentioned above, but I feel pretty confident that OpGen and I are a good fit. They did decide to hire me after all. They think that I have what it takes to help them meet their goals. I feel confident that I am the right person for the job and that we're going to do some pretty awesome stuff together.

It's a pretty wild mish-mash of thoughts and feelings I'm having, but at this moment I can't wait for the alarm clock to go off tomorrow morning. I'm ready to get started and see what happens. Let's go!

Moving forward

I created this blog back in March of 2007, intending it to be software development blog containing posts about various topics related to my field and my thoughts, in general. I chose "Moving forward" as the name of the blog to reflect what I think is a core tenet of my career/programming/personal ideology .. I always want to be taking the next steps, learning new things, exposing myself to new ideas, technologies, and environments.

Well, I wasn't very good about maintaining that iteration of this blog, but the title has taken on new meaning for me. Tomorrow is my first day at a new job! In many ways this new opportunity is just the latest way that I'm trying to move myself forward. My hope is that I can use this blog to chronicle and share the new things I am exposed to and the new ways of thinking and working that I learn as I move forward in my career.