Computers, Events, Family, Ruby

First day at Influence Health

Influence Health
October 21st 2015 it was announced that Barclays would be laying us off, and shutting down our division. I’ve never been laid off before, and the emotions went from shock, disbelief, anger, and even sometimes relief. It was finally over. All of the technical debt, and poor business decisions were something in the past. Over the next few months I would be interviewing, relaxing and getting ready to work at a new place, with new people.

I had a lot of decisions to make. The first big decision was whether I was going to work full time remote again. There are a lot of perks, but there are downsides too. I felt lonely, isolated, disconnected. My wife didn’t understand what I did all day. I had no coworkers I could get drinks with, or swap horror stories with over lunch. And with two kids in the house, it has become quite noisy, and I find myself getting frustrated when our youngest has a bad day and spends it crying. And it can be stressful on a marriage to be around each other 24/7. Nothing ever changes. Little things start to become big things.

I decided that for general health, I would be looking for a job with a flexible work schedule. A few days at home, a few days in the office. Once I narrowed down what type of arrangement I wanted, then it was on to the culture. This time around I have enough experience that I felt comfortable donning the title of a senior software developer. I’ve seen enough good and bad that I can tell the differences between them.

Next was the work culture. Did I want another big company with more people than I could ever memorize? A startup struggling to become solvent? Something in between? The size of the company dictates the culture to some extent. The bank culture was slow, fearful, and inefficient. I wanted to get my hands dirty, but I wasn’t ready for 80 hour work weeks in a startup trying to get off the ground. I wanted something smaller, but established. And with a laid back culture. I didn’t want to wear a suit everyday, and I’d like the freedom to not be stuck in a cubicle.

I settled on a fun looking company called Influence Health (formerly BrightWhistle) in Midtown, Atlanta. They are right next to Piedmont Park, and its quite a drive to get here from Johns Creek. But with flexible hours, I miss the rush hour madness, and with 3 days at home, I’m not sitting in the car that often. Though, it is fun to sit in the Mazda RX-8!

The first day was a 9:30 (worst possible time due to traffic) orientation. Then it was on to unpacking my equipment while I met the team, and then I spent the rest of the day juggling orientation tasks and setting up my new laptop the way that I like it.

I decided to use Git to manage my dot files as I’ve read about a few other developers doing. You can see my progress here: https://github.com/bsimpson/.vim

I like the incremental approach, and I’ve expanded it a bit to make it super easy.

The first difficult task (outside of basic environment setup like Rbenv, Ruby, MySQL, Sphinx, etc) was the bundling of gems. This led to quite a few dependencies that couldn’t install because it couldn’t find the native libraries. This was a hit and miss adventure, but I’m reaching the end and I’ve taken notes. I’ve asked if there is a developer wiki somewhere to keep all of this painful learning. Maybe I will push to implement one if I can get some support behind the idea.

The laptop was imaged, but it provides enough freedom to configure however I would like. They use Microsoft Office, which isn’t great, but the Office365 web client has superior searching than its desktop counterpart Outlook so I guess I will just stick with that. They use Slack for communications, and the Mac app makes juggling all of my accounts very simple.

Overall I’m pleased with the team, the culture, and the equipment they have provided to me. I feel rested, focused, and ready to tackle this new job head on. Its been strange to sit in an office with other people after four years of remote work, but I’m adjusting. My voice is worn out, since I never typically speak at home.

Anyway, stay tuned for the next episodic blog post of my adventures in Midtown!

Advertisements
Computers, Events, Family, Personal, Software, Thoughts, Vacations

The California of Texas

Austin is a counter-culture in the heart of Texas. I’m not sure what I expected, but vegan friendly restaurants, health food stores, hundreds of miles of bike paths, a city wide ban on plastic bags, and a highly affluent populous was not what I was expecting. So beings my journey.

The Sights

We drove thirteen hours overnight to accomodate our newest passenger, Morrigan and her sleep schedule. As bad as driving all night was, at least we didn’t end up with a screaming toddler in the backseat. We visited some of Kristin’s kin in Houston, which served as our base for the weekend before pushing further West to Austin.

