My Sitecore Story
This article reproduces several pieces that I published in 2013:
- My Sitecore Story: The Very Beginning
- My Sitecore Story: The College Years
- My Sitecore Story: Live Musical Performances I Have Attended
- My Sitecore Story: Before Sitecore
- My Sitecore Story: Joining Sitecore
- My Sitecore Story: The Early Years
- My Sitecore Story: My Current Role
- My Sitecore Story: Mentoring
- @sitecorejohn Bids Farewell (2016)
My Sitecore Story: The Very Beginning
Bear with me; I will try to publish eight blog posts today in an attempt to reach my stretch goal of 400 blog posts in three years. I have not come up with the list of titles yet, so I will almost certainly ramble and publish numerous errors. None of these posts will contain any technical information, so I admit this is cheating. Depending on how many readers, comments, and stars these get, I might need to record today as PTO. If you do know me or do not want to know more about me, just ignore my posts for today, but these should actually answer some of the questions to which I respond most frequently.
I received my first keyboard as a gift when was four years old. It was a Brother mechanical typewriter - not a computer; it did not even consume electricity. I think that the need to bang so hard on those keys to get the hammers to fall increased my wrist strength to the point that has allowed me to continue typing for over 35 years without significant injury, but I do not know how much longer that can last.
The ink ribbon on this machine had two colors: black and red. To type in red, I held down one button while pressing another, which was my first introduction to keyboard combinations beyond shift. Paper was scarce and correcting typos was almost impossible, which I think lead to improved typing accuracy. As I got older, my father let me use the electric typewriter in his office, which was like moving from a revolver to a fully automatic machine gun with a hair trigger (and white-out).
When I was about ten years old, a friend got a Commodore VIC 20 and suggested I do the same. One of my teachers programmed that VIC 20 to play Tic-Tac-Toe, which was more than enough to convince me to encourage my brothers to pool money we received as Christmas gifts and buy the Commodore 64 I named Dmitry. Ah, dear Dmitry. No one can really understand the relationship between a nerd and its first computer (obscure Stranglers reference).
My parents were against the system because they thought it was just for games, but I read the reference manuals from cover to cover (in those days, they came with schematics). I felt that I truly understood most of the platform, even if I would never really understand electrical engineering or even machine language. We started out with cartridges, then a tape drive (I remember listening to the binary as analog on my father's stereo), and eventually upgraded to a 5.25" floppy disk. I could write several blog posts about those experiences.
Around the same age, I started working for a landscaping company my father managed. I think I earned $1 per hour that summer and I'm not sure it was legal. This taught me a lot about hard work and what I might not want to do for a living. As I grew older, I found less time to actually work with computing machines, and I think I was only reading about them by the time I left high school. Having entered kindergarten a year early due to a family tragedy that occurred when I was four, I was barely 17. I spent my summer before college landscaping on weekdays and working at a gas station on weekends.
My Sitecore Story: The College Years
After high school, it was not until my dorm mate in college acquired an IBM PS/2 with a Compuserve account that I started working with computers again, mostly typing papers for other students but doing some DOS programming. After I left the dorms, I had to use the school computers, which by then had WinSock and Mosaic. Mostly I accessed terminal emulators to access the computer's DEC machines for email (the school actually had real greenscreen terminals, but I didn't find that room until my VAX assembly language course a few years later).
I really thrashed through some topics in college. I do not know how many times I officially changed my major, but I took unnecessary classes in at least environmental engineering, philosophy, and journalism before ending up in a developmental psychology program. As I approached graduation, I realized that this focus seriously limited my career prospects and that I had continued to study computers throughout my formal education. I added Computer Information Systems (or was it Computer Science?) as a second major with a minor in business administration and went back for another year. I was somehow able to skip some of the introductory computing courses, which saved me some time.
It was at this time that I met a professor who may have lead me to the most important transition in my life before Sitecore. In my first course on RDBMS, I became a teacher's assistant, which didn't pay much but was better than landscaping, helping people move, and whatever other unskilled work I could find at the time. I maintained his website, graded tests and managed grades, led labs in the lower-level computing courses, and so forth.
When it was time to look for a job that summer (so I would not have to bus tables for yet another summer), I asked him to provide a reference for my job search. He said I did not need to look for a job; he ran a consulting company and hired me as an EDI programmer. With a Ph.D. in programmer productivity, he said I was among the top 10% of talent he had seen during his career in education and industry. I literally felt like I was floating most of that summer.
That consultancy almost immediately dissolved and their primary customer made offers to most of its employees, including me. Although I never wanted to live south of San Francisco, I jumped on an opportunity to relocate to Silicon Valley. I continued to do EDI work for this FPGA designer in the valley for two years, managed indirectly by my former professor and mentor who also moved. The first significant system I developed processed over $300,000,000 in invoices during its first year without a single error (there were two errors in the upstream data, but those were not my errors). I also pioneered a new technique for working with that EDI software by combining source and target models into a single codebase supporting multiple partners and X12 or EDIFAC versions, where previously each partner, version, and model required its own code.
As I still needed a few credits to graduate, after two years working there, I tried to quit. In response, the company offered that I could move to their location in Ireland and re-found the EDI team there, which was another opportunity I could not refuse. After almost a year there, the team was in good shape and I did quit to go back to school.
School was boring. I was teaching some of the teachers, who were using my code as examples for the class. Class discussions had no real-world context. I was spending money instead of making it, and this was at the height of the dot com. Then I met the woman who I would marry and college was over for good.
My Sitecore Story: Live Musical Performances I Have Attended
This blog post really does not have anything to do with Sitecore, but might help people who like music get a better understanding of who I am. Not counting classical music and operas that I could not credit, off the top of my head I can remember seeing the following live musical performances. I am doing this partly just to help myself remember. Update: It looks like I published this in 2013 but edited it until early 2015.
- Dave Brubeck (in the 90s)
- Tony Bennet (just last weekend)
- The Who (twice, once at Madison Square Garden)
- Robert Plant (with the Who in NYC; for anyone who does not know, he was the singer for Led Zeppelin)
- Rush (at least six times in at least four different locations, going again this summer)
- Peter Gabriel
- Tool
- Jimmy Cliff (once at the Portland zoo last summer and I think at Reggae on the River in 1990)
- The Police (I am old enough to have seen them in the 80's but only caught the reunion tour a few years ago. We showed up to late and missed Elvis Costello, who was playing with them.)
- Motörhead
- Dio
- Iron Maiden
- Metallica (live at the Point in Dublin, Ireland; they opened with Breadfan!)
- No Doubt
- Primus (very often during high school)
- Victims Family
- Operation Ivy
- NoMeansNo
- Sausage
- Helmet
- The Mermen
- Cyprus Hill
- KRS-ONE
- Black Uhuru (or was it Steel Pulse?)
- Some of the numerous and varied bands named Strictly Roots
- The Mighty Diamonds (have mercy)
- Coldplay (we live in a beautiful world, but they didn't play it)
- Elton John
- Alpha Blondy (I shook his hand while he was on stage. Super Powers.)
- Mr. Bungle (they were opening for Greenday in 1990, but my friends and I got thrown out before that set)
- Jeff Beck
- Cro-Mags
- Hall and Oats (August 2013)
- Chicago (March 2014)
- Scott Pemberton Trio (March 2014, again in 2014, again in 2015), once with Born Cosmic
- Hugh Laurie and the Copper Bottom Band (2014)
- The Eagles (2014)
- Soopah Eype (twice so far in 2014)
- Constant Flow (March 2015)
- Immortal Technique (March 2015)
- Talib Kweli (March 2015)
There are so many more I would like to see or have seen, and probably quite a few I do not remember at the moment, including some for which I've just forgotten the names.
My Sitecore Story: Before Sitecore
After I met Susan, although I had no experience as a consultant, I somehow landed a job as a Senior Consultant near San Francisco on an EDI project that involved SAP. I moved from high-tech to consumer packaged goods, specifically canned fruit and vegetables. I had worked some long days and taken late-night pages previously, but this was my first real boiler room experience in the industry, and management at the customer and the consultancy were terrible (the project cost tens of millions before they switched to a vendor that never provided the CRM software they purchased). I only lasted about six months before my resume was online.
This was right around the peak of the .com bubble. A recruiter contacted me with an opportunity to work for a consultancy in San Diego that managed a CMS practice. I had never heard of CMS but I knew this was an opportunity. I remember haggling about how many stock options I would receive and ended up with 15,000. I worked in the bay area for a few more months and then relocated to San Diego.
The company immediately folded without paying relocation expenses or wages. People came to work and found the doors locked. Even the retirement program in which I had invested turned out to be a fable and of course the stock options were worthless. When this happened, I was teaching a class the consultancy had subcontracted to provide for a CMS software vendor. My wife attended the closure meetings so I could keep working, even though I felt that I was earning negative money.
Another consultancy opened an office in San Diego and swept up some of the employees, but three months later they closed that office. I was looking at a similar opportunity in France, but decided there was too much risk and instead moved to one of the biggest banks in the United States (first silicon, then CPG, now finance). When I showed up for the first time at my cubicle, I could not see a window, but I could see a machine that was at least five years old running Novell Netware and Lotus Notes. I think I almost cried.
At that time (March of 2001), I interviewed with both Fannie Mae in DC and Lehman Brothers on the 40th floor of building 2 at the World Trade Center. It did make me dizzy to stand at an outside corner and look up. Those interviews were three of the only days of my life on which I have had to wear a suit. I think I still have my photo ID the WTC gave me. I think I would have made it out of the building, but I also hope I am the type of person that would have gone back in to help others.
I worked at the bank for about one year and then the .NET miracle occurred for me in 2002. As I knew Perl and their CMS, Intel contracted me to learn C# and port a few hundred thousand lines of Perl in three months. I looked at the requirements instead of the code and I think it was about 15,000 lines of C#, including whitespace. That led me to another .NET CMS opportunity at a major logistics company.
The next thing I knew, I was working on a project in Iowa for nine months for a company that scientifically breeds and genetically engineers crop seeds. I was able to implement the content delivery layer with .NET and XSL (I thought XSL was great at the time), but the back-end was a combination of Java, Perl, C, C++, toothpicks, and spittle.
A few things were happening here. EDI had exposed me to numerous business systems, processes, and interfaces that touched almost every aspect of a typical business - order management, order response, shipping notifications, inventory, invoicing, point of sale reports, product test reports, and so forth. Exposure to the industries in which I worked helped me to further understand how organizations do business. And now I had worked both on the customer side and on the consulting side. One thing that remained was to work on the software vendor side.
When that contract ended, I found myself in another boiler room environment for a security software vendor. I would work 12-16 hour days and at home take very difficult calls from the Korean and Italian users overnight. This lasted two months before I took a contract with a heavy equipment manufacturer in Illinois. After that I took another contract with a competitor to the software vendor for whom I had worked previously. At that time, I (along with numerous other developers) thought I had invented AJAX.
My Sitecore Story: Joining Sitecore
During the summer of 2004, I took a contract at a healthcare organization to research alternatives to their legacy CMS. After thousands of hours coding in ABAP, various assembly languages, various BASICs, C, C++, Java (I honestly almost forgot to include Java in this list), Perl, Unix shell, SQL, and probably others (LOGO, etc.), I personally preferred .NET, but I evaluated numerous Java, LAMP, and .NET solutions. The Sitecore architecture and the potential developer productivity stood out clearly from the rest. I contacted Sitecore, which coincidentally was in the process of opening a US office at that time.
It was really love at first "site" (sorry). It was the architecture I might have implemented if I had had the skill, time, foresight, and various other qualities and resources. It was .NET, yet it was lightyears ahead of the competition that had been under development for years longer. It could be simple and lightweight or complex and capable depending on requirements. It was beyond extensible; it was almost a toy, and I still feel that it is much like my favorite toys (one of our customers, but I don't think I should mention their name here). I estimated that it would be a good fit for 95% of the CMS projects on with which I had been involved (I think about 20 at this point, many in Europe - I must have forgotten to list a few jobs earlier). It estimate it would have saved Intel 90% of their development effort and cost. This was Sitecore 4.3, which would still be a viable platform for an incredible number of web sites. During the two-day training, we converted much of one of the hospital's sites that had taken 1.5 years to develop to Sitecore while adding functionality such as breadcrumbs (which were all the rage at the time) and dynamic navigation.
I strongly recommended the Sitecore platform to the hospital. For political reasons, they went with a proprietary solutions without ever reviewing the research for which they had paid me for three months. During the process, I had been in touch with Bjarne Hansen of Sitecore, who would became my second significant mentor. I offered my resume hoping that I could get a job as a consultant, but Sitecore's partner model precluded any such role for me. I had just borrowed $9,000 on a credit card to make a down payment on our first home (wow, lending standards were lax back then). At this time, Susan did not have a job. Bjarne offered me about 1/3 of what I was earning at the hospital with no benefits, and I jumped at the incredible opportunity.
I was the fourth Sitecore employee in North America. At this time, all of the employees (4), customers (I think 2), and partners (I think 0) could fit in a single, relatively small vehicle. We did not even have an office; the desk where I did most of the online sales demonstrations was in a hallway of one of the home of one of the employees. These were exciting times and I truly miss working so closely with Mads, Erik, and especially Bjarne, who unintentionally taught me as much about business and entrepreneurship as all of my previous education and experience. It is amazing to consider how far Sitecore has come in nine years. Sometimes it still feels like a dream, as it can be difficult to believe my fortune.
The Early Years
When I first joined Sitecore, I was responsible for anything technical in North America. This included:
- Online and onsite sales demonstrations
- Teaching Sitecore courses, which involved extensive travel in North America including Canada and Curaçao
- Preparing responses to RFPs
- Post-sale email and phone support
- Configuring the networks, changing printer, fixing the fax machine, and so forth
At this time, the Sitecore Developer Network (SDN) implementation was pathetic, and the community involvement reflected this fact. Sitecore is great at building CMS software, but not as great at implementing web sites with that software. In an attempt to foster community, I started a Yahoo! group about Sitecore which eventually developed some activity. Eventually, Sitecore implemented a new SDN that was not as bad as the old SDN, but really shows its age today. I also chose to try to develop documentation and training materials, both of which were almost entirely absent at the time.
These were some of the most fun and exciting years of my life, but the travel took its toll on my health and life in general. I remember coming back from holiday in China on a Sunday to find tickets for a flight to teach a class in Boston on Tuesday. I did this for about three years before I asked for a new role.
Subsequently I spent about three years on the documentation team writing first drafts of many of the PDFs about which Sitecore developers either do not know or complain constantly. I also found more time for the Sitecore developer network, where I have over 7,500 posts (in an earlier year, I had received a trophy for my contributions to one of Sitecore's competitors' developer networks).
So far this post is short and I mentioned travel so I'll try to remember some of the places I've visited (I do feel a little guilty about my contributions to the carbon problem):
- United States (maybe 20 of them, probably 30 cities, almost always for work)
- Mexico (many times, almost always for work)
- Republic of Ireland (Dublin, almost always for work)
- Canada (maybe 5 cities, almost always for work)
- England (just London, sometimes for work)
- The Netherlands (once for work, mostly Amsterdam, where the people celebrate my birthday as Koninginnedag)
- Italy (Milano, for work)
- Spain (Barcelona, for work - people still smoked in the office)
- France (once for work, mostly Paris)
- Norway (only Oslo, for months of work)
- Denmark (maybe ten times now, always for work, even before I joined Sitecore)
- Germany (Berlin and Munich, the latter for work)
- Singapore (I went around the world in two weeks from San Diego to Munich to Singapore to San Diego).
- Ukraine (twice, always for work in Dnepropetrovsk, but also visited Kiev while there)
- Russia (Moscow and St. Petersburg)
- Cambodia
- Thailand
- Vietnam
- China (twice - Beijing, Shanghai, Hangzhou, Guilin, and more - I even climbed up and down Yellow Mountain!)
- Argentina (we had to cancel our trip to Peru)
- Curaçao (for work)
- Belgium
- Austria (only Vienna)
- Sweden (Malmö)
- Finland (on a business trip, but not there for business)
- Switzerland (on a business trip, but not there fore business)
- Venezuela (November 2013)
Of course I have landed in Japan, Iceland, Turkey, and a few other places, but I can't really count those.
I would like to return to many of these, and there are too many additional places I would like to visit.
My Sitecore Story: My Current Role
One of the questions people ask me most frequently is what I do for Sitecore, and I can certainly understand why. I think people might find it strange that a CTO answers their questions on the Sitecore Developer Network Forums, sometimes even suggesting web meetings to resolve issues that could otherwise take significant time through exchanges with support. My title is Chief Technology Officer, but for the last three years, my role has been that of a Consulting Product Architect in the Focused Innovation team in product management. I work primarily on CMS but spend some time on DMS, Azure, SES, and various other products. Lately I've looked at MVC and Sitecore 7.
I try to investigate pre-release builds as they will appear from the customer's perspective. While I have some direct access to engineering, I avoid using those channels unless necessary (for instance, if I find an issue that could use correction before release). I focus on existing documentation including unpublished drafts, as well as disassembly of Sitecore assemblies with the goal of educating Sitecore developers and providing fodder for the documentation and training teams. I rely heavily on and greatly appreciate Sitecore support, which I access through the same portal as everyone else, but without any guarantee on turnaround time.
I try to spend most of my time writing blog posts (I don't have to record my hours, which I would just falsify anyway, so I really don't know for sure). If you've never written a technical blog, you might be surprised how laborious even small things can be. For me, this includes screen captures, formatting, and avoiding what I see as content gaps (places where people might ask questions), but also responding to comments on old posts, and especially such questions that have nothing to do with the original content of those posts. Writing the code is the easiest part; writing the text is almost always harder and more time-consuming, but the rest of these things probably use the most of my time.
I mostly look for small, common issues and ways to increase usability and developer productivity. I find issues to consider in several ways:
- By reading and responding to posts on the Sitecore Developer Network forums
- By reading blog posts and watching videos by other Sitecore developers
- By reading comments on my own blogs
- Through experience with Sitecore products, especially alpha builds
- Through my twitter account
- Through direct email contacts
Of these, I spend considerably more time on the Sitecore Developer Network than any of the others. If I identify what I consider to be a defect, significant gap, or challenge faced by numerous Sitecore developers, I try to blog about a solution or workaround, and then work with support and engineering to determine if Sitecore can address the issue in its products. When I find new information on a topic, I try to update existing blog posts with links, but there are so many resources about Sitecore now that this is almost impossible. I route all sorts of issues to what I consider to be the most appropriate resources, whether by typing some text, providing links, suggesting that developers attend training, contact sales, support, or any other department within Sitecore or a partner, and so forth. At this point, I cannot find time for public forums such as stackoverflow.
I do mostly back-end work on topics that seem interesting to me and have an expected scope of less than one week, preferably less than a day, leaving the front-end, testing, and whatever else remains to anyone else who wants to pick something up from where I left it.
In late 2011, Bjarne asked me to write a book about Sitecore, which is one of the hardest things I've ever done and the only project for which I have been responsible for delays. I speak at Sitecore Symposiums, though after my last five performances I can't believe management would invite me again.
Basically, I do whatever management asks, but after nine years management seems to trust me to provide sufficient value without significant direct management. I think I have the best job in the company (certainly the best for me) and possibly in the Sitecore community.
My Sitecore Story: Mentoring
This last post in today's series is about past (my mentors), present (my current attempts to mentor), and future (any readers that are not already mentoring). I do not think I can overstate the importance of mentorship, as my life would be completely different without two key mentors. Statistics vary, but for every individual skilled in this industry, there are probably at least two jobs in the real world. For now this is good for our wages from a supply and demand perspective, but maybe not sustainable for the long term (when many of our very lives will depend on those systems), and can lead to underqualified individuals in various positions.
Mentors encourage people (sometimes labelled protégés, protégées, apprentices, or mentees), for example to stick with things they are good at when they might otherwise back away, and not to fear the unknown or even their own weaknesses. In fact, mentors help mentees identify and overcome their skill gaps. Mentorship helps both mentors and mentees learn, develop, and grow, both personally and professionally.
Unfortunately, I do not have many concrete suggestions for how to start mentoring, and opportunities depend on context. For example, working from home can make it hard to mentor people in person, and an organization that is large enough can create a formal mentorship program. Management needs to understand the importance of this investment.
The most important aspect is communication; it does not need to be a formal relationship and can be very short and lightweight. Knowledge in your head is only valuable to you. It has much greater value if you share it with others, whether in person or in public. I encourage all Sitecore developers to spend some time blogging about their daily, weekly, or monthly activities with Sitecore, even if only microblogging. The key thing about writing is just to start writing; your work will only improve over time. People do not expect perfection in blog posts; they are looking for information or sometimes just directional pointers. We all live on the Internet; to get the most value from it, we have to cultivate it. The Internet provides incredible opportunities for all parties on both sides of the mentorship.
When a new developer joins your team or project, be friendly and let them know you are available for a two-way learning process. If an inexperienced Sitecore developer has a newbie question, instead of ignoring it or feeling frustrated, show that you care, take pride in trying to educate them on the topic, and try to provide pointers to the next few areas they could research. This works best when we all approach it the same way. Consider everyone with whom you interact to be both your mentor and your mentee. When I used to teach CMS training, I was surprised constantly by how much I learned from my students. In fact, I think each of us has something to learn from every other individual.
I don't think it is sexist of me to say that I think it is very important that everyone in the field encourage more women to enter it, and especially to be sensitive to women's perspectives. It's one thing to call a mixed group "guys", which I seem unable to stop doing, but certain developer-types can make IT shops less attractive to the more attractive gender. A balanced development team needs as many perspectives and approaches as it can find.
@sitecorejohn Bids Farewell
Over more than a decade with this company, I have watched Sitecore grow from a small group of people trying to build and sell the best web content management software in the world to a global organization of significant scale that, with engagement management and automation, has exceeded that goal. While I am proud to have made significant contributions to presales engineering, training, documentation, software evangelism, and especially the Sitecore developer community, the time has come for me to bid farewell.
I would like to show special appreciation for all of the Sitecore MVPs and everyone else who knows they truly deserve to be an MVP. I enjoyed meeting you at MVP summits and Symposiums. I appreciated what I have learned from each of you and the times we helped each other. I would also like to sincerely apologize to anyone I have abandoned on Sitecore forums, on twitter, on my blog, on email, and/or elsewhere. With all of the people and points of contact, sometimes it could be hard to keep up.
As I wrote in one of my first blog posts back in April of 2009 (Three Factors to Sitecore's Success), people are the only thing that can make a successful product and a great place to work. In my time with this company, I was lucky to learn from hundreds of pleasant, talented people from all over the world - more than I can possibly remember to contact individually in this last week. I have truly enjoyed watching the Sitecore developer community grow from almost nothing to a vibrant global force.
While I may not currently know exactly what lies ahead, I am motivated to explore other interests and challenges, and will be especially glad to have more free time. In any case, I expect to do something very different from what I have done at Sitecore. Although, over the last twenty years, every time I have said I would take some time off, I have ended up doing something more exciting professionally.
Rather than saying goodbye to hundreds of friends in the Sitecore community, I would simply like to move into a new phase of those relationships. I do not expect to travel much in the near future, but you are welcome to look me up if you are ever in Portland. For anything except Sitecore technical support, you can always contact me on gmail (john.west) and http://linkedin.com/in/johnwest3.
I will always wish the absolute best for the company, its employees, and everyone in the Sitecore community. I am thankful for the experiences I have had with this organization, glad to have had the opportunity to work with all of you, and always will be proud of our combined accomplishments.
Goodbye forever, Rich Text Editor!