{"id":7856,"date":"2017-12-12T01:06:22","date_gmt":"2017-12-12T06:06:22","guid":{"rendered":"https:\/\/qxf2.com\/blog\/?p=7856"},"modified":"2017-12-11T12:20:45","modified_gmt":"2017-12-11T17:20:45","slug":"an-introduction-to-rd-at-qxf2","status":"publish","type":"post","link":"https:\/\/qxf2.com\/blog\/an-introduction-to-rd-at-qxf2\/","title":{"rendered":"An introduction to R&#038;D at Qxf2"},"content":{"rendered":"<p>As a techie, you cannot escape the buzz around IoT, elastic cloud computing, data analytics, machine learning, AI and the like. Most of the deep testing we would like to do in these areas lack easily accessible knowledge sources and definitely lack good tooling. We are sure that larger companies have faced many of these challenges and have arrived at a number of solutions. But unfortunately, we haven&#8217;t found solutions available in the public domain. So we have decided to devote R&#038;D cycles to tackle some of these problems. I am sharing our plan online in the hope that smarter minds than us can provide feedback on the path we have chosen to travel.<\/p>\n<hr>\n<h3>The risk and benefits of R&#038;D<\/h3>\n<figure id=\"attachment_7857\" aria-describedby=\"caption-attachment-7857\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/for_rob_fi-300x211.jpg\" alt=\"\" width=\"300\" height=\"211\" class=\"size-medium wp-image-7857\" srcset=\"https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/for_rob_fi-300x211.jpg 300w, https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/for_rob_fi-768x540.jpg 768w, https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/for_rob_fi-1024x719.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-7857\" class=\"wp-caption-text\">We know what you are thinking &#8230;<\/figcaption><\/figure>\n<p>Spending money on open-ended R&#038;D could seem risky for a small company like ours. But we are OK with investing on R&#038;D because:<\/p>\n<ol>\n<li> it gives us a chance to do creative work (employee morale ftw!)<\/li>\n<li> it helps us get familiar with the latest technologies (&#8230; even if we produce nothing worthwhile)<\/li>\n<li> we may end up attracting clients who are already working in these areas<\/li>\n<li> it could help us hire engineers with similar ideas<\/li>\n<li> we could learn about existing solutions. We bet bigger companies have already taken serious shots (or solved) at a bunch of these problems<\/li>\n<li> we have already established a culture of R&#038;D (look at this blog!) and directly benefited from it<\/li>\n<li> we are in a decent position financially and can take this risk<\/li>\n<\/ol>\n<hr>\n<h3>Strategy<\/h3>\n<p>It is hard to come up with strategy when so much of what we are trying to do is new to us. Currently, we have identified two approaches:<\/p>\n<ol>\n<li type=\"a\"><strong>Figure out where we can help.<\/strong> There are many skills somewhat tangential to the primary development skills in each of these emerging areas. For example, scraping, cleaning and maintaining data could be a valuable tangential skill to people working on Machine Learning algorithms. This could be a good entry point for the motivated tester.<\/li>\n<li type=\"a\"><strong>Look beyond the engineering solution.<\/strong> To be useful as a tester in emerging areas, we think the following thought experiment will help.\n<ol>\n<li>Spot a technical problem<\/li>\n<li>Assume the problem is going to be solved by someone else<\/li>\n<li>Imagine how we will test the solution<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Obviously, just doing this much will not be enough &#8230; BUT we think this will give us a good starting point. <\/p>\n<p><strong>Note:<\/strong> We needed to make organizational changes to support this kind of work. We&#8217;ll follow up with posts about how we are experimenting with our hiring, on-boarding,  training and team structures.<\/p>\n<hr>\n<h3>R&#038;D has already helped us<\/h3>\n<p>We have had at least one person dedicated to R&#038;D since mid-2014. R&#038;D has worked well for us. It has helped us:<\/p>\n<ol>\n<li type=\"a\"> land new clients<\/li>\n<li type=\"a\"> look smart and prepared when we go to a new client<\/li>\n<li type=\"a\"> allowed us to train new hires quickly<\/li>\n<li type=\"a\"> helped retain technically inclined testers who do not get similar opportunities elsewhere<\/li>\n<li type=\"a\"> expand our skill set beyond that of a typical tester<\/li>\n<li type=\"a\"> gain confidence that we can solve problems and pick up new things quickly<\/li>\n<\/ol>\n<hr>\n<h3>What we have learned so far<\/h3>\n<figure id=\"attachment_7863\" aria-describedby=\"caption-attachment-7863\" style=\"width: 214px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/learning_so_much-214x300.jpg\" alt=\"\" width=\"214\" height=\"300\" class=\"size-medium wp-image-7863\" srcset=\"https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/learning_so_much-214x300.jpg 214w, https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/learning_so_much-768x1077.jpg 768w, https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/learning_so_much-730x1024.jpg 730w, https:\/\/qxf2.com\/blog\/wp-content\/uploads\/2017\/12\/learning_so_much.jpg 1628w\" sizes=\"auto, (max-width: 214px) 100vw, 214px\" \/><figcaption id=\"caption-attachment-7863\" class=\"wp-caption-text\">This cartoon is more autobiographical that you suspect<\/figcaption><\/figure>\n<p>Over the years, we have learned a few things (mostly via trial and error) about running an R&#038;D unit within a services company:<\/p>\n<ol>\n<li><strong>Prioritize interesting over useful:<\/strong> We seem to get a lot more ideas by doing something that interests us rather than have a concrete goal. We stumbled upon a nice talk called <a href=\"https:\/\/www.youtube.com\/watch?v=tZBViI8ZaU0\" data-rel=\"lightbox-video-0\">Discovery without objectives<\/a> that reinforced this belief in us. If you disagree with this point, we encourage you to watch the video and think about the arguments made in it.<\/li>\n<p>&nbsp;<\/p>\n<li><strong>Have roadmaps:<\/strong> Don&#8217;t bother being accurate or concrete (see examples in our next posts) and do not hold people accountable to achieving all items on the roadmap. Instead, use the roadmap just to get your colleagues started. Once people get started, they generate their own ideas and next steps.<\/li>\n<p>&nbsp; <\/p>\n<li><strong>Split work into small pieces:<\/strong> Make an attempt to break work into really small chunks. Ideally, each chunk of work should be done within one week.  When a new hire is introduced to the concept of R&#038;D, no matter how smart, productive and independent they are, they want to be able to show visible progress. They want to know what they are doing is useful in the short term. Giving them small victories is key to building their momentum.<\/li>\n<p>&nbsp;<\/p>\n<li><strong>Share the work:<\/strong> Making people share their work (e.g.: write blog posts, use public GitHub repos) forces them to articulate their work better. The shared output will serve as good reference material for your training program. Sharing work openly also results in Internet strangers wanting to collaborate and help you. Your employees feel good when strangers around the world benefit from their work and recognize them for it. <\/li>\n<p>&nbsp;<\/p>\n<li><strong>Take time to come up with good examples:<\/strong> We imposed this constraint to get over the habit of people doing things only at the surface level. We wanted to avoid producing tutorials and examples that end up being too simple to be useful. Coming up with a detailed (and interesting) example that helps the learner feel like they have made substantial progress is key. We make our employees come up with examples related to their hobbies. For example, if our colleague <a href=\"https:\/\/qxf2.com\/employees\/shiva\">Shiva<\/a> (an <a href=\"https:\/\/www.arsenal.com\/\">Arsenal<\/a> fan) works on data scraping, he would pick an example of scraping data from the <a href=\"https:\/\/www.premierleague.com\/\">English Premier League<\/a>.<\/li>\n<p>&nbsp;<\/p>\n<li><strong>Tolerate failure:<\/strong> Be patient. Let your employees know it is ok to fail on R&#038;D. Most work that is produced will likely generate plenty of dead ends. No single person will have all the answers. People will get frustrated when they get blocked. We need to manage that and intervene and reinforce the belief that failing on R&#038;D is natural.<\/li>\n<p>&nbsp;<\/p>\n<li><strong>It is difficult to onboard people:<\/strong> While our R&#038;D sounds cool, our experience is that most employees struggle to adapt to the idea of doing something open ended. It takes an experienced person about 6-8 months(!) before they feel comfortable with R&#038;D.  It probably takes longer before they realize its value to the company and to their own resume! So provide a support system for new employees.<\/li>\n<hr>\n<h3>Further reading<\/h3>\n<p>Interested in what we are up to? Take a look at some R&#038;D roadmaps we have created:<\/p>\n<ol>\n<li type=\"a\"><a href=\"https:\/\/qxf2.com\/blog\/qxf2s-devops-roadmap\/\">Qxf2&#8217;s DevOps roadmap<\/a><\/li>\n<li type=\"a\"><a href=\"https:\/\/qxf2.com\/blog\/qxf2s-hardware-and-robotics-roadmap\/\">Qxf2&#8217;s Hardware and Robotics roadmap<\/a><\/li>\n<li type=\"a\"><a href=\"https:\/\/qxf2.com\/blog\/qxf2s-data-analytics-machine-learning-ai-roadmap\">Qxf2&#8217;s Data analytics, Machine Learning and AI roadmap<\/a><\/li>\n<\/ol>\n<p>While we have split our R&#038;D efforts into three logical pieces, we would like to stress that we understand that they are all inter-related. The testing we do will combine all these fields. We have chosen this split up just make it easier on the engineer. But when we work on a real world problem, we ignore these artificial lines and do whatever good testing demands.<\/p>\n<hr>\n<h3>Related posts<\/h3>\n<ol>\n<li><a href=\"https:\/\/qxf2.com\/blog\/where-is-qxf2-headed\/\">Where is Qxf2 headed?<\/a><\/li>\n<li><a href=\"https:\/\/qxf2.com\/blog\/the-need-for-change-at-qxf2\">The need for change (at Qxf2)<\/a><\/li>\n<li><a href=\"https:\/\/qxf2.com\/blog\/an-introduction-to-rd-at-qxf2\/\">An introduction to R&#038;D at Qxf2<\/a><\/li>\n<ol>\n<li type=\"a\"><a href=\"https:\/\/qxf2.com\/blog\/qxf2s-devops-roadmap\/\">Qxf2&#8217;s DevOps roadmap<\/a><\/li>\n<li type=\"a\"><a href=\"https:\/\/qxf2.com\/blog\/qxf2s-hardware-and-robotics-roadmap\/\">Qxf2&#8217;s Hardware and Robotics roadmap<\/a><\/li>\n<li type=\"a\"><a href=\"https:\/\/qxf2.com\/blog\/qxf2s-data-analytics-machine-learning-ai-roadmap\">Qxf2&#8217;s Data analytics, Machine Learning and AI roadmap<\/a><\/li>\n<\/ol>\n<li><a href=\"https:\/\/qxf2.com\/blog\/introduction-training-qxf2\/\">An introduction to training at Qxf2<\/a><\/li>\n<li><a href=\"https:\/\/qxf2.com\/blog\/introduction-hiring-onboarding-qxf2\">An introduction to hiring and onboarding at Qxf2<\/a><\/li>\n<li><a href=\"https:\/\/qxf2.com\/blog\/experimenting-with-team-structures-at-qxf2\">Experimenting with team structures at Qxf2<\/a><\/li>\n<\/ol>\n<hr>\n","protected":false},"excerpt":{"rendered":"<p>As a techie, you cannot escape the buzz around IoT, elastic cloud computing, data analytics, machine learning, AI and the like. Most of the deep testing we would like to do in these areas lack easily accessible knowledge sources and definitely lack good tooling. We are sure that larger companies have faced many of these challenges and have arrived at [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"class_list":["post-7856","post","type-post","status-publish","format-standard","hentry","category-thoughts-on-testing"],"_links":{"self":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts\/7856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/comments?post=7856"}],"version-history":[{"count":12,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts\/7856\/revisions"}],"predecessor-version":[{"id":15831,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts\/7856\/revisions\/15831"}],"wp:attachment":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/media?parent=7856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/categories?post=7856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/tags?post=7856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}