We negotiated a great monthly rate on a condo we found on Airbnb off South Lamar on the South side of the city. (Affiliate link) I’ve been really impressed from the moment we pulled into our new home away from home. The unit is small, but renovated, and well furnished. What we lost in space, we more than made up for in location. Right up the street is a lifetime supply of changing restaurants, and only a 10 minute drive from Zilker park.

Our first weekend we visited a local farmer’s market and bought some Texas grown produce. I never thought I would do what we did next – attend a vegan festival. Sure enough. In the land of BBQ, thousands of health nuts live in this city. Despite being vegan the food samples they had were all delicious. If I hadn’t known, I wouldn’t have tasted any difference. Vegans have masterfully replicated an omnivore’s menu.

The next week brought with it a trip to Fredericksburg, another hour West of Austin (but still not halfway through the state!). It is a German town, and had plenty of beers, wursts, and gut busting treats. The main strip is really quite a marvel, as it goes for over a mile and encompases lots of original architecture. Sunday we visited the Austin Zoo which put a spin on the traditional approach, and opted for a non-profit animal rescue shelter and animal sanctuary. Morrigan loved spotting all the critters, but the Texas heat won out, even in April. I was never so glad to pay $2 for a bottle of Coke.

This week I rented a bike and road around the Lady Bird Johnson trail which follows the river that bisects the city into North and South. It is wonderfully engineered, running past coffeeshops, restaurants, playgrounds, fishing areas, boat ramps, and dog parks. I wish Atlanta had something like this to offer. Maybe when the greenbelt is completed? (And the bikeways protected with police?!)

We have plans to go to San Antonio next weekend to visit Fiesta de los Niños, and plan on visiting my cousins who are lucky enough to live here. Following that will be our last week before the long migration home. We will be spending the last weekend back in Houston where we will visit Kristin’s folks for her mom’s birthday celebration.

Remote Working

Working remotely during this time has been interesting. I’ve learned an important lesson: don’t go anywhere during the launch date for your product! Too much was up in the air to leave beforehand to stay clear, and I was concerned that afterwards we would be scrambling. Turns out ramping up to the last minute before launch can be just as stressful.

For those of you following along who already, or wish to do remote work, ensure that you rent a place that you can have a quiet place to work. I find that mornings are my most productive time, and I try and guard this time for the important tasks. But with a smaller rental unit, and a one year old, I found thata nice pair of headphones is essential. I’ve taken advantage of ROWE several times during the week when we visited the capitol, and visiting parks, and going out for walks with the stroller. It pulls me out of my comfort zone to not be sitting at my desk at 9am, but then I realized the world doesn’t end. I simply make up the time later. Exercising this perk has really boosted my confidence in working for my company. They genuinely care about results and not office hours.

Also, have a backup plan if (when!) the Internet goes out at your rental unit. The maintenance people decided to test the waterproof claim of the rental’s outdoor wireless AP with a pressure washer. I’ll let you guess as to the winner, but I spent the rest of the day at a coffee shop. Also – scope out your coffee shops. I would love to see a website that lists the rating of different places based on workability. Some places don’t give you the vibe (despite having wireless) that they want you hanging around with that laptop of yours. Other places look promising, but offer no connectivity. Grab a cup of coffee or tea beforehand and scope things out.

A few notes on extended vacations: Don’t binge vacation! You are there for a while, so relax. Buy some groceries; every meal doesn’t have to be an experience. We have been aiming for eating out once every few days. It helps with the finances as well.

Don’t wait until the weekends to go exploring – especially when you have ROWE. The weekdays are the best times because the crowds are small, and the traffic is light. Check out your local attractions. One of the most relaxing things has been for me to join Kristin and Morrigan in the mornings for a walk around the neighborhood.

I wasn’t at home with my millions of distractions, so I wasn’t prepared for a “boredom adjustment”. Once I realized its not a pure vacation, and that I had to work, I struggled to find ways to wind down in the evenings. I ended up finding a used bookstore and stocking up on reading materials. I’ve enjoyed reading again instead of falling asleep in front of the TV, or playing video games until the early hours.

