<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3816289112781988625</id><updated>2024-10-04T20:42:07.887-07:00</updated><category term="software development"/><category term="simulation"/><category term="benefits"/><category term="design"/><category term="international"/><category term="software"/><category term="gaming"/><category term="job"/><category term="langauge"/><category term="leadership"/><category term="perspective"/><category term="replay"/><category term="team"/><title type='text'>SimulX</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-5649645023248805930</id><published>2012-04-04T14:23:00.000-07:00</published><updated>2012-04-05T09:32:31.685-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="international"/><category scheme="http://www.blogger.com/atom/ns#" term="leadership"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><category scheme="http://www.blogger.com/atom/ns#" term="team"/><title type='text'>A remote possiblity</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH6sek8NzKMR0IaHaTGs6UnnmNiPfJjd2DLK9kZtJACp2HOiJMWLtgo5npmMytJyeTXZB8lkNoCD0rZfaCLtxMfeYuDKYskUzqaaCwRUcIMx08l7Gisg9KVdtFgXDo3h-8VuhheR97Vsbp/s1600/remote01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH6sek8NzKMR0IaHaTGs6UnnmNiPfJjd2DLK9kZtJACp2HOiJMWLtgo5npmMytJyeTXZB8lkNoCD0rZfaCLtxMfeYuDKYskUzqaaCwRUcIMx08l7Gisg9KVdtFgXDo3h-8VuhheR97Vsbp/s200/remote01.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Being a team lead is never the easiest job in the world, you are generally expected to function as a mentor, job assigner, task tracker and resident expert, all while doing your normal, day-to-day coding. But what if you had to do all that remotely? What if your team was located in an entirely different time-zone to you? Is it possible? Could it even be optimal?&lt;br /&gt;
&lt;br /&gt;
Lots of people have &lt;a href=&quot;http://www.codinghorror.com/blog/2010/05/on-working-remotely.html&quot;&gt;talked about&lt;/a&gt; the concept of a remote team, but the one thing they tend to have in common is that the rest of the team is just as remote as they are, meaning that although the team lead may be in a different time zone from everyone, so are the rest of the developers.&lt;br /&gt;
&lt;br /&gt;
Recently, I&#39;ve been thinking about what it means to lead a software development team and what is expected of you in that position and I came up with a few key ideas -&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Communication - Allows for a qualitative overview of the team and their performance&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Making sure that you know what your team is doing and how it fits in with other teams&lt;/li&gt;
&lt;li&gt;Getting your team members talking among themselves and with others&lt;/li&gt;
&lt;li&gt;Ensuring that your team is clearly expressing themselves in code and in any task tracking systems&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Metrics - Allows for a quantitative overview of the team and their performance
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Recording task completion data (estimated vs actual time etc)&lt;/li&gt;
&lt;li&gt;Measuring staff vitals (tasks completed, hours worked, focus areas etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Standards - Reduces the amount of non-critical traffic and assists the previous two functions&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Forming a standard set of coding best practices and process flows that everyone can refer to
&lt;/li&gt;
&lt;li&gt;Developing induction packages for new employees&lt;/li&gt;
&lt;li&gt;Using a standardised tool set (communication, development etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;
All of these requirements can certainly be put into effect from a remote position, but I would argue that a remote position gives you a distinct advantage - particularly if your development team itself is co-located.&lt;/div&gt;
&lt;div&gt;
Think about it, if you are in a different time zone then you probably have a limited amount of face time with your team, meaning that part of your day is solely focused on communicating with and tasking each member of the team. No putting it off until after lunch or handling it once you&#39;ve finished this important thing.&amp;nbsp;Communication happens right now.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOJgdO77DrRTF1FMPIaebf56YdrP3efbU8fTKCa1W_mgakKzmZCtSeTVkV9WExkEF3fhawmw-MjILBLdWDRN82T1HF816zYLTvjijRWCymtU0b1jaH_vlGde1Fb5lzwB52NtDXvVKeU_87/s1600/options.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOJgdO77DrRTF1FMPIaebf56YdrP3efbU8fTKCa1W_mgakKzmZCtSeTVkV9WExkEF3fhawmw-MjILBLdWDRN82T1HF816zYLTvjijRWCymtU0b1jaH_vlGde1Fb5lzwB52NtDXvVKeU_87/s320/options.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Then of course, the other part of your day is devoted to development work, reviewing the team performance and improving standards and tools, all completely free of questions posed to you by your team. While you are doing this, your team can fall back on themselves to answer the easier questions and formulate the tougher ones more succinctly to you when you come back online.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Of course, there are disadvantages to not being co-located with your team. If a decision needs to be made, then you may not be available to make it, meaning either a 3am wake up call or someone else needs to take&amp;nbsp;responsibility. That&#39;s not necessarily a total disadvantage, as long as there is someone you can trust and you back the decision, you end up empowering your team members and giving them a sense of ownership.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Another disadvantage is that it is much harder to build team spirit remotely, no more Friday after-work beers or regular catch-up dinners, but do these really happen that often as a team event? More likely they are mixed in with other teams, and while that&#39;s not necessarily a bad thing, it&#39;s not exactly a team bonding event. Even in this case, it can be turned to the advantage, so that when you do meet up (hopefully a few times a year), it is a big event - one solely dedicated to the team.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There are probably a number of other factors I am overlooking here, and I&#39;m not saying that leading a team remotely is necessarily the better option, but I am saying that it is not necessarily unsustainable or impossible. Many teams do it even when none of the team are co-located and it is definitely an option to consider if it comes down to losing talent otherwise.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/5649645023248805930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2012/04/remote-possiblity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/5649645023248805930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/5649645023248805930'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2012/04/remote-possiblity.html' title='A remote possiblity'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH6sek8NzKMR0IaHaTGs6UnnmNiPfJjd2DLK9kZtJACp2HOiJMWLtgo5npmMytJyeTXZB8lkNoCD0rZfaCLtxMfeYuDKYskUzqaaCwRUcIMx08l7Gisg9KVdtFgXDo3h-8VuhheR97Vsbp/s72-c/remote01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-3819495073366260848</id><published>2012-02-20T10:40:00.000-08:00</published><updated>2012-02-20T10:40:40.506-08:00</updated><title type='text'>Designing for Developers</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
There is a small problem I have noticed more and more lately - that is that there seems to be a number of designers who design a piece of technology with developers in mind. In itself, this isn&#39;t necessarily a bad thing, I mean, at least if you are designing your work for a developer then things must be more efficient, right? Well, yes and no.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Before the rage begins, keep in mind that I could equally have called this post developing for designers. The knife cuts both ways. A feedback loop of sorts develops, whereby developers start to push designers in a certain direction by only meeting the parts of the design that suit them and designers react to this by only designing things that they think the developers can get done.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The problem with this method of thinking is that it stifles creativity in an industry that runs on creativity. By designing for development and vice versa, you end up with a boring, over-simplified product that no-one is particularly happy with. Designers need to feel liberated to think outside of the box, and developers need to feel challenged to create amazing systems.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This kind of circle is actually even worse in my case, where a lot of the time I am the&amp;nbsp;designer&amp;nbsp;and the&amp;nbsp;developer&amp;nbsp;of a particular system or mechanic. I know the limitations as a developer and so I reduce the complexity of design. So how do I go about breaking this cycle of mediocrity?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well I&#39;m not going to tell you to aim for the stars, as great as that sounds we are all under time, budget or some other pressure to actually get something done. One of the best methods I&#39;ve found for breaking this loop is being able to rapidly prototype an idea. Luckily, I work in an environment that generally allows for (indeed some would even say designed for) rapid prototyping of ideas into a playable concept, but what exactly does it mean to rapidly prototype something? I find this a particularly interesting issue among new people to the company, while they may be very skilled in a particular area, they are generally not very skilled in using our product. Oddly enough, this almost always leads them to trying to create a full working implementation based on the spec provided. It&#39;s not until they have been working with the company for quite some time before they realise that it&#39;s actually possible to simply knock something together to prove it could basically work. Once you see someone starting to talk in prototypes, not just words or written analyses, you can tell that they are starting to settle down into the product and really find their feet with the technology.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the DICE 2012 &lt;a href=&quot;http://www.gamespot.com/shows/gamespot-live/?event=skyrims_todd_howard_dice_keynote20120208&quot;&gt;keynote speech&lt;/a&gt;, Todd Howard (creative director for Skyrim) gave an excellent example of the kinds of amazing things that can come from rapid prototyping. In his speech, he shows some of technology that came out of a one week free-for-all that they had a Bethesda while creating Skyrim. No doubt that the examples he showed were some of the more successful and polished ones, but even taking that into consideration I was still astounded at the amazing things that were developed &lt;i&gt;in a week&lt;/i&gt;!&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The neat thing about rapid prototyping is that it frees your mind from the nitty gritty details that bog creativity. It allows you to simply see how something works without having to explain it (to yourself or others) so you can move on to bigger and better things. When you are prototyping, you don&#39;t need to worry about the issues that this piece of technology will cause when running in a Windows XP, multi-player game when a unit enters a vehicle, because it doesn&#39;t matter, you are simply experimenting. If designers can rapidly prototype a concept, not only will they get the developers to understand their idea better, but they will also get them thinking of ways it can be implemented. On the flip-side, if developers start to prototype their first-pass tech, they can easily highlight issues for the designer.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
By rapidly prototyping your work you free your mind as well as anyone else involved and allow for bigger and brighter ideas to spread. You end up with cleaner, more polished products because you&#39;ve been able to&amp;nbsp;foresee&amp;nbsp;the issues and you end with a better product at the end of the day because you were able to realise a bigger vision than you would have otherwise.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/3819495073366260848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2012/02/designing-for-developers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/3819495073366260848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/3819495073366260848'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2012/02/designing-for-developers.html' title='Designing for Developers'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-8775900492250719563</id><published>2011-08-25T13:48:00.000-07:00</published><updated>2011-08-25T13:48:21.665-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="benefits"/><category scheme="http://www.blogger.com/atom/ns#" term="international"/><category scheme="http://www.blogger.com/atom/ns#" term="job"/><title type='text'>Moving Internationally</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt; &lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Recently, I was offered a position in our US office. From a career point of view, the position offered was fantastic and was definitely a move up for me, not just a move across, but since I am currently living in Prague with my&amp;nbsp;fiancée, a move to US was always going to be much more than a career decision.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;When I first started looking for information about moving to the US, I found a distinct lack of practical advice about the kinds of things to consider in an international move. The few things I did find were generally highly focused on children, which is fair enough I suppose as moving kids must be quite difficult. However, after a while I managed to find a few useful tips which I&#39;ll try to detail here.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;Compare your salary to other, similar positions&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;It&#39;s obviously good to know that your potential employer is fair in their offer when it comes to your new role. Knowing the value of your position is something that is quite easy to do in your home country because you know the market and generally know where to access this kind of information. When you move internationally for a job, it is often hard to know if your employer is giving you an offer that is better than your current salary, but not particularly great compared to other, similar roles for that country.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;This is much easier in some countries than others due to the accuracy of online tools. When considering moving to the US it was particularly easy as there are some great tools like payscale.com and salary.com that allow you to quickly and easily compare against a reasonable baseline.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Think about the cost of living in the place your moving to&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Ok, this one is pretty obvious and will most likely be the first thing to cross your mind, but it is quite a difficult question to answer, particularly for international moves. When we first moved to Prague we only really considered the basic cost of living, things like how much an apartment is to rent, how much is a standard meal at a restaurant, do I need to buy a car and those kinds of things. We may have even considered more detailed costs like public transport and clothes shopping, but the kinds of things we didn&#39;t consider are the things that I like to call &#39;secondary costs&#39;.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Secondary costs are those costs that don&#39;t come out of you income on a regular or even semi-regular schedule but they certainly will at some point and are almost always the reason you scratch your head and wonder where all your money went at the end of the month. Examples of secondary costs for us in Prague have been things like the price of travelling outside of the Czech Republic (while I may get paid a good salary here, the currency does not convert so well in other countries), or the salary that my partner was likely to make and how easy it would be for her to get a job here as many companies will pay above market rates to attract talent internationally. Another example is currency changes, which will particularly affect you if you have expenses (student loans, home loans etc) in another currency. These are quite hard to factor in, but you should leave a very reasonable margin in your salary to account for them.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;To help with this, there are more and more tools online to get an idea of what your living costs will be. One I found particularly useful is expatistan.com, which has some great information on cities all over the world.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;Get your potential employer to tell you your take home salary&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Most of the time you will be quoted a salary before tax. When you live in a country this makes sense as you probably have a decent understanding of the local tax laws and how you can use them to your advantage, or at the very least you will be able to work out your take home pay. When you are moving internationally however, it can be hard to know exactly what your tax and insurance (health, dental, optical as well as professional liability insurance) costs will be.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;Think about the income you will be losing&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;This is related to tax and the like from the above point, but it&#39;s important to remember that your actual income in a certain country can be partly made up tax breaks and other benefits from owning an investment property or the like. Often, these breaks only apply if you are making a taxable income in the country where the asset is. Another income &#39;loss&#39; could be in the form of added expenses, such as the need to buy a car if you didn&#39;t previously due to good public transport.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;Think about lifestyle&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;It never even crossed my mind when I moved to Prague that there would be a significant lifestyle change. I expected a number of cultural differences from having travelled before, but one of the biggest surprises for me was the concept of eating and drinking out so often. It is a lot cheaper to eat and drink out in Prague than in other places, but it can have an effect on your wallet, not to mention your waistline after a while - all in the name of cultural integration.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Aside from this, many places simply do things differently to what you are used to. Different attitudes from people can make you feel out of place and it can take a long time to get used to. When I first moved to Prague, I thought that people in the service industry (restaurants, shops etc) were ridiculously rude all of the time. I at first thought it was because I couldn&#39;t speak any Czech but over time I came to realise that it is more of a cultural oddity than anything and that I should just deal with it.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;Are you being offered any relocation-specific benefits&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;You might be moving to the next country or half-way around the world, but most companies will foot the bill for you to get there with your luggage. If you have a lot of luggage you either need somewhere to store it while you look for a place (if moving from nearby) or you need to factor in that it could take 2-3 months for it to ship there. Again, most companies will offer some short term&amp;nbsp;accommodation&amp;nbsp;to allow you time to&lt;b&gt;&amp;nbsp;&lt;/b&gt;settle in and look for a suitable place to stay for the long term, you should allow&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;at a minimum&lt;/i&gt;&amp;nbsp;six weeks for this, preferably up to three months or longer in some cities as this can be a tough task, particularly if you need to buy a place.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Other relocation-specific benefits are things like local language courses or financial and legal assistance. Again, you are likely to have to pay for these if your company doesn&#39;t and they could really be included as &#39;secondary costs&#39;.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;You are likely to want to go home occasionally&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;I mentioned before that the cost of international travel is something that you need to include, but on top of that you also should consider that you are likely to go home every year to 18 months. Most of the people I work with are expats and they all complain that they spend all of their holiday and a significant chunk of their salary going home each year or so to see family and friends. If you aren&#39;t moving very far then this isn&#39;t such a big concern, but if you have come a long way then it may be worthwhile getting your employer to include flights home in your before tax pay or at the very least to consider this cost when looking at your salary.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;Is this a permanent move&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;I don&#39;t mean this in the sense of whether it is a contract role or not, I mean more in the sense of whether you, in your head or out loud, are saying that this will be a &#39;forever&#39; type move or a &#39;just a year or two&#39; move. This has a big impact on how you will spend your time there and your attitude towards the permanency of staying in that country will affect your ability to make make a home and find good friends. If it&#39;s going to be a permanent move, then you should keep in mind that many of the friends you will make will likely move on, particularly in countries that don&#39;t speak the same language as you do, as you are more likely to connect with people from your own country. If it&#39;s going to be a temporary move, then you should have an exit strategy to move all of you things back home (or wherever) or at least be prepared to stay for longer than you might have expected while you look for a new job.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;How many other expats are likely to be there&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;This is one that people who are not familiar with travel are probably not going to understand at first. In your head you tell yourself that you will make friends with the locals, after all, why would you want to hang out with people from home? But the truth is that the local probably won&#39;t have a lot to do with you at first, they have built their own lives in the city and you are a newcomer, it will take quite a lot of time for them to get to know you. In general, 6-12 months is quite a short time before you can consider someone a good friend. In the meantime, you can either eat a lot of TV dinners or you can make friends with people who are in the same situation as you - other expats.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;In all, moving to any new job is exciting, but moving to a new country is often even more so - as long as you have done some background research into the company and the country you are moving to. It&#39;s often really hard to gauge what a country is like until you&#39;ve been living there for some time and by then it&#39;s probably too late! You should&amp;nbsp;be prepared for lots of time and research on things that you might not have considered before, such as internet connection, mobile phones, bank services, visas etc. A good company will help you with these things but you will still find yourself confused and frustrated at the system and will need to put a lot of your own time in to understand it better.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif;&quot;&gt;A lot of the advice I have given above is quite generic, but that was my whole point. It is obviously better to ask someone who has been there before, even on holiday, if nothing else as they will at least have a few useful tips (feel free to ask me any questions about Prague or moving in general in the comments), but the reason I wrote this is for all those young professional singles and couples who have been offered a position they aren&#39;t sure whether to take or not. Most of the time, when you are moving internationally, the job is only a small fraction of a much larger equation.&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/8775900492250719563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2011/08/moving-internationally.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/8775900492250719563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/8775900492250719563'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2011/08/moving-internationally.html' title='Moving Internationally'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-6275329654726645409</id><published>2011-07-30T07:19:00.000-07:00</published><updated>2011-07-30T07:34:46.823-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="langauge"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><title type='text'>Speaking the right langauge</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Last weekend I went for a long weekend with my girlfriend&#39;s family in Denmark. This was particularly interesting as there were seven people who went, and between us we were actively speaking four different languages (five if you count the Danish that we spoke to other people in the countryside). My girlfriend and her parents are Swedish (and speak English and Swedish) and her mother&#39;s family come from Poland (Polish, limited English and little Swedish) and my girlfriend and I speak English, Swedish and a little Czech (which we used as a translator as it is quite similar to Polish).&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;In all the weekend was a lot of fun and we generally had not too much trouble communicating, particularly after a beer or two, but some conversations we definitely like the old problem of the farmer with the chicken, fox and corn -&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;A farmer has to get a fox, a chicken, and a sack of corn across a river.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;He has a row boat, and it can only carry him and one other item.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;If the fox and the chicken are left together, the fox will eat the chicken.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;If the chicken and the corn is left together, the chicken will eat the corn.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;How does the man do it?&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; text-align: justify;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjETa8O4zf4mGneU4t9fdvVulsf5tDCPO-rjHW-zLsoJRlQkKoLQvgZf8km3cA11ejsbxBd2U_JJg4k8HUZGul14MP5yrkMkS55BY655L2DnH7FRmJU3e2GXAw0wEEzGKfv14bfnP6vJ8Aq/s1600/chicken_fox_corn.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjETa8O4zf4mGneU4t9fdvVulsf5tDCPO-rjHW-zLsoJRlQkKoLQvgZf8km3cA11ejsbxBd2U_JJg4k8HUZGul14MP5yrkMkS55BY655L2DnH7FRmJU3e2GXAw0wEEzGKfv14bfnP6vJ8Aq/s320/chicken_fox_corn.png&quot; t$=&quot;true&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;In the end, it is not a particularly difficult problem to solve but it does require some lateral thinking and the ability to go back and forth a lot. On the weekend we ended up doing a lot of translating between Polish and Swedish and Swedish and English with a little bit of Czech thrown in for good measure and we spent a lot of time going back and forth over the same conversation so everybody could understand. I am quite sure that a significant portion of what was said was often lost and at times the meaning was completely missed due to translation errors or cultural differences.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;This got me to thinking about&amp;nbsp;programming languages and communication at work. In our company we effectively use four languages for communication of ideas, with two of these used directly to implement features in the game. The four languages are,&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;programmer (c++)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;designer (script)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;tester (logical routines and paths to do things in-game)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;English&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Usually we develop things in our own languages within teams and there is a small amount of cross-language communication which is generally done in English. This works fine in most cases, but in a similar way to the chicken-fox-grain problem or our family weekend, it&amp;nbsp;creates a large overhead in terms of repetition and much of the details involved in complex topics and even the entire point can be completely lost.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;So what can we do about this?&amp;nbsp;There are&amp;nbsp;two obvious options, either create language &#39;translators&#39; who can interpret between different departments, or impose a universal language to be used by all. Realistically, the two options have about the same characteristics as they do with real languages. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;The quick and easy solution is&amp;nbsp;translators as they are simpler to implement assuming you can hire or train the right people. This is like getting assistants to watch the farmer&#39;s items and is&amp;nbsp;less efficient and likely to cause confusion as these assistants need to be communicating a lot with each other and their teams&amp;nbsp;(equivalent to the&amp;nbsp;items the assistants&amp;nbsp;are minding). It is also possible to create programmatic translators that translate code from one form to another, but these are generally horrible for communicating ideas as the code ends up being computer generated and completely lacking in the syntax that human beings require to understand complex topics.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;The longer term solution is to impose a universal language. This&amp;nbsp;is akin to building a bridge for our farmer to get the fox, chicken and corn across the river. While&amp;nbsp;it is&amp;nbsp;more efficient it requires a much steeper learning curve as either the whole or part of the team needs to learn a new language or new team members who can already speak that language need to be hired, not to mention&amp;nbsp;porting any old code/concepts to the new langauge.&amp;nbsp;In addition, as with spoken languages, there is bound to be some form of &#39;cultural&#39; loss as ideas which may have been easily formulated and understood in one language, may be lost in the complexity of another.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;The third option is slightly less obvious but is actually far more natural and&amp;nbsp;is what actually happens in companies that have more than one official development langauge. That is that, over time,&amp;nbsp;the team members from different &#39;language groups&#39; actually become multi-lingual and begin to understand the concepts and ideas from other languages. This is more natural as it is exactly what happens in the real world when people with different langauges interact. First they have no idea and rely solely on any common solutions, but over time they begin to understand more and more of the language that others are speaking. The team members that can communicate in different langauges become multi-skilled and are generally far more valuable to the company.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;In the end, there are a number of ways to deal with multiple languages. Our family weekend used translators and a lot of repetition to&amp;nbsp;move information between people. This is also possible with software languages but is vastly more inefficient. Unless you are lucky enough to be dealing in a single language, the best thing to do with software is to learn and understand what other teams are doing. The people that can, become much more valuable such that their value is greater than the sum of their individual skills, because when a company loses people like that, they are forced to go back to having high rates of repetition and the real risk of losing logic and complexity in the transition of ideas and information between language groups.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/6275329654726645409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2011/07/last-weekend-i-went-for-long-weekend.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/6275329654726645409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/6275329654726645409'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2011/07/last-weekend-i-went-for-long-weekend.html' title='Speaking the right langauge'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjETa8O4zf4mGneU4t9fdvVulsf5tDCPO-rjHW-zLsoJRlQkKoLQvgZf8km3cA11ejsbxBd2U_JJg4k8HUZGul14MP5yrkMkS55BY655L2DnH7FRmJU3e2GXAw0wEEzGKfv14bfnP6vJ8Aq/s72-c/chicken_fox_corn.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-5849163201458771251</id><published>2011-07-16T05:36:00.000-07:00</published><updated>2011-07-16T05:36:53.275-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="benefits"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><title type='text'>Office space</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;It was a double public holiday in the Czech Republic last week. Two days off for every man woman and child in the country... except me. I had the great idea that I would stay in the office and take the days off at some other time when it suited me better, which is a fine idea until you realise that everyone else is off enjoying themselves while you are stuck at work.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Oddly enough though it really was quite nice. No-one was looking over my shoulder or asking questions and the fact that it was so quite meant that I got twice as much work done as normal!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I must admit I thought that if there was no-one else around then it might be easier to get distracted and I would probably end up messing around for most of the day, in fact, the complete opposite happened. I found that I could keep more things in my head and delve more deeply into them without even thinking twice about it. It&#39;s kind of strange really, our office is not super noisy at the best of times, but it really doesn&#39;t take much to get distracted when you are juggling different levels of abstraction and concepts in your head. Someone is usually asking a question or explaining something and even though they aren&#39;t&amp;nbsp;talking to me, the idea that they might say something to me or that I could contribute to makes me listen at some subconscious level and distracts me at a much more conscious level.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://www.joelonsoftware.com/articles/DevelopmentAbstraction.html&quot;&gt;Joel Spolsky&lt;/a&gt; has it right&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; line-height: 20px;&quot;&gt;A programmer is most productive with a quiet private office, a great computer, unlimited beverages, an ambient temperature between 68 and 72 degrees (F), no glare on the screen, a chair that&#39;s so comfortable you don&#39;t feel it, an administrator that brings them their mail and orders manuals and books, a system administrator who makes the Internet as available as oxygen, a tester to find the bugs they just can&#39;t see, a graphic designer to make their screens beautiful, a team of marketing people to make the masses want their products, a team of sales people to make sure the masses can get these products, some patient tech support saints who help customers get the product working and help the programmers understand what problems are generating the tech support calls, and about a dozen other support and administrative functions which, in a typical company, add up to about 80% of the payroll.&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;So why don&#39;t we get our own office? Why aren&#39;t there unlimited beverages? Is it really cost or is it some deep seeded belief that people will work just as well without these things?&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I can understand in companies that are run by business people, the MBA types that believe all businesses are basically the same and there is some kind of formula the applies to all. These companies seem to be run with the belief that the people actually doing the work are the least value and most easily replaced part of the company... so why should they get any extra benefits? But in a company run by and founded by software engineers themselves, there is no real excuse other than perhaps the thought that these things cost a lot and don&#39;t have a high return on investment. Well I would argue that doubling the output of an employee would pay for almost any layout and furniture changes that you could think of.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/5849163201458771251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2011/07/office-space.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/5849163201458771251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/5849163201458771251'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2011/07/office-space.html' title='Office space'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-5924315524449410756</id><published>2011-07-07T12:34:00.000-07:00</published><updated>2011-07-08T07:49:01.993-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><title type='text'>Why traditional design methods don&#39;t work in a software environment</title><content type='html'>I&#39;m sure we&#39;ve all heard it before, a project was going so well until the customer/client/manager changed the requirements/design/scope on us at such a late stage that everything has gone to hell.&amp;nbsp;I know I have, in fact up until recently I probably would have been one of the people saying it!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Tradition&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihV1PudXboXPRr8FBQQniueOmXNPi6A8uNiaO4OacCA6ZBvkg5RXI3xIEoVz3zTNyEwoGVOFKiygxx0RsHKM_vXiSVRd9SIAradK5_Hkxp49j2S94KiOJ1S9F65AjlJOQDNki4yx9YxAND/s1600/fighter_jet.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;154&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihV1PudXboXPRr8FBQQniueOmXNPi6A8uNiaO4OacCA6ZBvkg5RXI3xIEoVz3zTNyEwoGVOFKiygxx0RsHKM_vXiSVRd9SIAradK5_Hkxp49j2S94KiOJ1S9F65AjlJOQDNki4yx9YxAND/s320/fighter_jet.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;You see I&#39;m not actually a software engineer, I just kind of fell into this role as a software designer through chance and the lucky discovery that I actually enjoy it. At university I studied aerospace engineering which - in terms of how long it has been around for - is not that different from software engineering when compared to civil or mechanical engineering, but in terms of development methodology I find it hard to believe that it is anything like software. Now I have no idea what they actually teach in software engineering course, but aerospace engineering promotes what I would call a more &#39;traditional&#39; development methodology, one that works similar to the waterfall model. This works great for aerospace because you really need to have all of your requirements, high level and detail design done before you can even think about beginning construction! I used to think that software engineering worked exactly the same way - you define exactly what you are going to make down to the smallest details, then you construct it, verify that it works and iron out any bugs and then deliver it to the customer who is exceptionally happy with their bug free product that does exactly what they expected and wanted it to do and everybody lives happily ever after.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Problem&lt;/b&gt;&lt;br /&gt;
Unfortunately, every single project I have ever worked on, regardless of the development methodology, has never managed to refine the requirements and/or design work enough to avoid significant last minute changes. Have these projects been exceptionally difficult or multi-faceted? Not really, although they have all had their specific quirks and challenges. Have the clients have been particularly difficult? Not particularly, certainly not any more than expected. Is it because of the people (including myself) defining and designing the software? It&#39;s definitely possible. All of these are valid reasons for a project to lose it&#39;s focus and suffer requirement creep, but the main issue in all of these projects was not the process or people involved, but rather their understanding of what it means to develop software.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Software as Design&lt;/b&gt;&lt;br /&gt;
Most people think of developing software as the end point, or the construction phase, of the development process when actually, developing software IS the design phase.&lt;br /&gt;
Let me put it this way, when an engineer develops the specifications for a desk, they define some requirements&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLf-esra4t7FjB983tisITMBcGGa5_qvyYOtkqEh1YqcdNIxCTrvVyx4PefiAq70Rvtagcybb3lT89L9rS6NhOrf_aqGu3D2fyIIH3E-1QJFmoJzzL-pr4Vpb7YryBzKTPKKH3aAYU4HkE/s1600/table.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLf-esra4t7FjB983tisITMBcGGa5_qvyYOtkqEh1YqcdNIxCTrvVyx4PefiAq70Rvtagcybb3lT89L9rS6NhOrf_aqGu3D2fyIIH3E-1QJFmoJzzL-pr4Vpb7YryBzKTPKKH3aAYU4HkE/s320/table.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;must be big enough to work at&lt;/li&gt;
&lt;li&gt;comfortable height to sit at&lt;/li&gt;
&lt;li&gt;solid enough to carry enough weight etc&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;They then do a detail design document, perhaps based on a prototype&lt;br /&gt;
&lt;div&gt;&lt;ul&gt;&lt;li&gt;four legs made from 40mm square timber&lt;/li&gt;
&lt;li&gt;one 30mmx1.2mx2m&amp;nbsp;bench top&lt;/li&gt;
&lt;li&gt;16 10mm screws inserted into the legs at xyz positions etc&lt;/li&gt;
&lt;/ul&gt;Ok so I have clearly never made a desk before, but the point is that this allows someone, either&amp;nbsp;themself&amp;nbsp;or a skilled labourer, to construct the desk, or construct 50 of them and they will function precisely according to the original requirements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Now lets think of software development. First of all a designer creates the requirements for a web page,&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;have a splash screen introducing the company&lt;/li&gt;
&lt;li&gt;have a contact form&lt;/li&gt;
&lt;li&gt;work on multiple browsers etc&lt;/li&gt;
&lt;/ul&gt;But when it comes to the detail design, how can you possibly create something detailed enough for a software developer to recreate that exactly once, let alone 50 times over?!&lt;/div&gt;&lt;div&gt;The answer is, you can&#39;t. Because creating software is a design exercise and the construction component is actually done by the computer itself, in the compiler and the linker. The computer accepts a rather rigid design document that must follow very specific formatting and have exactly the right inputs to achieve the desired output. This is similar to our skilled labourer from before, imagine the detailed design didn&#39;t specify the dimensions of the timber legs. At worst the labourer would be unable to create the table and at best it would probably not meet one or more of the requirements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Agile development&lt;/b&gt;&lt;/div&gt;&lt;div&gt;So if the software is still being designed up until the moment it is complete, then why shouldn&#39;t the client, manager, designer, programmer or any other stakeholder be able to change things? And if they are restrained from doing so then how can they possibly know what the product will turn out like?&lt;/div&gt;&lt;div&gt;This is where the theory of agile software development comes from. Small chunks of work (design) are completed so that the stakeholders can see, understand and review the design without having to wait for the entire process to be complete.&lt;/div&gt;&lt;div&gt;Agile software development does not completely avoid the traditional method, rather it minimises it down to a manageable level, or as &lt;a href=&quot;http://martinfowler.com/articles/newMethodology.html#ControllingAnUnpredictableProcess-Iterations&quot;&gt;Martin Fowler&lt;/a&gt; puts it - a predictable level.&lt;/div&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: georgia, &#39;lucida bright&#39;, &#39;times new roman&#39;, serif; font-size: 16px; line-height: 22px;&quot;&gt;The key to iterative development is to frequently produce working versions of the final system that have a subset of the required features. These working systems are short on functionality, but should otherwise be faithful to the demands of the final system.&lt;/span&gt;&lt;/blockquote&gt;Iterative, agile development makes sense in the computer world. Isn&#39;t that how computers solve problems and perform all of the magical things that they can do anyway, through a series of iterations? But for so many people (in particular those like me) who come from more traditional backgrounds it is very hard to see things in this way without feeling totally out of control of the situation. The problem is that by limiting the entire project to what you consider to be a manageable or predictable scope means that you are assuming you have thought of everything in advance, while it may be possible for something small like a table, I guarantee you it is almost impossible to do with anything larger or more with complex requirements.</content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/5924315524449410756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2011/07/why-traditional-design-methods-dont.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/5924315524449410756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/5924315524449410756'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2011/07/why-traditional-design-methods-dont.html' title='Why traditional design methods don&#39;t work in a software environment'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihV1PudXboXPRr8FBQQniueOmXNPi6A8uNiaO4OacCA6ZBvkg5RXI3xIEoVz3zTNyEwoGVOFKiygxx0RsHKM_vXiSVRd9SIAradK5_Hkxp49j2S94KiOJ1S9F65AjlJOQDNki4yx9YxAND/s72-c/fighter_jet.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-7582662427854388613</id><published>2011-06-26T12:31:00.000-07:00</published><updated>2011-07-05T09:30:52.695-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="simulation"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><title type='text'>!programmer (~programmer)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;The above statement is true, which makes part of it false which makes the whole thing quite confusing. You see I&#39;m not a programmer, but I need to understand a bit about how to write code as I work in an industry dominated by programmers. I&#39;m also neither an artist or a manager of some sort. So what exactly is it that I do around the office each day?&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Drink a lot of coffee.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Well apart from that I also fulfill a middle role known as a software designer. But what does that really mean? As a software designer I don&#39;t actually get in there and get my &#39;hands dirty&#39; by doing actual programming work to make the core program function, but it is important that I understand what they are doing at a relatively detailed level. Nor do I build models and create textures like an artist, but again it is important that I know what they do.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A software designer is someone who basically brings the two elements of code and art together to make a functioning simulation. Programmers typically work best when they have a quite limited scope, they make a function work exceptionally well as long as they are given the freedom to largely ignore its impact on the product as a whole. I know of companies where the programmers are also the software designers, but a lot of the programmers I know simply don&#39;t think on that scale. They can see right through the code, down into the function that they are creating and its impact on the simulation, but it can be difficult (with good reason) to see how that affects the product as a whole.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A good software designer looks at the product as a whole; from the user experience, to the details of the UI, to the behaviour of different simulation assets and down to the functionality of individual game mechanics and functions to see what needs improving and what can be added.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Let me give you an example.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A customer requests a new scenario in an existing product that is capable of training units on the capabilities of the opposing force. As usual the customer doesn&#39;t really know what they want and it is down to the team to decide for them. Given that this will fit into an existing product, there is an obvious list of basic, new requirements; a basic interface, a large, multi-player environment, the individual functions of the players, the overall goal and scoring mechanism, any AI behaviours and reactions, new vehicles, terrain and unit types etc. Lets assume for a minute that all this work can be done by the artists and programmers on the team. So they go away and create all of these magnificent functions and models and at the end of it realise that the customer didn&#39;t pay for a bunch of raw models and functions, they paid for a scenario that people can play to learn the capabilities of the opposing force. So back they go to create a scenario that draws all of this together and quickly realise that any player interaction breaks the AI behaviour patterns, that the AI cannot interact with new vehicles in the multi-player environment and that because of the scale of the environment, the entire scenario grinds to a halt with all these new vehicles. To fix all of these bugs requires a base level redesign of the original functions and re-modelling of the vehicles and in the process the basic UI becomes so bloated and out of sync with the rest of the product that is essentially unusable. So we are back to square one (albeit with many lessons learnt along the way) and need to start again, or hack this off as a separate, difficult to support, product.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;You could argue that this process broke down due to bad project management, the tasks were not identified correctly and bugs not caught quickly enough. You could also argue that this was a lack of communication between the programmers and the artists, or perhaps you might even be gutsy enough to blame the customer for their lack of focus and direction. At which point they may stop paying you!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;What this process clearly needs is someone with the scope of the project and the current product in mind. At the same time that person needs to have enough knowledge of the functions that are created by the programmers and how the models are created by the artists to talk to them intelligently. This person is a software designer.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;So that&#39;s what I do, I think about the project within the scope of the product and try to design it so it is functional from a number of different viewpoints, not least of all the end user. In my line of work, a software designer actually brings together these elements in a&amp;nbsp;separate&amp;nbsp;language used in the simulation. The language allows the designer to use programming functions and incorporate models in a way that is consistent with the product as a whole yet customisable enough to develop individual scenarios for customers. While you could easily argue that a whole new language is excessive, the critical role of a software designer is very hard to deny.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/7582662427854388613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2011/06/programmer-programmer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/7582662427854388613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/7582662427854388613'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2011/06/programmer-programmer.html' title='!programmer (~programmer)'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-9010119823572593910</id><published>2010-09-13T13:53:00.001-07:00</published><updated>2010-09-13T13:53:26.479-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gaming"/><category scheme="http://www.blogger.com/atom/ns#" term="replay"/><category scheme="http://www.blogger.com/atom/ns#" term="simulation"/><title type='text'>Playing Again (and again, and again …)</title><content type='html'>&lt;p&gt;You want to know what the games industry learnt years ago, that we in the simulation world are only just catching on to? &lt;strong&gt;Replayability&lt;/strong&gt;. Or in other words replay value.&lt;/p&gt; &lt;p&gt;What do you see in the best games out there today? Typically that they last for a long time the first time round, and that you actually want to play them a second time because they are so much fun. The way I see it there are three key ways of creating a replayable game,&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Randomise parameters  &lt;li&gt;Create multiple play paths  &lt;li&gt;Add true multiplayer&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;So what do I mean by that? And why would we even want to do it in the first place? I’ll start with the second part.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Why do we want replayability?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Have you ever tried to teach someone a concept using a simulator/simulation and seen that look of interest die in their eyes after they run through the scenario once and then the second time it is exactly the same? Or worse still, when a trainee ‘gets it’ because he/she can complete the training course in record time? This is because the simulation they are playing lacks replayability. Interest is a very real part of any learning process and it’s important that the simulation be at least challenging when the trainee plays it in order for their mind to keep working and understanding. Computers are excellent at repeating exactly the same thing time and time again, which is in most cases a very good thing, but a good simulation adds in an element of randomness to keep the user thinking and reflecting on what they are trying to do.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How to add replayability?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;As I mentioned above there are three key ways of introducing replayability into a simulation.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Randomising Parameters&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Things like randomly selecting where the player starts, what kind of things they have available to them and where the challenges are placed/what their solutions are make a big difference to how the game plays and to it’s replay value, but they can be very hard to add to a simulation after development. Easier things to do are to randomise the location/appearance of objects in the scene or to add in background noise/effects to distract the trainee. Many games currently do this very well.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Create Multiple Play Paths&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Multiple play paths can come in the form of the traditional ‘choose your own adventure’ where one decision influences the next, or they can be of the style of independent paths from different characters or start-up parameters. Multiple play paths (particularly of the former type) generally have to be integrated into the simulation by design, but if the simulation is part of a wider training program then it is definitely possible to modify the training adjusting the players abilities/resources during other components of the training. One of the best games I have seen that does this is Fallout3, where you have not only a huge world to explore and many different, non-linear game paths but you can also play your character in different forms and end up being a tradition bad/good guy or even somewhere in the middle.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Add True Multiplayer&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Ok, so this technically is a combination of the above two. True multiplayer allows for multiple play paths and randomisation by simply adding other human players. I say ‘true’ multiplayer as it is very easy to add multiplayer by simply allowing other players to connect and see what each other are doing. True multiplayer allows the players to interact and build a completely different game depending on their interaction. Again this requires dedicated thought from the design upwards and is particularly challenging as multiplayer really does add another dimension to a simulation, which can often be difficult to predict and control. A perfect example of this in the gaming world in World of Warcraft which is recognised as the biggest online gaming environment in the world.&lt;/p&gt; &lt;p&gt;Adding replayability is important to make learning fun and challenging and as long as it is considered in the design phase, it is not particularly difficult to integrate into the simulation.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/9010119823572593910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2010/09/playing-again-and-again-and-again.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/9010119823572593910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/9010119823572593910'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2010/09/playing-again-and-again-and-again.html' title='Playing Again (and again, and again …)'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3816289112781988625.post-8889449164146881606</id><published>2010-08-30T12:29:00.001-07:00</published><updated>2010-08-30T13:19:14.024-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="perspective"/><category scheme="http://www.blogger.com/atom/ns#" term="simulation"/><title type='text'>Putting Simulation in Perspective</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;I was looking at some &lt;/font&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/M._C._Escher&quot;&gt;&lt;font color=&quot;#408080&quot;&gt;Escher&lt;/font&gt;&lt;/a&gt;&lt;font color=&quot;#808080&quot;&gt; paintings the other day. I have always liked to look at them, every time I do I get something new out of them; this time it was just how important perspective is when you look at a complex system.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY4PB_9qoFMxWJL2reF6Z9nV0WhyDec8JxZl9zo_VtAeUKR0Ijo8UZHP2nAZNJ4PWmna1hFMkhkGZhTh58tiBCvTWN0Z_UC9-uNtfr-iIrhsio-FgaOhiuAxOCgjnbLGheAdP6MnpI_zSL/s1600-h/Escher&#39;s_Relativity%5B13%5D.jpg&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;img style=&quot;display: block; float: none; margin-left: auto; margin-right: auto&quot; title=&quot;Escher&#39;s_Relativity&quot; alt=&quot;Escher&#39;s_Relativity&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHfRI7Mpgx6ixb7pdr-3uy2mH6EUvkQcrogOe7cn_r_HvOSEQ2vbUDoc2H00I6Kt1KgV51zVJV7-u4sMZfKVV6jtlg900aIhWXbJ8x2mjFRWTlVdtWvXdzwngvMRom4BSg9XQEwbGItMQ9/?imgmax=800&quot; width=&quot;420&quot; height=&quot;405&quot;&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;The same can be said about simulation, depending on your point of view you will see and expect very different things from the same simulation. An important distinction to make when it comes to simulation, is the concept of a simulation vs a simulator. It is generally true that a simulation runs on a simulator, but the two are not dependent on one another. It is a common mistake that people confuse the two because of the perspective that they view them from. I have detailed a few below.&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyZDP0gtJOgF8X_qStyWDaeKQHI7WUF7B8jvyFuN45csBudBEgtQMVrgdhgib_RHZnjyCMu2yTi1sQFfVTads9U8ddgMOFp-vPuM7R025BOyvFqO3mfPRIaFcvM-8KTePwLA8lWuxyTXa5/s1600-h/flightsim%5B5%5D.jpg&quot;&gt;&lt;img style=&quot;margin: 0px 20px 0px 0px; display: inline&quot; title=&quot;flightsim&quot; alt=&quot;flightsim&quot; align=&quot;left&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiORIjulGHG7ngvv2T4k_ZubcgD7ZFqjYwFgAkLajHxTrlerF2ISNhbBnf2AfWGr3NCwrQOqDNJRjmWqs-QCvBEMAb66xvb5tH5un9ws0HwkO1Fp2bBso_ZUghf9UWtk1BHnub145hzNzBn/?imgmax=800&quot; width=&quot;240&quot; height=&quot;180&quot;&gt;&lt;/a&gt;&lt;strong&gt;1. Simulation = Simulator&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;This is typically the person/organisation who are looking to use simulation as a training tool. They look at simulation technologies from the perspective of a flight simulator. This is particularly frustrating from Defence clients, who seem to believe that there is little or no training benefit to be had without a $20 million simulator running the simulation. Conversely, the simulation = simulator crowd generally believe that there is no benefit in using simulation for analysis.&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4d7sWa0urbL3nsWt9n1qb71SMPTsDnovJtnzEAR39DxarhhOoZOcqtcR3aYsW1BvseEbMXBhaCS5EhUU5I6No4jZ6CC7J_j9hoUp9P9qDml5im9O8kcx7BJUbBWsHstolwZE2xwDAVlwz/s1600-h/flowchart%5B3%5D.gif&quot;&gt;&lt;img style=&quot;margin: 0px 0px 0px 20px; display: inline&quot; title=&quot;flowchart&quot; alt=&quot;flowchart&quot; align=&quot;right&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZFXdXx2qJ7q99fPcEJOCSXm4OhrLVddDR-BvlBbRFz3NnCI4DypCPi1BP98nLaqbxGPDS-QGzlPk_lAvrM4q24d3MAG9VrEJ51SNEut-o9B3Z1-Zw_djsbHcVXb70S1LnKpCI1tMsIZyF/?imgmax=800&quot; width=&quot;240&quot; height=&quot;204&quot;&gt;&lt;/a&gt; &lt;strong&gt;2. Simulation as a solution&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;Everyone in this industry has heard of attempts to solve an entire problem through simulation and consequently how it has failed miserably, so much so that it gets tiresome to hear/read about how we shouldn’t try to use simulation as a one-stop shop for our problems. People who employ this technique typically see simulation as a complex tool, so it should be used to solve a complex problem. Obviously things are never so simple.&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&amp;nbsp;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2kngYJ4eccbjfziLaNPbCG48_pbu5JxlVb-SWgDrR0vssfkknsb_76keGoTNCAoAviDHCfXgnH-pkkDhHisFGk5cwdTlXA4JuEe-pOG-nekGGrH0ypu5hzQl_qwudPw0skLO0vm2j-4B/s1600-h/car_fluid%5B4%5D.jpg&quot;&gt;&lt;img style=&quot;margin: 0px 20px 0px 0px; display: inline&quot; title=&quot;car_fluid&quot; alt=&quot;car_fluid&quot; align=&quot;left&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-oXCF7nrPuKDz7K_OVwD9aBY1I6hpVyb_jE1GG401T7Jv7ohGw3z490RELHlDdAf_Ms8DGhuD7YioxFD_azxTGePVwAGrNQq2fY6upCXbYDZuatk4Qc0pAk7G04-oQYuS7wmVs_6gtwHl/?imgmax=800&quot; width=&quot;240&quot; height=&quot;147&quot;&gt;&lt;/a&gt; &lt;strong&gt;3. Simulation as an exact science&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;This is similar to the ‘Simulation as a solution’ perspective, in that it entails a lack of understanding about what simulation is and how to use it. While it is possible to get accurate results to a particular problem using simulation, the costs generally rise exponentially with the complexity of the problem. In general, simulation is best used to narrow down possibilities, and refine results. A simulation that may find a few possible solutions out of hundreds or thousands of options will probably not be the best simulation to find the exact parameters that define a solution and vice versa.&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;strong&gt;4. ‘Simulation is no substitute for real life experience’&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;This is a clear perspective problem and it comes from people who expect simulation to exactly replicate real life. In one sense, this is partly propagated by the industry itself – as simulations get more and more realistic, so do people’s assumptions of what it must be capable of. In general however, simulations, for all their fancy graphics and computational power, are only as good as the design they were developed for. People/organisations are slowly coming around to the idea that simulations try to emulate key elements of real life, but not real life itself.&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&amp;nbsp;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;I think there are two key issues that the simulation industry as a whole needs to work on, to help give clients a better perspective -&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;Expectation management&lt;/font&gt;&lt;/div&gt; &lt;li&gt; &lt;div align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;Problem definition&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;By giving clients a better perspective on what simulation is capable of they can begin to more clearly understand how it can benefit them. By giving the problem the right perspective, it can give the client greater benefit. Otherwise, at the end of the day all you and the client are going to see are a series of technologies intersecting in odd and confusing ways, much like the staircases of an Escher painting.&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;&lt;font color=&quot;#808080&quot;&gt;&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://simulx.blogspot.com/feeds/8889449164146881606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simulx.blogspot.com/2010/08/putting-simulation-in-perspective.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/8889449164146881606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3816289112781988625/posts/default/8889449164146881606'/><link rel='alternate' type='text/html' href='http://simulx.blogspot.com/2010/08/putting-simulation-in-perspective.html' title='Putting Simulation in Perspective'/><author><name>Craig</name><uri>http://www.blogger.com/profile/17022000790873645161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHfRI7Mpgx6ixb7pdr-3uy2mH6EUvkQcrogOe7cn_r_HvOSEQ2vbUDoc2H00I6Kt1KgV51zVJV7-u4sMZfKVV6jtlg900aIhWXbJ8x2mjFRWTlVdtWvXdzwngvMRom4BSg9XQEwbGItMQ9/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry></feed>