Agile practices over the last several years have focused on high bandwidth communication. It could be standup meetings, pair programming, or even just that over the shoulder code reviews. As a product manager I completely understand what DHH is talking about when you have remote team members. Being able to have an ad-hoc conversation with developer keeps things moving enabling quick decisions.
It’s an optimization for the assumption that we’re all going to be in the same place at the same time. Under that assumption, it’s a great set of tactics.
But assumptions change. “Everyone in the same office” is less true now than it ever was. People are waking up to the benefits of remote working. From quality of life to quality of talent. It’s a new world, and thus a new set of assumptions.
It’s time for a reset. We need the same care and diligence that was put into documenting the agile practices of an office-centric world applied to an office-less world. There’s a new global maxima to be found. Let’s chart its path.
It takes more effort to initially run an agile team when not everyone is in the same location, but it is possible of you are motivated enough. It requires both all members of the team to make this possible, ensure communication with remote team members are kept up.
I have started working from home at least once a week. And keeping the communication level high while I am not in the office takes a bit of extra work for everyone. But tools such as HipChat and Campfire really help lower the barrier.
I’ve had several mentors over my career. Most of them informal mentors that were able to see something in me and help guide me in a more productive direction. Sometimes they were managers, or often friends that provided a different point of view. In most cases I still don’t know what they noticed in me, or why they helped, but damn I am glad they did.
These relationships have been critical to my career. These are the people I will forever be in debt. These people didn’t provide their guidance out of a work obligations, in fact my experiences with formal mentorships have always been a flop. They just don’t work.
Do you have these people in your life? When was the last time you caught up with a previous mentor?
Do how you do you pay these people back?
There are two ways:
Pay it back.
Deliver - this should be the easy one. Make them proud that they spent their time with you. Be as good as they think you are. Don’t waste their time.
Be a mentor - You know all the good karma, pay it forward stuff. No really, take time and be open to working with people. Find the right fit. Is there someone in your company that could use some of your perspective? In most cases you won’t need to seek out these opportunities, they will find you, just be open.
Here is the sneaky and possibly selfish part of being a mentor. You get to think through how you would solve a problem. How have you done it before? Can you really explain your position on a given subject? Mentoring someone allows you to work through your positions, what do you stand for?
If you are open to it, I think you will find that informally mentoring a few people a year, will make a big difference in how you think about what you know. And you will be paying back all those people who helped you out along the way.
April 22, was my last day at Microsoft. I have thought a good bit about how I would talk about this publicly. Would I write a blog post? Would I just leave it to a short messages on social various networks?
I finally decide that it was necessary to write this post as a record of my thoughts for my future self.
This post is not an indictment of Microsoft, if anything it is the exact opposite. I was at Microsoft 7 1/2 years. It was easily the most amazing organization I have ever been a part of. I am proud to be part of several product teams that shipped products that helped developers. And most important, got to work with some amazing people that truly care about making developers more productive.
To understand why I left, it is important to understand why I decided to join back in 2005. I had been in the software industry for ten years, bouncing between startups, riding the dot com bubble. At the time, I found myself pushing my employer to improve their development process. But personally I was frustrated that I was not learning from people with more experience shipping professional products. I was faking it in a big way.
After encouragement from a few co-workers to pursue my goal to work at Microsoft, I took the leap. Microsoft was to become my master’s program in software product development. Not many companies ship software at this scale and have the ability to impact so many lives. This was my chance to play in the big leagues, and learn from some of the best in the software industry.
Not only did I learn how to ship software to millions of developers, I was a member of teams that helped change how we executed. Moving from 2-3 year milestone based development efforts (waterfall) to an agile iterative release cadence that is now producing quarterly updates for Visual Studio, and updates to Team Foundation Service every three weeks.
There were plenty of barriers to moving an organization and product the size of Visual Studio in this direction, but it is damn rewarding when you start making progress.
Along the way I learned a ton about designing and building products. Mostly by making mistakes along the way. Are the products I worked on perfect? Far from it, but I valued the tradeoffs to ship. Shipping is a feature after all. But each of those tradeoffs, taught me something for the next time around. Make new mistakes. This to me is one of core values of shipping frequently.
Microsoft is a very large organization, easily the largest organization I have ever been a part of. Hell, Developer Division is larger than any place I have worked before. And there are aspect of working for such a large organization that exhaust me after a time.
I am proud of my time at Microsoft, but it is time for a refresh, a reboot if you will. I believe change is a good thing, gives you an improved perspective, keeps you learning and improving.
I start my new position at Splunk Seattle tomorrow. In one aspect a completely new space for me, I have never done much with big data. There are familiar aspects that I know I love, working on products for developers and IT. Learning new domains always bring new challenges, wish me luck.
I can't live without a simple text editor that understands markdown. I have shifted over this last year from proprietary note taking application such as OneNote and Evernote, to simple text documents saved in the cloud. I used markdown for taking notes, specifications and blog posts. If I have an idea I usually start with a new markdown document followed quickly with a card in Trello (more on that in a moment).
Writemonkey is a great markdown editor for Windows. It is a portable application. No need to run an installer. I keep in SkyDrive and have it available on all my machines.
What I like:
Lightweight - takes less than 11MB of disk space.
Clickity-Clack - I know is seems silly but ability to enable keyboard sounds is pretty nice.
Distraction Free Mode - I don't use this often. But being able to put the editor into full screen mode is quite nice.
Auto Save and Backup - You can configure Writemonkey to auto save and the ability to have a backup location. I save the majority of my documents in SkyDrive and have Writemonkey backup to Dropbox. Nice extra insurance.
Export as HTML - You can configure CSS templates if you want to preview your writing, send the document to Word, or copy the text as HTML using CTRL-SHIFT-H
No auto spell check - This may sound like a missing feature to some, and based on my poor spelling it may be. But I found that having my text editor constantly telling me a word is spelled incorrectly is distracting. I'd rather run spell check at the end of my writing reducing the distraction.
Improvements I'd like to see:
Default file type - I'd like to be able to configure the default file type to be markdown. Currently it defaults to txt. Which is fine but I find myself aways changing it back to markdown when I create a new file.
Win8 App - This might be much to ask, but if the makers of Writemonkey were able to produce a high quality Windows App Store application I'd buy it is a second.
Finding a system to keep my life in order has been a journey the last several years. I have several practices on how I handle email and reminders. But one area that I never felt that I had a great solution was keep track of all my projects and tasks that I need to organize on a regular basis.
Trello can be used for many things since it has a three simple concepts, boards, lists and cards. Cards live on lists, lists live within boards. You can create a simple set of lists such as to do, doing, done. And each task you want to track moves through those stages. You can order the tasks to give you a better idea of what you should do next.
Currently I have a few boards to track work going on specific projects, then I have a board where I keep track of the majority of my work tasks. Currently this work board has five lists, To Do (my backlog), This week, Today, Waiting on others, and Done. How I got to this process is worthy of a post on its own. And I am sure I will continue to tweak the process.
What I like:
Really simple - There are no rules within a Trello board, I can make it bend to my needs. If I want to add an extra list to a board to try something out I can, and if I later change my mind I can archive the list or delete it all together.
Keyboard friendly - It is satisfying grabbing a card and moving it to the done list, but being able to do it with the keyboard is even better.
Available everywhere - Well almost, you need a network connection, but I am adding things to my board all day, reminders to setup a meeting, task to check on the status of a project. Being able to do this when I think of it is key for me to not lose the idea.
REST API - Trello has a nice REST API making it pretty easy to integrate into Trello.
Improvements I'd like to see:
Offline support - Not that I find myself without access often, but having offline support would help enable me to add tasks at any time.
Keyboard shortcut to generate card links - Getting a link to a card is really powerful, I usually add a link into a markdown document for a card that I am working on. But right now it takes a few clicks to pull out a URL to the card. Having a keyboard shortcut would be a major improvement to my work flow.
Display number of cards within a list - Being able to see how many cards I have in a list is helpful to figure out if any one stage has too many items. There are a few nice Chrome extensions (see below) to do this, but they don't work when you have filters enabled.
Markdown Link Generator
- Since I write just about everything in Markdown being able to pull a hyper link from a site and have it formatted in markdown is great. This simple Chrome extension makes grabbing link very easy.
CardCounter for Trello
- Mostly solves the lack of being able to quickly see the number of cards within a Trello list. The only downside is that it does not work if the list is filtered.
This is was pretty light year for adding new tools into my process. This may say something about the tools I picked up this year. I pretty much live in these two tools. And of course Outlook, now if I can figure out how to write all my emails in markdown I think I would be set.
In 2013 I will be looking for more of my tools as Win8 Apps to support my Surface. Trello already has a Windows 8 application in the store. There are a few markdown text editors in the store but nothing that is as good as Writemonkey.
I like extremes. There is something pure about seeing something taken to extreme. There are negatives at the extremes. But there is also elements that come out that can provide inspiration.
Take Jiro Ono, a 85-year old sushi chef from Tokyo. Jiro has taken the act of preparing sushi to an extreme level. His goal is to approach perfection. Jiro runs a 10 seat sushi restaurant in the basement of a Tokyo office building. Not the type of place you would expect to be a 3 star Michelin rated restaurant.
The documentary is beautifully done, showing how pure something can be done if you really love your work above all else. This in its self is an extreme.
Jiro is focused on every detail. From selecting the very best seafood, to personally organizing the seating chart, to requiring apprentices to take up to 10 years perfecting grilled egg.
Once you decide on you occupation you must immerse yourself in your work. You have to fall in love with your work. Never complain about your job. This is the key to be regarded honorably. - Jiro Ono
Spirit of Shokunin
Within the documentary Jiro mentions shokunin. I was not familiar with this word. My initial interpretation was that shokunin is similar to craftsman, but this does not fully capture the sentiment.
"The Japanese word shokunin is defined by both Japanese and Japanese-English dictionaries as 'craftsman' or 'artisan,' but such a literal description does not fully express the deeper meaning. The Japanese apprentice is taught that shokunin means not only having technical skills, but also implies an attitude and social consciousness. ... The shokunin has a social obligation to work his/her best for the general welfare of the people. This obligation is both spiritual and material, in that no matter what it is, the shokunin's responsibility is to fulfill the requirement."- Tasio Odate
I believe Jiro also explains it well:
All I want to do is make better sushi. We don't care about money. I do the same thing over and over again improving bit by bit. There is always a yearning to achieve more. I continue to climb trying to reach top but no one knows where the top is.
Even at my age, after all these years, I don't believe I have reach perfection. I love making sushi, it is the spirit of Shokunin.
Software development as a craft
The software development profession is still very young in comparison to many professions. I believe as we continue to practice this craft of building software we will evolve towards an craftsman/artisan direction. I would like to see this, not only for developers, but also from product/program managers, and designers.
I believe it starts with mentoring and practices such as pair programming. We are a long way from apprentice programs as common as in other professions, but it will be interesting to see where we end up.
People like Jiro Ono that have such a singular focus towards a profession are extremely rare. But I believe there is purity and beauty at these extremes. Do we have individuals within the software profession that are on Jiro's path? I don't know, it may take another 30 years to find out.
Since I switched my blog over to a static site generated via Pretzel I have been looking for even easier ways to publish posts. @vikingcode has a great post on how to configure a empty shim project to kick off Pretzel on push to Azure.
Jekyll is nice but if you're not a Rubyist or if you don't like Liquid (the templating engine that Jekyll uses) it may not be as nice to you. One of the early projects of Code52 was Pretzel which started off as a .NET app with Jekyll compatibility. Since then, Razor has been added as well as other enhancements. The "problem" with Pretzel was that you'd have to prebake the site and commit the site to Git, rather than just the "source" files.
Azure "relaunched" a few months back, including a new product "Windows Azure Web Sites" (WAWS). WAWS is essentially Microsoft's version of AppHarbor or Heroku - Git (or TFS, or FTP) deployed sites "to the cloud". WAWS lets you use a whole stack of web tech - .net, node.js, java, php, python and potentially more.
Now thanks to this post I was able to switch up my workflow. Instead of pushing from my desktop to Azure the _site folder. I now have a service hook configured on CodePlex that pushed the source to Azure and then on the Azure side Pretzel is run to generate my site. It is always great to remove a step in any workflow.
If you try this out and have problems with incorrect paths, I submitted a pull request to fix a bug when using the -d switch
I think there are a few things that every parent hopes to be able to share with their children. It could be your love of a sport team. I have been successful in teaching (brainwashing) my children to love the Pittsburgh Steelers.
As my kids have gotten older, I was looking forward to the day when they were old enough to experience Star Wars. I still remember sitting inside the theater at 6 years old and experiencing the opening scene of Star Wars. It was an amazing experience as a 6 year old. I had never seen anything like it.
My kids are not experiencing Star Wars the way I did. Not even close. I tried to control how they were exposed to Star Wars, but it was useless. Between seeing the episodes I-III, playing Lego Star Wars, and talking with their friends, their experience is all wrong.
Over this past holiday weekend, I decided to try to do a Star Wars reset on my kids (son 8 and daughter 5). Starting with episode IV A New Hope, then into Empire, I was hoping to undo some of the past damage.
I am not sure how successful I was. My son already knows that Darth is Luke's father. So the pivotal scene in Empire didn't have an impact on him. In fact I had to catch his attention, and replay the scene. But of course he already knew that, he just looked at me "dad I know".
Maybe it is unreasonable to think your kids are going to have the same reaction to the experiences you had as a child. They will never know what it feels like to sit in a theater as see Star Wars before anyone knew what it was going to become. They are never going to know how it felt to grow up in Pittsburgh during the early 70s. They know their dad loves the Steelers, so they love the Steelers. But they can't experience the same way I did, not reasonable, and not possible.
But that is OK, they will have their own first experiences that their kids won't understand the same way either. Let the cycle continue...
Over the last year and a half I have focused on improving my health. I can't say I was significantly over weight, but each year it was a little too easy to add a pound or two. Over the last 10 years my weight has bounce around, anywhere from 185 to 210, at 5' 9".
Maybe it has something to do with turning 40, who knows, I could have bought a sports car, but I decided to do something about my overall health instead. I had taken steps in the past to work out, and eat better, but for the first time I have been able to keep my weight under control, and I believe I am now in the best shape since I was in high school.
These are the practices that have worked for me. But you should do your own research and see what works for you. I'd love to hear if you have additional suggestions.
Switch to a standing desk
As I posted last year, I just got fed up sitting all day. When working an office job it is way too easy to be inactive for the majority of the day. It may not seem like much but switching my work station to a standing position really helped kick start my weight loss behavior.
If you work at a large company chances are there are ways to get ergonomic furniture that will enable you to switch to a standing position. And if you can't get a specialized desk, you should try raising your desk with some bricks. The best part about the adjustable desks is that you can ease your way into standing all day. I don't ever switch to sitting mode but it does take a few weeks to get used to standing all day.
The word diet has such a negative connotation. But how I look at it, sure you can work out like crazy and justify eating anything you want. Or you can look at what you eat and decide if it is part of the problem or part of the solution.
My personal road to changing my diet started by reading a few books. I read The Omnivore's Dilemma and it really had an impact on how I think about food, and how crazy some of the things we call food are really manufactured food-like substances. After my wife read the book, the next thing I knew we were receiving a quarter of a grass fed cow, from a local farmer. Then a local pig, chickens and a lamb, yeah my wife went a little overboard. But we knew what we were eating.
Next I started reading 4-hour body. I had heard good things about the book, and was impressed with Tim Ferris' marketing style. Tim's book covers several topics, but there are three major things that really sunk in with me, 1) keeping your blood sugar consistent, 2) get at least 30 grams of protein first thing in the morning and 3) measure your progress.
Cutting out sugar was one of the more difficult aspects of my diet change. And I don't just mean standard sugar that you would think of in various forms, high fructose corn syrup or cane sugar. But this also includes foods that quickly are converted into sugar such has bread and other complex carbohydrates.
I won't lie, this was not easy at first. I gradually worked into reducing sugar in my diet. I started minimizing the sugar I added to things like coffee, until over time I was drinking it black. Also during the first four months or so, I allowed myself to have a cheat day, I would eat what ever I wanted one day per week. The cheat day really helped to know that I had an outlet. Tim talks a good bit about the benefit of a cheat day. I no longer find the need to have a cheat day, but this really helped as I was transitioning into this new diet.
Until I read the Four Hour Body, I normally would have a bowl of oatmeal each morning before work. There are two problems with this, not enough protein and the grains quickly convert into sugars. Since, I have followed Tim's advice and start each day with a breakfast consisting of four eggs from pastured chickens, two small turkey sausages and as much spinach as I can fit within a pan. I add a little bit of goat cheese and a couple of teaspoons of habanero salsa and I am set.
Tim Ferris is pretty crazy when it comes to measuring everything, weight, blood sugar fluctuations, and vitamin levels. I did not go that far, but I measured my body dimensions each month, and kept track of my weight each day. Measuring and weighing is a great way to stay motivated. And weighing in every morning did something to keep me honest. The daily weigh in is a powerful motivator, I could quickly see progress and each morning it gave me a bit of reward for my new eating habits.
After I had lost about 25 pounds by changing my diet, I started to add at bit of running into my weekly routine. I had been a runner in high school. OK, I had been a sprinter in high school, but distance running was not my thing in any way.
I became inspired to give running another try after reading Born to Run and talking to my cousin who had just finished an ultra-marathon. It took me several months to build up my endurance but now I am running 20-30 miles per week at a decent pace. I really enjoy running, it has been a great way to get out and clear my head.
At this point I believe I'm likely in the best shape of my life since leaving high school over twenty years ago. I feel great, I have more energy and I sleep great each night. And I was able to lose enough weight to require a new wardrobe.
I hope my story will help inspire others. We don't need to be a nation that is overweight. We can change, we just need a little bit of information and the motivation to take to first steps to build healthier habits.
Dave Winer has some interesting thoughts on the reality of attaching your future to an API like Twitter's. It has always surprised me the number of applications that were being build completely tied to a companies future that was not yet established.
Twitter had been telling developers, for years, that they should develop all kinds of clients. That was when Twitter was just a website and had no clients of its own.
Smart developers will not just conclude that Twitter is unsafe to build on, but also any company that is operating in the Twitter model. If they are running a website, and trying to attract a lot of users, and are going in the direction of advertising, you'd be a fool to think they won't do the same as Twitter has.
Of course Twitter is not alone here, they just happen to be the a recent big organization that changed their direction regarding APIs. Nothing new, we should not act so surprised.