Being in a place for a month is certainly better than the binge vacation, but it is just a taste of what living somewhere would be like. Its just enough time in my opinion to really begin to absorb the culture. I find it thrilling to wonder what each day will bring, as everything is new. Maybe you spot a new restaurant (or food truck if you are in Austin), or drive past a park you want to checkout, or see a bike rental shop. I’m really making up my itinerary as I go. I’m glad I strived to find a job that affords me the opportunity to do this, and I wish that everyone who wants the same can achieve their goals. I can tell you its totally worth it!

Apple, Computers, Events, Family, Personal, Ruby, Software, Thoughts, Vacations, Web

Cloudy, Cold and Hip – Two Weeks of Training in Portland

I’ve really enjoyed the last two weeks. My new employer, recently acquired Analog Analytics flew me out to Portland, Oregon for training. Portland is quite an amazing place. Skateboarders, cyclists, and runners abound, but with a laid back attitude. Its the greenest city I have ever visited. Stores seem to only dispense recyclable materials including paper bags, and foods in waxed cardboard containers. The entire city is very walkable without much danger of personal harm. The food was amazing, and the drinks even better. This city knows its coffees, teas, and beers. It has to be home to the most microbreweries of any city. Needless to say I have probably gained 5 pounds, and I am super caffeinated. Also, the proximity to all these hip restaurants is giving me second thoughts about living so far outside of the city limits. No lie, I even glanced at Portland housing prices.

It took me a few days to get oriented to the city and the work environment. The company runs out of the Ford Building, in the heart of quite a few cool restaurants and bars in the Southeast side of the city. In fact, it left me a little jealous considering the hotel is only surrounded by fast food joints.  I got a shiny new MacBook Pro (which I am currently battling to make it as “boring” as possible). I can’t talk too much about the work, but it does hit the sweet spot of what I was looking for – a small team feel with deep pockets, and a launch date.

Kristin and Morrigan joined me for the second week and did their own thing, and they had a blast. They visited OMSI, Powell Books, Finnegans, several parks, and malls, and some tasty food joints. I’m happy they got to experience some of what makes this city awesome.

I’m enjoying several aspects of the job in particular: A remote driven environment, and pair programming. Training isn’t the best test run of this environment, as I am in the office everyday for now. Once I am setup, I pick the hours. People hop online and offline, according to their time zones, availability, etc. Every piece of communication, and workflow is centered around remote teams.

Pair programming makes programming social. Despite the image that telling someone you are a programmer conjures, I really enjoy interacting with people. I remember teaming up with James, John and many others at Clayton State to tackle some large issues with our portal and other systems. Since Clayton State, I have worked on a couple teams, and it was almost always in isolation, save for 5-10 minute high level meetings. The best part is, its actually kind of fun.

Pair programming was a tough adjustment for me. I’m used to presenting a final product and defending its implementation. I have all the answers. I know what the talking points are up front, and I am comfortable because I am the authority on the subject. Pair programming is letting your guard down, and conceding as much as contributing. You are two people working on a problem together, with neither party starting off knowing the complete solution. The work is certainly slower than solo programming, as incorporating input, early refactoring, and general discussion takes up time. This team takes an interesting approach to combat some of the time drain; You can either pair program and merge directly, or work solo but your code requires a peer review before merging. The choice is yours. The solo programming option will probably act as a safety value for those days when I just want some time to myself. They also encourage “switching drivers” to vary the work. Interestingly, being the passenger requires more focus than driving, as you are trying to proactively find issues with the current approach.

I’m still struggling to embrace TDD. I don’t like the zealotry in the community when the topic comes up; presenting the only two options as either you test first, or you are just ignorant, undisciplined, or apathetic to the code you write. The truth is far from it. I figure things out by moving the pieces around – not by staring at it from a distance. That is not to say that there aren’t times when testing first is extremely useful, like when clarifying requirements. The test assertions (even with missing test bodies) is often enough to help solidify an attack plan. The amount of code coverage can be a hindrance though, as real world tests always end up being more tightly coupled than you ideally want them to be. If you make seemingly small code changes, you can end up with quite a bit of the test suite failing (all though with the same few errors repeating). If you mock and stub too much, you aren’t testing much that is useful. Even worse, the workflow doesn’t seem realistic: Write the tests, verify the tests fail, write the code, verify the tests pass. The reality seems to be write the tests (heavily guessing at the exact implementation), verify they fail, write the code, refactor almost all of your tests, and verify they pass. Given the choice, I think I’d still rather write code, then test the code to verify it does what I want in all scenarios. I’ve yet to meet a dyed-in-the-wool TDDer that sees any fault with this extra refactoring step. The subject of pre-written tests needing to be refactored seems to be glossed over. Maybe my opinion will be changed yet.

