{"id":5403,"date":"2007-10-23T16:58:00","date_gmt":"2007-10-23T16:58:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2007\/10\/23\/hello-world-quick-advice-on-design-specifications\/"},"modified":"2019-02-18T18:54:19","modified_gmt":"2019-02-18T18:54:19","slug":"hello-world-quick-advice-on-design-specifications","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/hello-world-quick-advice-on-design-specifications\/","title":{"rendered":"Hello World?  Quick Advice On Design Specifications"},"content":{"rendered":"<p class=\"MsoNormal\"><font size=\"3\"><font face=\"Calibri\"><span>Alvin Chardon, VC++ IDE QA member here.<span>&nbsp; <\/span><\/span>In thinking about ways of introducing the Visual C++ culture to our customers, I&rsquo;ve decided to share a story.<span>&nbsp; <\/span>Around 6 months ago, the Visual C++ IDE QA Team hired its newest SDET.<span>&nbsp; <\/span>I was excited to hear my lead wanted me to be his mentor.<span>&nbsp; <\/span>Having worked on the Visual C++ Team for the past 5 years has taught me that all successful projects have a well thought out plan and consistent design specification behind them.<span>&nbsp; <\/span>Thus, I decided to approach mentoring as I would any other project: <span>&nbsp;<\/span>by gathering the requirements and writing a specification &ndash; which in this case was just a training plan.<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">After meeting with our new SDET and getting a good grasp of what skills he needed to learn before he could execute effectively in the IDE QA team, I decided to assign him a little project.<span>&nbsp; <\/span>Something unrelated to our testing methodologies and technologies, but that succeeded in exposing him to C++\/CLI and the IDE technologies that he will be testing.<span>&nbsp; <\/span>Knowing that specifications are important, I sent him a little document that specifies the assignment requirements, its purpose and what I expected the outcome to be.<span>&nbsp; <\/span>To summarize, I asked him to write a <i>HelloWorld<\/i> application (how original), that outputs &ldquo;Hello World&rdquo; in three different languages.<span>&nbsp; <\/span>The application was to be written in C++\/CLI and to be localized using .NET&rsquo;s paradigm for managed resources and satellite assemblies.<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">About a day later, I received email from our new hire telling me he had completed the project.<span>&nbsp; <\/span>I asked him to share it with me, but instead he insisted I come to his office.<span>&nbsp; <\/span>&ldquo;All right, I will meet you there&rdquo;, I said.<span>&nbsp; <\/span>When I arrived at his office, I was greeted with a pair of head phones and a conversation about the computer&rsquo;s sound card, which to tell the truth I didn&rsquo;t understand why it was important at the time.<span>&nbsp; <\/span>So I figure, something must be wrong with the sound card and our new SDET is only looking for some help diagnosing it.<span>&nbsp; <\/span>I put on the head phones, our new SDET presses CTRL + F5 and his program salutes me by saying out loud <i>Hello World, Hola Mundo <\/i>and <i>Bonjour Monde!<\/i><span>&nbsp; <\/span>&ldquo;You made it talk&rdquo;, I said.<span>&nbsp; <\/span>&ldquo;Why&rdquo;, I asked.<span>&nbsp; <\/span>He responded: &ldquo;Because you told me to.&rdquo;<span>&nbsp; <\/span>Going back to my office and re-reading the specification I note:<\/font><\/p>\n<p class=\"MsoNormal\"><i><font size=\"3\"><font face=\"Calibri\">Create a HelloWorld application, console or windows, using Visual C++ and the .NET platform <b>to say<\/b> hello world in three different languages.<\/p>\n<p><\/font><\/font><\/i><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">&ldquo;&hellip;to say hello world&hellip;&rdquo; &ndash; tells you something about English not being my first language.<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">Lessons learned:<\/font><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><span><span><font face=\"Calibri\" size=\"3\">1.<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font face=\"Calibri\" size=\"3\">You can&rsquo;t &ldquo;predict&rdquo; what the Visual C++ team will come up with next!<\/font><\/p>\n<p class=\"MsoListParagraphCxSpLast\"><span><span><font face=\"Calibri\" size=\"3\">2.<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font face=\"Calibri\" size=\"3\">Design specifications need be <b>clear<\/b>, <b>concise<\/b> and <b>specific<\/b> &ndash; leave no room for interpretation.<\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"3\"><font face=\"Calibri\"><span>Till next time.<\/span><span><\/p>\n<p><\/span><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><span><font face=\"Calibri\" size=\"3\">Alvin<\/font><\/span><span><\/p>\n<p><\/span><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alvin Chardon, VC++ IDE QA member here.&nbsp; In thinking about ways of introducing the Visual C++ culture to our customers, I&rsquo;ve decided to share a story.&nbsp; Around 6 months ago, the Visual C++ IDE QA Team hired its newest SDET.&nbsp; I was excited to hear my lead wanted me to be his mentor.&nbsp; Having worked [&hellip;]<\/p>\n","protected":false},"author":289,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5403","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus"],"acf":[],"blog_post_summary":"<p>Alvin Chardon, VC++ IDE QA member here.&nbsp; In thinking about ways of introducing the Visual C++ culture to our customers, I&rsquo;ve decided to share a story.&nbsp; Around 6 months ago, the Visual C++ IDE QA Team hired its newest SDET.&nbsp; I was excited to hear my lead wanted me to be his mentor.&nbsp; Having worked [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/5403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/289"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=5403"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/5403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=5403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=5403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=5403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}