<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Application Development Tools &#187; training</title>
	<atom:link href="http://www.selectbs.com/adtblog/index.php/tag/training/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.selectbs.com/adtblog</link>
	<description>Process Improvement, Business &#38; Systems Modeling</description>
	<lastBuildDate>Mon, 05 Jul 2010 09:22:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Training Software Engineers &#8211; Part 4 &#8211; Project-led Teaching</title>
		<link>http://www.selectbs.com/adtblog/index.php/2010/07/training-software-engineers-experiential-teaching/</link>
		<comments>http://www.selectbs.com/adtblog/index.php/2010/07/training-software-engineers-experiential-teaching/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 09:22:50 +0000</pubDate>
		<dc:creator>Phil Webb</dc:creator>
				<category><![CDATA[System modeling]]></category>
		<category><![CDATA[BPMN]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[SSADM]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.selectbs.com/adtblog/?p=62</guid>
		<description><![CDATA[In the final part of this series of posts on Training Software Engineers, having spent time talking about academic curricula and the subjects taught, I want to think about the methods used in educating software engineers and computer scientists. It&#8217;s a fairly simple premise: we need to be trained less on tasks which we carry [...]]]></description>
			<content:encoded><![CDATA[<p>In the final part of this series of posts on <a href="http://www.selectbs.com/adtblog/index.php/tag/training/">Training Software Engineers</a>, having spent time talking about academic curricula and the subjects taught, I want to think about the methods used in educating software engineers and computer scientists. It&#8217;s a fairly simple premise: we need to be trained less on tasks which we carry out frequently.</p>
<p><span id="more-62"></span>Those familiar with military aviation training methods and simulators will be aware of a fact which came to my attention just last week. During a meeting with a major UK supplier of military and civilian hardware and software, their representative reminded me that military pilots, once qualified, are most regularly trained in the tasks which they least regularly carry out.</p>
<p>While a pilot will be operating the undercarriage and trimming elevators or the rudder in every flight, he will hopefully never need to eject from the cockpit. However, should he ever need to, he absolutely must know how to go about it, the procedures that need to be carried out and the controls used to ensure his safe ejection from the cockpit and deployment of his parachute. To ensure that this is the case, he will regularly undergo cockpit ejection training in a simulator environment, but will rarely use a simulator to practise trimming procedures.</p>
<p>Whatever role we find ourselves in, most of us quickly internalize those activities which we regularly carry out. How does this relate to training software engineers?</p>
<p>During the last few years I&#8217;ve been disappointed to learn of the number of educational establishments which will teach many of the topics we&#8217;ve discussed <em>only</em> through a lecture format. Whilst I appreciate that projects are time-consuming to plan and run, my experience tells me that a student who is encouraged to use the techniques they learn in the context of a team project, will not only gain a better understanding of how a project is run and the project management techniques they&#8217;ve learned, but also will be more likely remember the likes of <a href="http://www.selectbs.com/adt/analysis-and-design/unified-modeling-language-uml">UML</a> and <a href="http://www.selectbs.com/adt/analysis-and-design/select-ssadm">SSADM</a>.</p>
<p>Application of taught skills is, in my view, essential to the full learning and further development of those skills, and also gives the opportunity for students to experience them in something closer to a real world environment, rather than just in the sterility of the lecture hall.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selectbs.com/adtblog/index.php/2010/07/training-software-engineers-experiential-teaching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Training Software Engineers &#8211; Part 3 &#8211; Aspect-Oriented Teaching</title>
		<link>http://www.selectbs.com/adtblog/index.php/2010/06/training-software-engineers-aspect-oriented-teachin/</link>
		<comments>http://www.selectbs.com/adtblog/index.php/2010/06/training-software-engineers-aspect-oriented-teachin/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 04:12:31 +0000</pubDate>
		<dc:creator>Phil Webb</dc:creator>
				<category><![CDATA[Business modeling]]></category>
		<category><![CDATA[Process Maturity]]></category>
		<category><![CDATA[System modeling]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://www.selectbs.com/adtblog/?p=59</guid>
		<description><![CDATA[While recently pulling together over 130 hours of video-based training material for software engineers and project managers I was reminded of how regularly a number of key aspects kept cropping up, even as we looked at very different software engineering practices and ideas, like SSADM, UML, BPMN, test driven development, risk management and so on.  [...]]]></description>
			<content:encoded><![CDATA[<p>While recently pulling together over 130 hours of <a href="http://www.selectbs.com/adt/solutions-general/video-based-training">video-based training material for software engineers and project managers</a> I was reminded of how regularly a number of key aspects kept cropping up, even as we looked at very different <a href="http://www.selectbs.com/adt/analysis-and-design/analysis-and-design">software engineering practices and ideas</a>, like SSADM, UML, BPMN, test driven development, risk management and so on.  In an ideal teaching environment I would love to see these concepts form the backbone of the curriculum, so that a student is effectively able to navigate the course content through following the concepts, while at the same time covering a wide range of topics.</p>
<p>Let&#8217;s call this &#8216;aspect-oriented teaching&#8217; and consider how it might work&#8230;</p>
<p><span id="more-59"></span>In my first post of this series a few weeks back I mentioned the relevance of using conventional techniques such as <a href="http://www.selectbs.com/adtblog/index.php/2010/05/training-software-engineers-ssadm/">SSADM to illustrate the concepts of abstraction and iteration</a>. These are ideal illustrations of what I term <em>software engineering aspects</em>. Although these should not to be confused with the specific discipline of <a href="http://www.developer.com/lang/article.php/3308941/Aspect-Oriented-Programming.htm"><em>aspect-oriented programming (AOP)</em></a>, they are a concept not dissimilar to the <em>crosscutting concerns</em> of AOP.</p>
<p>The usual example of a crosscutting concern is <em>logging</em> &#8211; a technique often used to help trace method calls, particularly in distributed systems which may not be easily debugged. Entry and exit points to methods will often be logged with some textual information stored to some file or other storage mechanism. The difficulty is that in most programming languages in order to acheive this the engineer is forced to add appropriate logging method calls in each and every method of the system.</p>
<p>The idea of AOP is that these crosscutting concerns are transformed into single units called aspects which are implemented separately from the rest of the project, then combined into the final executable form using an aspect weaver. This enables a single, self-contained aspect to contribute to the implementation of many methods and classes without the original code having any knowledge of the aspect or its functionality.</p>
<p>So, dragging us back to the point of this post, I consider software engineering aspects to be a means of identifying common concepts across a range of SE disciplines, thereby allowing those disciplines to be better integrated in the curriculum. This means that in addition to the publication of a series of modules on the basics of programming, data structures, object-oriented analysis and design, UML, SSADM, architectures, project management, software testing and so on, one might consider publishing a matrix which shows how aspects such as abstraction and iteration apply to these topics.</p>
<p>An even braver approach might even re-arrange course content so that each semester was aspect-themed, with traditional modules run over a longer period of time in order to allow the student to be led through an exploration of an aspect in different disciplines. The semester is then effectively &#8216;framed&#8217; by the aspect, providing a common meeting place for the varied topics, and a means of communicating to students the importance and relevance of identifying commonalities in a range of subjects. This exercise in itself might also help students in their own quest to generalise concepts in the systems they create.</p>
<p>I&#8217;m sure that this poses a number of questions to those involved in the day-to-day education of software engineers.</p>
<ul>
<li>Are examinations aspect-oriented or topic-oriented?</li>
<li>If a topic is being spread over a longer period to allow all relevant aspect-related subjects to be covered, how can the topic be efficiently assessed?</li>
</ul>
<p>Fair enough &#8211; post them and let&#8217;s discuss.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selectbs.com/adtblog/index.php/2010/06/training-software-engineers-aspect-oriented-teachin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Training Software Engineers &#8211; Part 2 &#8211; The Importance of a Balanced Viewpoint</title>
		<link>http://www.selectbs.com/adtblog/index.php/2010/06/training-software-engineers-balanced-viewpoint/</link>
		<comments>http://www.selectbs.com/adtblog/index.php/2010/06/training-software-engineers-balanced-viewpoint/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 08:00:28 +0000</pubDate>
		<dc:creator>Phil Webb</dc:creator>
				<category><![CDATA[System modeling]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://www.selectbs.com/adtblog/?p=57</guid>
		<description><![CDATA[In this second post on how we go about training software engineers, I&#8217;ll be considering the point raised by a non-geek friend of mine once. &#8220;You computer guys seem to get so protective of the tools you use!&#8221; he exclaimed before going on to claim that the French car he drove was so much better [...]]]></description>
			<content:encoded><![CDATA[<p>In this second post on how we go about training software engineers, I&#8217;ll be considering the point raised by a non-geek friend of mine once. &#8220;You computer guys seem to get so protective of the tools you use!&#8221; he exclaimed before going on to claim that the French car he drove was so much better than my solid VW! Taking a solid stance on technology use seems to be the norm now for technologists. We choose our platform, tools and so on, and will fight almost to the death to protect our use of them and will evangelise endlessly to any who&#8217;ll listen &#8211; and many who won&#8217;t &#8211; about why they&#8217;re so much better than those others may use.</p>
<p>Is this really an attitude we should be passing on to future generations of computer scientists?</p>
<p><span id="more-57"></span>At the risk of sounding like a grumpy old man (before my time I hasten to add!), my belief is that we&#8217;re better off <a href="http://www.selectbs.com/adt/solutions-general/academic-software-licensing">training software engineers</a> than creating Java programmers (or .Net programmers for that matter). It&#8217;s a belief which I appreciate is grounded in my own educational and commercial experiences, but a set of generic engineering techniques is a far more valuable resource for developing a worthwhile career in IT. They enable the recipient to more quickly grasp a wider range of concepts, without having to carry out additional mappings from a particular language they&#8217;ve been taught.</p>
<p>I know that students will always want to know when they can build an application, and that is an important aspect of any degree course, particularly if it can be carried out in the context of some group engineering exercise. But if we bow to the pressure to teach just programming, or worse still just the development of glitzy websites, we run the risk of losing a generation or two&#8217;s worth of computer <em>science</em>. Perhaps students need to be persuaded a little more of the value of understanding the historical context of the topics they&#8217;re studying, and spend a little less time hacking something together.</p>
<p>I fear that technology imbalance is a problem which is also exacerbated by the activities of recruitment agencies. I guess it&#8217;s partly down to the way in which the IT job market is now driven, but many of the agencies I&#8217;ve worked with seem to place far too much emphasis on keyword searches for &#8216;<a href="http://www.selectbs.com/adt/analysis-and-design/code-synchronizers">Java</a>&#8216;, &#8216;<a href="http://www.selectbs.com/adt/analysis-and-design/solution-factory-for-net">C#</a>&#8216;, &#8216;<a href="http://www.selectbs.com/adt/analysis-and-design/code-synchronizers">C++</a>&#8216; and so on. I suppose when the market is so busy, as it seems to be now, and when face-to-face meetings are reserved for the select few, there&#8217;s no time for them to assess the wider merits of an applicant. I find it&#8217;s often the experiences described in a CV&#8217;s prosaic paragraphs which better communicate the real skills of an individual rather than some claim to have 5 years experience of SQL Server. Perhaps this points to a need to do more direct recruitment&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selectbs.com/adtblog/index.php/2010/06/training-software-engineers-balanced-viewpoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Training Software Engineers &#8211; Part 1 &#8211; Conventional Techniques</title>
		<link>http://www.selectbs.com/adtblog/index.php/2010/05/training-software-engineers-ssadm/</link>
		<comments>http://www.selectbs.com/adtblog/index.php/2010/05/training-software-engineers-ssadm/#comments</comments>
		<pubDate>Mon, 24 May 2010 09:19:14 +0000</pubDate>
		<dc:creator>Phil Webb</dc:creator>
				<category><![CDATA[System modeling]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[SSADM]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://www.selectbs.com/adtblog/?p=39</guid>
		<description><![CDATA[I&#8217;ve been involved in some significant training programmes over recent months and have come to realise a few things about the way we seem to teach our craft. These experiences are drawn from close to 200 hours of training I&#8217;ve delivered, developed or co-presented in the last year, which have ranged in content from &#8216;traditional&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been involved in some significant training programmes over recent months and have come to realise a few things about the way we seem to teach our craft. These experiences are drawn from close to 200 hours of training I&#8217;ve delivered, developed or co-presented in the last year, which have ranged in content from &#8216;traditional&#8217; techniques such as SSADM through to &#8216;contemporary&#8217; agile and test-driven development. In this first post in the series, I&#8217;ll consider the relevance of the more mature approaches to software engineering to those currently learning the profession.</p>
<p><span id="more-39"></span></p>
<p>It&#8217;s clear to me that the use of the <a href="http://www.selectbs.com/adt/analysis-and-design/select-ssadm">Structured Systems Analysis and Design Method (SSADM)</a> is still an important part of the software engineering educational curriculum in many countries. I discussed this briefly in a recent debate with the author of one of the leading textbooks on software engineering, which in the latest editions has dropped its chapters on such &#8216;traditional&#8217; techniques. While it&#8217;s true that much of the commercial software world has moved onto &#8216;contemporary&#8217; techniques, I believe there is still some educational value to be gained from understanding SSADM.</p>
<p>The key point is that many of the contemporary techniques are simply that: <em>techniques</em>. Many of the standards from the Object Management Group do not advocate a particular <em>method</em> of invoking techniques such as the <a href="http://www.selectbs.com/adt/analysis-and-design/what-is-the-unified-modeling-language-uml">Unified Modeling Language (UML)</a>, although of course a number of methodologies such as RUP and <a href="http://www.selectbs.com/adt/process-improvement/select-perspective">Select Perspective</a> incorporate UML techniques in their delivery. Therefore students may be taught how to model a system using use cases, classes, state models and components, but the <em>context </em>for that modeling activity is often less clearly communicated to them. The application of SSADM in an educational environment can really help students to understand the value of the common concepts behind all these techniques.</p>
<p>In particular, the concepts of abstraction and iteration can be very effectively taught using <a href="http://www.selectbs.com/adt/analysis-and-design/select-ssadm">SSADM tools</a>. The several levels of <a href="http://www.selectbs.com/adt/analysis-and-design/select-ssadm">dataflow diagram</a> advocated by both SSADM and <a href="http://www.selectbs.com/adt/analysis-and-design/select-yourdon">Yourdon</a> approaches are an ideal way to communicate to students how a high-level abstract view, which is simple and quick to understand, can be of real value to those trying to comprehend a complex system. Of course this high-level view is then iteratively <em>decomposed</em> (the reverse of abstraction) gradually increasing the level of detail of each process, until sufficient information is identified about the system.</p>
<p>Of course, the all-to-familiar occurrence of technology favouritism plays a part in how software engineering is taught. In my next post, I&#8217;ll consider the pitfalls of allowing personal preference to influence curriculum content too greatly, and the importance of providing a balanced viewpoint.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selectbs.com/adtblog/index.php/2010/05/training-software-engineers-ssadm/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