Things are looking awesome for this next step in my life! I’m keeping my fingers crossed for Railsconf tickets, since they are in my employer’s backyard. There are also a few missed restaurants I am meaning to visit next time I’m back up this way…

Events, Family, Open-source, Personal, Software, Thoughts

Working for a Development Firm is Like Being a Rented Sports Car

As my last post alluded to, I am leaving my current development firm. The reason is primarily a boost in earning potential at another employer, but also a culture change. To explain the culture at a development firm I created this analogy:

Imagine you rent a Mustang, or a Corvette. (Of course you are gonna get the insurance!) What are you going to do with that car? Everything that you fucking can! You are gonna imprint the gas petal into the floorboard, and drive fast and wreckless. After all, you have to get every dime you can out of your rental before your time expires right?

Now imagine you own a Mustang, or a Corvette. Yeah, you would probably hot dog it, but it also your purchase, so if you wreck it, you are gonna be upset with yourself. In other words, you are going to maximize your purchase by caring for your vehicle, and obeying the speed limit (most of the time anyway).

I have just described the difference in my view of an internal development team, and an outsourced development team. Clients want to maximize that dollar when they outsource, which is done by getting the most work in the least amount of billable hours. They want the sports car rental. They aren’t going to set a moderate pace; they are going to speed! I’m not saying that all development firms, or all clients are like this (I’ve worked with great clients in the past). But I am saying there is a struggle between maximizing value and being realistic about what you promise.

How does a client pick your development firm? By your firm being the lowest bid. They understate the hours needed for the work. They over-promise features on an unrealistic deadline. When Company A quotes $100k under Company BCompany A gets the work. And the client isn’t going to be cool with missing deadlines, or cutting functionality. So now management is in a battle with the client who is pissed off because the original bid was unrealistic, and wants to rectify the problem. That shit rolls down hill to you – the developer.

And I can tell you, its not possible to write good code faster. Someone micro-managing me, asking me what I’m doing every five minutes isn’t making me any more productive.

There are lots of companies that push hard. You can make a good living working for these places as long as the compensation, or bonuses are commensurate with the work that you put in. But busting your ass all day, every day – every day feeling 10 hours long – every day being full of epic code pushes, and near impossible deadlines met in the 11th hour – that is a young man’s game. That is pretty appealing when you are 22, fresh out of college, and eager to prove yourself to the world. Stressing out at 4:50 on a Friday, trying to get something delivered while your wife and daughter patiently wait for you to get off work just isn’t worth it. I’d rather enjoy my time with them. I’m not mad about it – its just how the game is played.

Which is why this Sports Car is up for ownership. He is done with the rental game, being driven too hard, too long. He wants a nice garage somewhere, and a driver that just takes him out on Sundays for a trip around town. I want to spend time with my daughter while she is still young, instead of delivering some milestone that I wont remember in a month. If I wanted a stressful culture, I would have worked for a startup. Then at least I have some small chance of hitting it big when we get bought by Google.

Computers, Events, Family, Personal, Thoughts, Vacations, Web

One Month Perspective On Working From Home

Today marks one month of being a remote worker for my employer. I’m still learning on how to be the most effective with this new environment, but I wanted to reflect on my experiences for anyone else considering this working arrangement.

Lets get this out of the way: its not all unicorns and rainbows. I think that was the biggest surprise to me. It seems like a dream to wake up, walk into another room of your house, work a few hours, and already be at home when 5 o’clock hits. For those expecting instant happiness – you will be slightly disappointed.

The reality is that, like most things in life, working from home is a mixed bag. For those looking to make the transition, consider the following issues:

Isolation can be a big problem, depending on your personality. I think this blow was softened because I am a software developer, and I am used to working with a computer more than people already. I have already cut my teeth on reduced interaction. What I do miss is the comradery in working in a team environment. You often have lunches with your co-workers, entertaining side conversations, and a million other things that contribute to the work culture. When you are working remotely, you exclude yourself from most of that, and it can be frustrating to feel like your avenue for interaction has been reduced.

Reduced visibility in the company is another disadvantage. I feel that I need twice the participation in communications just to prove that I really do still exist. You aren’t in the chatter loop anymore, so information may come to you seemingly out of the blue. Its important to remember that the company isn’t just swinging at things to see what sticks – they are in discussions that you aren’t part of anymore. There is something to be said for that office grapevine. I also get the feeling that I am quietly passed over when it comes to opportunities. The “online” indicator in a chat room isn’t the same as being a warm body in the room when it comes to picking a person for a job.

Getting into a rut in your routine is something that you have to constantly work against. While it seems so simple to sleep in one room, and work in the next, my mind craves more experiences in a day than the walls of two rooms of my house. Like it or not that soul-sucking commute, and those bleak off-white painted walls in the office provide some stimulation. I think it is key to be mobile. Work from a coffee shop for a day, or visit a local university, or other facility welcoming of guests, and providing free wi-fi.

Take your lunches out a few times a week, just to stay connected with the outside. You will be amazed to know that the rest of the world isn’t in a stasis. Things on the outside change. New restaurants open, roads get built, technology improves, books get published. Partake in the changes by going outside your house.

Join a meetup group for fun, or for professional development. In addition to providing networking, and keeping you up on the times, it is also and excuse to go have a few drinks with some peers.

Its not all gloom and doom, as there are some really positive things about working from home. Some of these you probably already know (and maybe even dream about!):

You will have a lot more time. Simply commuting is an average of two hours a day – 10 hours a week that you instantly get back. Also, if you cook at home for lunch, often you can use the remainder of your time to complete tasks mid-day instead of waiting until the end of the day when you are tired. I often do some laundry, or vacuum, take the dogs for a walk, sit outside and read my book, etc. My wife and I have a seven month old daughter, and every minute is precious to me. Having more time to spend with her is priceless.

There are cost savings to remote work, including reduced wear and tear on your car, and fewer fill-ups at the pump. I actually got to reclassify my vehicle as as “for pleasure” on our auto insurance, since it is no longer used for commuting and falls under the cap for average miles per year. Other savings include cheaper lunches (unless you go out) since you have a full kitchen at your disposal, and a thus are able to prepare a range of foods. You may find other savings including no more mid-day dog-sitters, saving on a parking spot, or public transit (just kidding – this is Atlanta!).

You will be hyper-focused. A co-worker once told me “an office is a great place if you don’t want to get anything done”. I understand what he meant by this now. Co-workers can be lots of fun, but when you are trying to buckle down and squeeze something in on a deadline, the office is the least likely place that is going to happen. I often get “in the flow” for 3-4 hour straight in a day when working from home. Its important that you recognize the speed you are working at, relative to your output before to understand how productive you are. The first week, I felt like I was moving in slow motion trying to adjust to the new environment, only to find that I had increased my work output. I would wager I am twice as productive in a day at home relative to a day in the office.

That being said – take frequent breaks. Your coworkers aren’t there to give your brain a break – so its up to you. I find it the most ethical to take breaks doing tasks I can relate to my work. I read HackerNews, read a technical book, or use the time to test out some new technologies. I have already been able to fold some of this exploratory knowledge back into the projects at work.

You are free to travel (and for extended periods!). Lots of people binge vacation, one or two weeks a year. When working remotely, you aren’t tied to a particular location anymore. As long as you have a laptop, access to the Internet, and power, you can be anywhere in the world. My wife and I are gearing up to spend a month in St. Augustine, Florida. I will work during the day most of the time, taking only a few PTO days. After 5pm, or when the weekend hits you are already in the middle of vacationing. The best part is that the month long vacation schedule is one you can physically sustain, with plenty of rest between the activities.

The final benefit I will mention is being able to set your own schedule. You can’t get carried away, especially if your employer enforces office hours. But if you need to take lunch earlier, or later, you can. If you need to step away from the computer for a few minutes to handle something, you can. There is trust that has to occur between employer and employee, but in my experience, your employer is most concerned with work output. It is a loaded gun to know that you are being entrusted to operate with almost total autonomy. You no longer have the eye of an overseer watching your every movement, which is a liberating feeling. Just get what you need to get done, and don’t go crazy with power!

So far, I am loving it. I have heard mixed reports of people adapting to working remotely. Some people crawl on hands and knees begging to come back to the office, and some people work remote the rest of their career. I think it comes down to your particular personality. If you are like me, you just have to try something to know if it works for you. This is one gamble I am glad that I took.

For anyone seriously considering a teleworking gig, I would highly recommend a few resources that helped me get started. First first is a short post like this one from Kyle-Kulyk. I don’t touch on it, but he makes a great observation about how working from home will affect your relationships with significant others. Benefits of, and managing your new teleworking lifestyle can be found in the 4 Hour Work Week. This book contains lots of great resources for how to negotiate a remote work arrangement, and tips for extended travel. Finally, Joel Gascoigne has some great pointers for keeping yourself mentally happy during this big transition.

Events, Family, Personal, Software

Working on the Javascripts From Atlanta

Goods news – I survived the two day journey back to Atlanta! My folks offered to help us move (or maybe it was to help their granddaughter move back). We rented a truck, and got everything loaded up Wednesday. After an exhausting day of packing, and cleaning I said good-bye to my Barrington, RI residence and hit the road. After living in the smallest state, its difficult for me to drive long distances, and Atlanta was a long distance destination. The drive was easy, and at the end of the journey I had friends, family, a big house, and my best friend’s wedding reception to make it to. It was the fuel I needed to keep my sanity.

After an overnight stop in Strausburg, VA, I made the rest of the journey with time to spare for the reception. It is amazing how different Atlanta looks form an outsider’s eyes. I got used to the close together houses, and the small, but dense cities of New England. When I got off of I-85 in Braselton, GA and start making my way on backroads to my in-law’s house I started to get shaken. I couldn’t believe how country it really is in rural Georgia. Parts were charming, like the road side tables with local produce for sale, and other parts were just run down and sad. At this point I had yet to see the house that I signed a year and a half lease on in person, and this was swaying my confidence in my decision.

After John and Anna’s wedding reception I called it a night, with move in day starting bright and early the next morning. We finally got moved in thanks to friends and family into our new house. The house is beautiful, and has been truly renovated. We have lots of space to grow into, and Morrigan finally gets a toy room. We have central air again, and a wrap around deck overlooks the tree canopy in the heavily wooded back yard. We are up against a creek, and so far, it has been very peaceful, but the the neighborhood is no Barrington. I missed the cicadas and fireflies.

Over the last few weeks we have been getting to see lots of folks, and are making up for lost time. A lot has changed, but not so much that we can’t catch up. I have enjoyed talking with everyone, and I feel so happy to be back.

Another big change for us has been my adoption of a teleworking arrangement. I am home during the day, working out of my office. It has been great not having a commute, and getting to maximize my time with Morrigan and Kristin. When I would go into work, I would spend most of the day waiting to get back home. Now I have both things, together. Before you cut me down with your death ray stare, it isn’t all perfect. I miss my coworkers, and the opportunity it provided me to get out and break from the routine. I will give a telecommute update in a few months once I find a good rhythm.

In programming news, I have become intrigued with Node.js and developing in Javascript. A client project at work turned me onto it, but the timing was terrible since I was a new, first time dad. I had to let that project go, but a recent Hack Day at MojoTech gave me time to focus my energy on Backbone. I have been slowly building a card game in the browser using Node.js + Backbone + Mongoose. The project is one of love, as I used to play this card game a lot in Middle School, but now it is a dead franchise. More updates on Javascript, and my side project in the days to come.