tag:blogger.com,1999:blog-889673996827318802024-02-06T18:06:26.898-08:00Jeremy HutchingsSome of the things I'm curious about.
Jeremyhttp://www.blogger.com/profile/03884508382432876772noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-88967399682731880.post-40268540705487701642020-06-14T04:42:00.003-07:002020-06-14T16:22:35.564-07:00Virtual Teams and Remoting Working; a research based perspective<h2 style="text-align: justify;">
Virtual Teams & Remote Working</h2>
<div style="text-align: justify;"><br /></div><div style="text-align: justify;">
In 2020 I finished a MSc in Systems Thinking in Practice, the final step being a research project which focused on the aspects of virtual teams and remote working. It's how I've worked for the majority of my career and a topic I think about a lot.<br /><br />I finished the research while coronavirus was erupting, which was as timely as it was frustrating; as I couldn't share the research straight away (due to university rules on plagiarism and sharing before marking).<br /><br />
Because of covid-19 I've seen many posts and articles for workers who are new to remote teams, or home working. Most of these are focused on the individual and their working day, ergonomics, routine, etc. Which is great, though, I think they're mostly subjective and a little prescriptive, opposed to informative.<br /><br />I believe it's best for each individual to use those kinds of posts as a starting point and explore what works for them and their team. There are many different modes of working, as well as types of team interaction.<br /><br />This blog post is a summary from my
MSc research paper, which shares the nature of distributed teams, and what topics I found the research to show is important.<br /></div>
<div style="text-align: justify;"><br />
My focus was guided by some questions, a few being:<br /></div>
<ul style="text-align: justify;">
<li>What matters in a virtual team? </li>
<li>What are the emergent properties and issues of virtual teams?</li>
<li>What are the common dynamics within (distributed) work teams?<br /></li></ul><div style="text-align: justify;"><br /></div>
<h4 style="text-align: justify;">
Terms<span style="font-weight: normal;"><br /><br />First I'll try and clarify some terms I'm going to use, the "nomenclature" for the fancy people amongst you. Ensuring a shared meaning (mental model) is one of the many important aspects of virtual teams; same words and different understandings lead to all kinds of issues that most of us can relate to.<br /></span></h4><div style="text-align: justify;"><br /></div><div style="text-align: justify;"></div>
<h4 style="text-align: justify;">
<span style="font-weight: normal;"><b><i>Distance</i></b>, has many dimensions as we'll talk about later, geographical, temporal, cultural and so on. For example a remote team "has more geographical distance" that a co-located one.</span></h4>
<h4 style="text-align: justify;">
<span style="font-weight: normal;">For example, one part of a global team based in New York City will have geographical <i>as well as</i> cultural distance from another team based in Seoul.</span></h4>
<h4 style="text-align: justify;">
</h4>
<div style="text-align: justify;"><b><i>Virtual team</i></b>, is used to refer to two or people people who have geographical distance, though work together to achieve a goal.<br /><br /><b><i>Organisation</i></b>, is the company, e.g. Google.<br /><br /><b><i>Team</i></b>, will be relative to the size of the organisation. A "team" in a large organisation could be "the group of developers, designers along with a project/product manager that take care of product X". Though in a smaller company or start up (which is where most of my experience is) team and organisation are interchangeable.<br /><br />
When I say team, I typically means organisation as well depending
on the site of team/company. Pick which ever makes sense. My
findings are the same, it's just a matter of perspective.<br /><br /></div>
<h3 style="text-align: justify;">
Why did I do it? </h3><div style="text-align: justify;">
I have spent the majority of my career and life in a virtual settings (opposed to an physical office). I have been in offices on occasion, though I've already shared <a href="http://www.jeremyhutchings.com/2013/11/open-plan-offices-are-killing-your.html" target="_blank">my views and research</a> on them.<br /><br />
Over the last 10-15 years most of my time and focus has been thinking about others and what they need. Trying to figure out the balancing act that is management, facilitation and leadership. What are all the factors that go with being responsible for supporting a team and facilitating an outcome.<br /><br />As I had to deliver a research project to finish my MSc, I wanted to use the opportunity to spend the time focused on something I really care about. Which is the way teams (and the members of them) interact and work together. How can it be done better? What are the issues and barriers to success? What pisses most people off?<br /><br />
I've been extremely lucky in a few teams, as we experienced <a href="http://www.jeremyhutchings.com/2011/01/what-is-hackmode-flow-zone.html" target="_blank">flow</a> simultaneously. I strive to share that with team mates as well as experience it again myself. I'm also very sensitive to behaviours and attitudes (conscious or otherwise) that stop a team getting there. So continuing to improve my understanding of this is important to me.<br /><br />
So, it's personal, it's something that fascinates me and I do it for a job.<br /><br />Evidence supports that the world is moving towards remote work (where people can) long before covid-19, so I want to share some insights where I can to help out.<br /><br />
I saw a headline during this write up that sums it up:<br /><br /><blockquote class="tr_bq">
"<i>The biggest coronavirus challenge? Getting us all to ditch homeworking and come back to the office</i>"</blockquote><br /><br /></div>
<h3 style="text-align: justify;">
What was the research, how did I do it?</h3>
<h4 style="text-align: justify;">
What:</h4><div style="text-align: justify;">
I took the route of Secondary Research, that means I used the data that others have gathered, opposed to doing the data gathering myself.<br /><br />
Pros - <i>I get a lot of data to use for the research.</i><br />
Cons - <i>It's not 100% focused on answering the questions I'm asking.</i><br /><br />
So, the dry academic aim of the research was:<br /><br /><blockquote class="tr_bq">
"<i>To investigate the barriers to organisational performance within distributed agile software development teams</i>."</blockquote><br />
I had to focus on a certain type of team, so focused on my own experience. Though I found the research is relevant to any type of remote, virtual or hybrid team. <br /><br /></div>
<h4 style="text-align: justify;">
How:</h4><div style="text-align: justify;">
I think a quick overview of the "how" will help to give some legitimacy and context to what's coming. I've cut out all the dry academic ground work for sanity ...<br /><br /><br />I combined the three theories below in the research, to guide the data gathering (from
peer reviewed journals). I
focused on the three that I know about:<br /></div>
<ol style="text-align: justify;">
<li>Project Management (PM)</li>
<li>Group Dynamics (GD)</li>
<li>Communications (CM)</li>
</ol>
<div style="text-align: justify;"><br />
Then
I went on the hunt for relevant peer review journals published since 2000. I
found 150 and filtered it down by measuring relevancy and quality to 90, to make sure the data was good
enough.<br /><br />
From each of the 90 documents I extracted the supported arguments or proven hypotheses and turned them into "statements".<br /><br />
A statement is one word or a short phrase, to paraphrase what was being said by the document.<br /><br />
Creating statements made it possible to group data from the disparate documents together and then count how many times they occurred. I did this for each of the theories and then ranked the statements.<br /><br />
Reading that many journals gave me a ton of insight to aspects of each theory I'd not considered before, though the main goal here was to <u>find the statements that occurred in each of the three theories</u> (I called these "core statements").<br /><br />
For me, that intersection of the theories, was the mental Venn diagram I was after, i.e. What is each theory saying is important?<br /><br />
At the end of all that I had a list of ranked statements from each theory and the ones that all appear in all three.<br /><br />
Then I wanted to create a simple diagram, to be able to picture my findings. Also this would allow me to try to communication how the core statements interacted from all the research I'd done.<br /><br />
I wanted to create a visual aim or guide to my findings. Though to condense 90 verbose peer reviewed journals into 1 diagram is distilling out some nuance, to say the least!<br /><br /><br /></div>
<h3 style="text-align: justify;">
Findings</h3>
<div style="text-align: justify;"><i>Caveat - I've removed a LOT of the details and nuance to get this down to a readable blog post size. I could likely add several volumes just on the different types of communications and what the research shows works best in different teams and environments. Maybe I'll expand on each point in a future blog post, as the intricacies of communication are fascinating to me.</i></div><div style="text-align: justify;"><i><br /></i></div>
<div style="text-align: justify;"><br />
Well this diagram is the fun bit, I hope this helps others who are responsible facilitating virtual teams. This is new to some, old to others, but is certainly not going away and a lot of organisations need to get a lot <i>lot</i> better at it. <br /><br />
So here is a guide to help with that.<br /><br />
All the core statements from the intersection of all the theories, turned into this diagram:<br /><br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuOFsjfDRO7ZMkudKKKdn7B2X_7TtkuOgr2DGNnYmis2CR2Fhmw8in8gvI6UcB4Lt4CYEyhH6CrtC-dU0XznHopEmWcHFwlVPzysHXRnKEyPEN75AOFsP3w6PxGlWmMAi1m7uM8lAHujeC/s1600/GST+model.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="469" data-original-width="672" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuOFsjfDRO7ZMkudKKKdn7B2X_7TtkuOgr2DGNnYmis2CR2Fhmw8in8gvI6UcB4Lt4CYEyhH6CrtC-dU0XznHopEmWcHFwlVPzysHXRnKEyPEN75AOFsP3w6PxGlWmMAi1m7uM8lAHujeC/s1600/GST+model.png" /></a></div>
<div style="text-align: justify;"><br />
So the 7 core statements that came from all the research were:<br /><br /></div>
<ol style="text-align: justify;">
<li>Team & (the) Team Structure</li>
<li>Goals</li>
<li>Process</li>
<li>Leadership</li>
<li>Culture</li>
<li>Trust</li>
<li>Asynchronous Interaction</li></ol><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span><a name='more'></a></span></div><div style="text-align: justify;"></div><ol style="text-align: justify;">
</ol>
<div style="text-align: justify;"><br />
The original paper was 10K words, so I'll just share a few notes on each now, which are mostly lifted from my project, hence the slight change in use of language. <br /><br /><br /></div>
<h3 style="text-align: justify;">
Team & (the) Team Structure</h3>
<div style="text-align: justify;"><br />Existing research (Mitchell, et al. 2011) shows that the creation of a team goes beyond selecting a set of individuals with the appropriate skills sets, but to the psychology of shared identity. The formation of a team and its accepted norms helps to define its boundaries and culture. <br /><br />
The research found conflicting findings on the physical distance in distributed teams being a negative impact (Amber et al. 2019; Willis. 2010). Though the majority of the findings suggested that the geographical distance is inconsequential. The method and quality of the communication, as well as training, were found to be more impactful than distance barriers (Warkentin and Beranek. 1999). The evidence that some highly performant distributed teams outperform co-located teams supports this (Colomo-Palacios. 2014).<br /><br />
One document indicated a tendency for conflict to emerge more in distributed teams, opposed to co-located ones (Cramton, Hinds. 2004).<br /><br />
It's vital to understand the importance of proactively building a team structure to mitigate conflict, as well as instilling a shared identity and culture. <br /><br /><br /></div>
<h3 style="text-align: justify;">
Process</h3><div style="text-align: justify;">
Marks et al. (2001) describes process as:<br /><br /><blockquote class="tr_bq">
“... <i>member’s interdependent acts that convert inputs to outcomes through cognitive, verbal, and behavioural activities directed toward organizing taskwork to achieve collective goals</i>”</blockquote><br /><br /></div>
<div style="text-align: justify;">
Process ranked very highly in the research - in all areas - but this doesn't mean that there has to be a very complex heavy process. But that there should be a suitable, well communicated and understood one.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">
A process is a organisational tool, different tools are suited to different organisations. Treat anyone who claims to have "the one true answer" with a healthy amount of suspicion (i.e. die hard agile evangelists, who - quite ironically - by nature and view are quire rigid).<br /><br /></div>
<h3 style="text-align: justify;">
Goals</h3>
<div style="text-align: justify;"><br /></div><div style="text-align: justify;">
The description of process, above includes the behavioural activities by which a team attempts to deliver their goals (Marks. 2001). The findings throughout the research spoke to communication having distinct (and usually unrealised) goals.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">
Some describe the primary goal of communication being “to send clear, unambiguous and complete information.” (Ziek, Anderson. 2015). The issue with this is that it focuses on broadcasting information and not on ensuring that the people(s) receiving it have the same decoding of it into understanding as the sender. <br /><br />
Qualifying with people what they have understood is vital, this is why I mentioned "shared mental models" in the terms section above.<br /><br />
The work by Butchibabu (2016) demonstrates the value of not only clearly defining and communicating team goals, but proactively sharing them to teammates.<br /><br />
The approach of broadcasting (opposed to having to constantly request) information to increase team members situational and workload awareness, is also observed in superior teams by Orasanu (1990).<br /><br />
Shantz and Latham (2011) stated “<i>Overwhelming evidence in the behavioral sciences shows that consciously set goals can increase an employee’s performance</i>.”. This aligns with the findings extracted during this research.<br /><br />
The focus on goals in all three theories is indicative of the importance of having an understood intent in communication, action and outcome. <br /><br />
In summary - As a team (or via leadership), set very clear goals and communicate to the team.<br /><br />
The goals should be set and clear at a company level. A common (and I think good model) is OKR (<a href="https://en.wikipedia.org/wiki/OKR" target="_blank">https://en.wikipedia.org/wiki/OKR</a>) which then feed into each team and team member.<br /><br /><br /></div>
<h3 style="text-align: justify;">
Leadership</h3><div style="text-align: justify;">
Leadership (not surprisingly I hope) was found to be vital in all areas of efficient and effective teams (Colomo-Palacios. 2014; Hamersly, Land. 2015; Thamhain. 2011).<br /><br />
It was also observed that leadership - as a property of a team - isn't necessarily represented consistently by a single person or group. Rather that leadership is an emergent property (Ziek, Smulowitz. 2014) and that it can be fluid.<br /><br />
Meaning that it can move amongst suitable members of a team depending on project context (Cascio, Shurygailo. 2003; Eubanks, et al. 2016). <br /><br />
Not only is leadership vital and potentially fluid within a team, but also needed to be multi-dimensional (Zigurs. 2003; Pauleen. 2003; Eubanks. 2016).<br /><br />
This is due to the multitude of dimensions in distributed teams. Zigurs (2003) researched that and created a convenient diagram of the dimensions:<br /><br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiYefN9nRfyhT4V3yaUVSgJvw3pf7TtiBGF4S4-JCHwCjBv49uH26IrwgopvSy28v76tC_spzIUeM8iX2hgrTHFglXRjKSCePeJNQgMD9gRowXq5YedKPP_Tos30upHRJnT2UC3Sd1V0Wy/s1600/Zigurs+%25E2%2580%2598Leadership+in+Virtual+Teams.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="446" data-original-width="576" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiYefN9nRfyhT4V3yaUVSgJvw3pf7TtiBGF4S4-JCHwCjBv49uH26IrwgopvSy28v76tC_spzIUeM8iX2hgrTHFglXRjKSCePeJNQgMD9gRowXq5YedKPP_Tos30upHRJnT2UC3Sd1V0Wy/s1600/Zigurs+%25E2%2580%2598Leadership+in+Virtual+Teams.png" /></a></div>
<div style="text-align: justify;"><br />These dimensions of a team, are one aspect and how disperse they are is the measurement. It's not just geographical distance (which infers time) but also culturally and organisationally, i.e. accounting and engineering having a day to day working distance within an organisation. <br /><br /></div>
<div style="text-align: justify;">
The insight from Zigurs (2003) was to not think of a team on any dimension (geographical, cultural, etc) as one one extreme or the other. Remote or not, but on a continuum.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">
So a co-located team has a low dispersion of geographical difference, where as team members around the world have a high dispersion. This can also be in flux as some members work in an office a few days a week and at home for the rest, so over time the dimensions change.<br /><br />
Having a scale and seeing our own place on it can help with team context and self-awareness. Which is a good way to mitigate the dreaded "us and them" (in/out group) thinking that can occur in teams, virtual or not.<br /><br /><br /></div>
<h3 style="text-align: justify;">
Culture</h3><div style="text-align: justify;">
Culture has been described as:</div><div style="text-align: justify;"><br /></div>
<div style="text-align: justify;"><blockquote class="tr_bq">
“<i>... one of the VT’s [virtual team] most significant boundaries.</i>” (Han, Beyerlein. 2016). </blockquote></div><div style="text-align: justify;"> </div><div style="text-align: justify;">
There are thousands of books and millions of blog posts on culture and I'm not here to define what is a "good" or a "bad" one, only that we should be mindful of the cultures we cultivate.<br /><br />
I'd suggest being wary of ideologically driven missions from teams/people trying to enforce their narrow view of what is an appropriate culture. Apply a large amount of critical thinking to the motivations of such initiatives.<br /><br />
Culture was found throughout the research and is the main contributor to trust within a team. The dimensional complexity of culture increases a LOT within distributed teams. This is because different groups have different norms and local cultures, as well as the cultures of the countries they live in.<br /><br />
During the extraction of Project Management and Group Dynamics findings, many documents indicated the issues that occur from a lack of understanding (opposed to prejudice or hostility) of the different cultures within a team. Not only with a co-located team, though more frequently between geographically dispersed teams (Dani, et al. 2006). <br /><br />
Culture directly underpins and affects the ability for a team to innovate (Kratzer, et al. 2017) and contributes significantly to the development of trust within a team (Parra, et al. 2011).<br /><br />
The documents showed a close relationship between culture, team building and trust.<br /><br />
This is no simple topic ... and I suggest it's for the leadership to figure out asap if it's not already there. <br /><br /></div>
<h3 style="text-align: justify;">
Trust</h3><div style="text-align: justify;">
Trust is a vital component of a harmonious team, basically the foundation for everything. If you don't have this, there isn't much else that matters.<br /><br />
It's likely the hardest aspect for inexperienced or weak leaders to deal with. Not trusting members of the team quickly leads to a breakdown of all other aspects of the work and interactions.<br /><br /><br />
Trust is described by Mayer et al. (1995) as<br /><blockquote class="tr_bq">
“<i>the willingness of a party to be vulnerable to actions of another party based on the expectations that the other will perform a particular action important to the trustor irrespective to the ability to monitor or control that other party</i>”. </blockquote><br />
As with leadership and culture, trust was shown to be multi-dimensional (Baskerville, Nandhakumar. 2007) Baskerville and Nandhakumar (2007) describe two types of trust, Personal and Abstract trust. Personal coming from relationships within the team and Abstract being based upon the structures of an organisation. <br /><br /></div>
<h3 style="text-align: justify;">
Asynchronous Interaction </h3><div style="text-align: justify;">
Asynchronous behaviour is an interaction that isn’t dependent on immediate response. In distributed teams this will typically be out of necessity due to time zone differences. Email was the most common example of asynchronous communication in the findings.<br /><br />
Though Slack, Microsoft Teams, etc are all good examples as we can't be working in a manner which is dependant on others all the time, and this should be minimised as much as possible.<br /><br />
Much as most meetings are a waste of time, trying to "get everyone on a call" is usually the same waste of time.<br /><br />
Asynchronous working was shown to lead to more knowledge capturing and transfer due to the medium of transfer being recorded (email, PM tools and Slack chat) (Beise. 2010). Asynchronous is core to distributed teams communications and process (Fischer, Mosier. 2015), GD (Eubanks, et al. 2016) and PM (Massey, et al. (2003).<br /><br /></div>
<div style="text-align: justify;">
With distributed teams commonly working (globally) at different times, figuring out the best asynchronous practices will benefit everyone.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span><!--more--></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><h2 class="western">Summary</h2><div>So, those 7 core statements were my findings for the aspects that effect teams. Teams with various dimensions of distance (geographical, cultural, etc) will experience each of the dimensions in different ways, though each aspects will be present and should be considered by the members, be they facilitators/leaders or not.<br /></div></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /><br />
<br /></div>
<h1 class="western" style="break-before: page; text-align: justify;">
Bibliography</h1>
<h2 class="western" style="text-align: justify;">
<a href="https://www.blogger.com/null" name="__RefHeading___Toc32103_525094188"></a><a href="https://www.blogger.com/null" name="_57ykywzg2lri"></a>
Project Management</h2>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span lang="en-GB"><span style="font-weight: normal;">Hashmi,
A., Hafeez, Y., Jamal, M., Ali, S. and Iqbal, Naila. (2019) ‘Role
of Situational Agile Distributed Model to Support Modern Software
Development Teams’, Mehran University Research Journal of
Engineering and Technology. Mehran University of Engineering and
Technology, 38(3), pp. 655–666. </span></span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span lang="en-GB"><span style="font-weight: normal;">Massey,
A., Montoya-Weiss, M. and Hung, Y. (2003) ‘Because Time Matters:
Temporal Coordination in Global Virtual Project Teams’ (2003)
Journal of Management Information Systems. Routledge, 19(4), pp.
129–155.</span></span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Beise,
C., Carte, T., Vician, C., and Chidambaram, L. . (2010) ‘A case
study of project management practices in virtual settings: lessons
from working in and managing virtual teams’, ACM SIGMIS Database:
the DATABASE for Advances in Information Systems. ACM, 41(4), pp.
75–97.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Bharadwaj,
S. and Saxena, K. (2005) ‘Knowledge Management in Global Software
Teams’, Vikalpa. Ahmedabad: Sage Publications, New Delhi India,
30(4), pp. 65–76.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Casey,
V. (2010) ‘Virtual software team project management’, Journal of
the Brazilian Computer Society. London: Springer-Verlag, 16(2), pp.
83–96.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span lang="en-GB"><span style="font-weight: normal;">Colomo-Palacios,
R., Casado-Lumbreras, C., Soto-Acosta, P., García-Peñalvo, F. and
Tovar, E. (2014) ‘Project managers in global software development
teams: a study of the effects on productivity and performance’,
Software Quality Journal. Boston: Springer US, 22(1), pp. 3–19.</span></span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Curlee,
W. (2008) ‘Modern virtual project management: The effects of a
centralized and decentralized project management office’, Project
Management Journal. Hoboken: Wiley Subscription Services, Inc., A
Wiley Company, 39(S1), pp. S83–S96. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Drouin,
N., Bourgault, M. and Gervais, C. (2010) ‘Effects of organizational
support on components of virtual project teams’, International
Journal of Managing Projects in Business. Emerald Group Publishing
Limited, 3(4), pp. 625–641.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">García,
J., Saldaña, J., Amescua, A. and Sanz, A. (2010) ‘How to get
mature global virtual teams: a framework to improve team process
management in distributed software teams’, Software Quality
Journal. Boston: Springer US, 18(4), pp. 409–435.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Hamersly,
B. and Land, D. (2015) ‘Building productivity in virtual project
teams.’ Universidade Nove de Julho, 6(1), pp. 01–13.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Henderson,
L. S., Stackman, R. W. and Lindekilde, R. (2016) ‘The centrality of
communication norm alignment, role clarity, and trust in global
project teams’, International Journal of Project Management.
Elsevier Ltd, 34(8), pp. 1717–1730.</span></span></div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Kuruppuarachchi,
P. R. (2009) ‘Virtual team concepts in projects: A case study’,
Project Management Journal. Hoboken: Wiley Subscription Services,
Inc., A Wiley Company, 40(2), pp. 19–33.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Lockwood,
J. (2015) ‘Virtual team management: what is causing communication
breakdown?’, Language and Intercultural Communication. Routledge,
15(1), pp. 125–140. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Mcdonough,
E. , Kahn, K. B. and Barczak, G. (2001) ‘An investigation of the
use of global, virtual, and colocated new product development teams’,
The Journal of Product Innovation Management. Elsevier Inc, 18(2),
pp. 110–120.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Pokharel,
S. (2011) ‘Stakeholders’ roles in virtual project environment: A
case study’, Journal of Engineering and Technology Management.
Elsevier B.V, 28(3), pp. 201–214.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Reed,
A. and Knight, L. (2010) ‘Effect of a virtual project team
environment on communication-related project risk’, International
Journal of Project Management. Elsevier Ltd, 28(5), pp. 422–427.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Swain,
D. and Lightfoot, J. (2016) ‘A knowledge management framework for
global project development based on Tai Chi principles and
practices’, International Journal of Managing Projects in Business.
Emerald Group Publishing Limited, 9(3), pp. 624–653.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Swartz,
S. and Luck, S. (2018) ‘Virtual Teams: Learning Intercultural
Business Communication by Doing’, Journal of Organizational
Psychology. West Palm Beach: North American Business Press, 18(1),
pp. 42–45.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Thamhain,
H. (2011) ‘Critical Success Factors for Managing
Technology-Intensive Teams in the Global Enterprise’, Engineering
Management Journal. Taylor & Francis, 23(3), pp. 30–36.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Zuofa,
T. and Ochieng, E. (2017) ‘Working separately but together:
appraising virtual project team challenges’, Team Performance
Management: An International Journal. Emerald Publishing Limited,
23(5/6), pp. 227–242.</span></span></div>
<h2 class="western" style="text-align: justify;">
<a href="https://www.blogger.com/null" name="__RefHeading___Toc32105_525094188"></a><a href="https://www.blogger.com/null" name="_7zev5kuik2q2"></a>
Group Dynamics</h2>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Maznevski,
M. and Chudoba, K. (2000) ‘Bridging Space Over Time: Global Virtual
Team Dynamics and Effectiveness’, Organization Science, 11(5), pp.
473–492.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Bushe,
G. and Coetzer, G. (2007) ‘Group Development and Team
Effectiveness: Using Cognitive Representations to Measure Group
Development and Predict Task Performance and Group Viability’, The
Journal of Applied Behavioral Science. London, England: Sage
Publications, 43(2), pp. 184–212.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Byrd,
J. and Luthy, M. (2008) ‘IMPROVING GROUP DYNAMICS: CREATING A TEAM
CHARTER’, Allied Academies International Conference. Academy of
Educational Leadership. Proceedings. Arden: Jordan Whitney
Enterprises, Inc, 13(2), p. 17. </span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Cascio,
W. and Shurygailo, S. (2003) ‘E-Leadership and Virtual Teams’,
Organizational Dynamics. Elsevier Inc, 31(4), pp. 362–376.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Caya,
O., Mortensen, M. and Pinsonneault, A. (2013) ‘Virtual teams
demystified: an integrative framework for understanding virtual
teams.’, International Journal of e-Collaboration. IGI Global,
9(2), pp. 1–33.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span lang="en-GB"><span style="font-weight: normal;">Dani,
S., Burns, N., Backhouse and C. Kochhar, A. (2006) ‘The
Implications of Organizational Culture and Trust in the Working of
Virtual Teams’, Proceedings of the Institution of Mechanical
Engineers, Part B: Journal of Engineering Manufacture. London,
England: SAGE Publications, 220(6), pp. 951–960.</span></span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span lang="en-GB"><span style="font-weight: normal;">Eubanks,
D., Palanski, M., Olabisi, J., Joinson and A. Dove, J. (2016) ‘Team
dynamics in virtual, partially distributed teams: Optimal role
fulfillment’, Computers in Human Behavior. Elsevier Ltd, 61(C), pp.
556–568.</span></span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Ferreira,
P. , Lima, E. and Da Costa, S. (2012) ‘Perception of virtual team’s
performance: A multinational exercise’, International Journal of
Production Economics. Elsevier B.V, 140(1), pp. 416–430.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Ford,
R., Piccolo, R. and Ford, L. (2017) ‘Strategies for building
effective virtual teams: Trust is key’, Business Horizons. Elsevier
Inc, 60(1), pp. 25–34.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Han,
S., Chae, C., Macko, P., Park, W. and Beyerlein, M. (2017) ‘How
virtual team leaders cope with creativity challenges’, European
Journal of Training and Development. Emerald Publishing Limited,
41(3), pp. 261–276.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Han,
S. and Beyerlein, M. (2016) ‘Framing the Effects of Multinational
Cultural Diversity on Virtual Team Processes’, Small Group
Research. Los Angeles, CA: SAGE Publications, 47(4), pp. 351–383.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Holton,
J. (2001) ‘Building trust and collaboration in a virtual team’,
Team Performance Management: An International Journal. MCB UP Ltd,
7(3/4), pp. 36–47.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Kennedy,
D. Sommer, S. and Nguyen, P. (2017) ‘Optimizing multi-team system
behaviors: Insights from modeling team communication’, European
Journal of Operational Research. Elsevier B.V, 258(1), pp. 264–278.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Jaakson,
K., Reino, A. and Mcclenaghan, P. B. (2019) ‘The space between –
linking trust with individual and team performance in virtual teams’,
Team Performance Management: An International Journal. Emerald
Publishing Limited, 25(1/2), pp. 30–46.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
‘<span style="font-size: x-small;"><span style="font-weight: normal;">Laborious
but Elaborate: The Benefits of Really Studying Team Dynamics.’
(2019) Frontiers in Psychology. Frontiers Research Foundation, 10, p.
1478.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Lurey,
J. and Raisinghani, M. (2001) ‘An empirical study of best practices
in virtual teams’, Information & Management. Elsevier B.V,
38(8), pp. 523–544.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Ocker,
R., Huang, H., Benbunan-Fich, R. and Hiltz, S. (2011) ‘Leadership
Dynamics in Partially Distributed Teams: an Exploratory Study of the
Effects of Configuration and Distance’, Group Decision and
Negotiation. Dordrecht: Springer Netherlands, 20(3), pp. 273–292.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Paul,
R., Drake, J. and Liang, H. (2016) ‘Global Virtual Team
Performance: The Effect of Coordination Effectiveness, Trust, and
Team Cohesion’, IEEE Transactions on Professional Communication.
IEEE, 59(3), pp. 186–202.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Pauleen,
D. (2003) ‘An Inductively Derived Model of Leader-Initiated
Relationship Building with Virtual Team Members’, Journal of
Management Information Systems. Routledge, 20(3), pp. 227–256.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Privman,
R., Hiltz, S. and Wang, Y. (2013) ‘In-Group (Us) versus Out-Group
(Them) Dynamics and Effectiveness in Partially Distributed Teams’,
IEEE Transactions on Professional Communication. IEEE, 56(1), pp.
33–49.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Warkentin,
M. and Beranek, P. (1999) ‘Training to improve virtual team
communication’, Information Systems Journal. Oxford, UK: Blackwell
Science Ltd, 9(4), pp. 271–289. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span lang="en-GB"><span style="font-weight: normal;">Whatley,
L. (2012) ‘Individual "States" Model for Healthy Group
Dynamics’, Organization Development Journal. Chesterland:
International Society for Organization Development, Inc., 30(3), pp.
40–53. </span></span></span><span style="font-size: x-small;"><span lang="en-GB"><span style="font-weight: normal;"></span></span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Ziek,
P. and Smulowitz, S. (2014) ‘The impact of emergent virtual
leadership competencies on team effectiveness’, Leadership &
Organization Development Journal. Emerald Group Publishing Limited,
35(2), pp. 106–120.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Zigurs,
I. (2003) ‘Leadership in Virtual Teams:: Oxymoron or Opportunity?’,
Organizational Dynamics. Elsevier Inc, 31(4), pp. 339–351.</span></span></div>
<h2 class="western" style="text-align: justify;">
<a href="https://www.blogger.com/null" name="__RefHeading___Toc32107_525094188"></a><a href="https://www.blogger.com/null" name="_5ywfrheeajg7"></a>
Communication</h2>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Anders,
A. and Cardon, P. (2016) ‘Team Communication Platforms and
Emergent Social Collaboration Practices’, International Journal of
Business Communication. Los Angeles, CA: SAGE Publications, 53(2),
pp. 224–261.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Bano,
M., Zowghi, D. and Sarkissian, N. (2016) ‘Empirical study of
communication structures and barriers in geographically distributed
teams’, IET Software, 10(5), pp. 147–153.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Bowman,
J. and Targowski, A. (1987) ‘Modeling the Communication Process:
The Map is Not the Territory’, Journal of Business Communication.
Thousand Oaks, CA: Sage Publications, 24(4), pp. 21–34.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Butchibabu,
A., Sparano-Huiban, C., Sonenberg, L. and Shah, J. (2016) ‘Implicit
Coordination Strategies for Effective Team Communication’, Human
Factors: The Journal of Human Factors and Ergonomics Society. Los
Angeles, CA: SAGE Publications, 58(4), pp. 595–610.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Cardon,
P. and Marshall, B. (2015) ‘The Hype and Reality of Social Media
Use for Work Collaboration and Team Communication’, International
Journal of Business Communication. Los Angeles, CA: SAGE
Publications, 52(3), pp. 273–293.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Cash,
P., Dekoninck, E. and Ahmed-Kristensen, S. (2017) ‘Supporting the
development of shared understanding in distributed design teams’,
Journal of Engineering Design. Taylor & Francis, 28(3), pp.
147–170.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Chen,
N. et al. (2019) ‘An Analytical Framework for Modeling, Analysis,
and Improvement of Team Communication and Collaboration Process in
Primary Care Clinics’, IEEE Transactions on Automation Science and
Engineering. IEEE, 16(3), pp. 1148–1162.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Cheshin,
A., Kim, Y., Bos, D., Ning, N. and Olson, J. (2013) ‘Emergence of
Differing Electronic Communication Norms Within Partially Distributed
Teams’, Journal of Personnel Psychology. Hogrefe Publishing, 12(1),
pp. 7–21.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Chong,
D., ; Eerde, W., Rutte, Christel, G. and Chai, K. (2012) ‘Bringing
Employees Closer: The Effect of Proximity on Communication When Teams
Function under Time Pressure’, Journal of Product Innovation
Management, 29(2), pp. 205–215.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Condit,
C. (2000) ‘Culture and biology in human communication: Toward a
multi-causal model’, Communication Education. Taylor & Francis
Group, 49(1), pp. 7–24.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Defranco,
J. and Laplante, P. (2017) ‘Review and Analysis of Software
Development Team Communication Research’, IEEE Transactions on
Professional Communication. IEEE, 60(2), pp. 165–182. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Eisenberg,
J., Post, C. and Ditomaso, N. (2019) ‘Team Dispersion and
Performance: The Role of Team Communication and Transformational
Leadership’, Small Group Research. Los Angeles, CA: SAGE
Publications, 50(3), pp. 348–380.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Espevik,
R., Johnsen, B. H. and Eid, J. (2011) ‘Communication and
Performance in Co-Located and Distributed Teams: An Issue of Shared
Mental Models of Team Members?’, Military Psychology. Taylor &
Francis Group, 23(6), pp. 616–638. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Fischer,
U. and Mosier, K. (2014) ‘The Impact of Communication Delay and
Medium on Team Performance and Communication in Distributed Teams’,
in Proceedings of the Human Factors and Ergonomics Society Annual
Meeting. Los Angeles, CA: SAGE Publications, pp. 115–119.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Fischer,
U. and Mosier, K. (2015) ‘Communication Protocols to Support
Collaboration in Distributed Teams Under Asynchronous Conditions’,
in Proceedings of the Human Factors and Ergonomics Society Annual
Meeting. Los Angeles, CA: SAGE Publications, pp. 1–5. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Gajendran,
R.and Joshi, A. (2012) ‘Innovation in Globally Distributed Teams:
The Role of LMX, Communication Frequency, and Member Influence on
Team Decisions’, Journal of Applied Psychology. American
Psychological Association, 97(6), pp. 1252–1261.</span></span></div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Gervits,
F., Eberhard, K. and Scheutz, M. (2016) ‘Team Communication as a
Collaborative Process.’, Frontiers in Robotics and AI. Frontiers
Research Foundation, 3. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Giuffrida,
R. and Dittrich, Y. (2015) ‘A conceptual framework to study the
role of communication through social software for coordination in
globally-distributed software teams’, Information and Software
Technology. Elsevier B.V, 63, pp. 11–30.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Gorman,
J., Hessler, E., Amazeen, P., Cooke, N. and Shope, S. (2012)
‘Dynamical analysis in real time: detecting perturbations to team
communication’, Ergonomics. Taylor & Francis, 55(8), pp.
825–839. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Hedman-Phillips,
E. and Barge, J. (2017) ‘Facilitating Team Reflexivity About
Communication’, Small Group Research. Los Angeles, CA: SAGE
Publications, 48(3), pp. 255–287.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Kaye,
M. and Gilpin, A. (1998) ‘Successful organisational teams: Theory
and practice from an adult communication management perspective’,
Journal of Communication Management, 2(4), pp. 305–319.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Kim,
A., Lee, S., Park, J., Kang, H. and Seong, P. (2013) ‘Correlation
analysis between team communication characteristics and frequency of
inappropriate communications’, Annals of Nuclear Energy. Elsevier
Ltd, 58, pp. 80–89.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Lee-Kelley,
L. and Sankey, T. (2008) ‘Global virtual teams for value creation
and project success: A case study’, International Journal of
Project Management. Elsevier Ltd, 26(1), pp. 51–62.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Malhotra,
A. and Majchrzak, A. (2014) ‘Enhancing performance of
geographically distributed teams through targeted use of information
and communication technologies’, Human Relations. London, England:
SAGE Publications, 67(4), pp. 389–411. </span></span>
</div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Marlow,
S., Lacerenza, C., Paoletti, J., Burke, C. and Salas, E. (2018) ‘Does
team communication represent a one-size-fits-all approach?: A
meta-analysis of team communication and performance’,
Organizational Behavior and Human Decision Processes. Elsevier Inc,
144, pp. 145–170.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Mccomb,
S., Schroeder, A., Kennedy, D. and Vozdolska, R. (2012) ‘The five
Ws of team communication.’, Industrial Management. Institute of
Industrial Engineers, Inc. (IIE), 54(5), pp. 10–13,5.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Mohorek,
M. and Webb, T. (2015) ‘Establishing a Conceptual Framework for
Handoffs Using Communication Theory’, Journal of Surgical
Education. Elsevier Inc, 72(3), pp. 402–409.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Nematzadeh,
A., Ciampaglia, G., Ahn, Y. and Flammini, A. (2019) ‘Information
overload in group communication: from conversation to cacophony in
the Twitch chat’, Royal Society Open Science. The Royal Society,
6(10), p. 191412.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Nonose,
K., Kanno, T. and Furuta, K. (2015) ‘An evaluation method of team
communication based on a task flow analysis’, Cognition, Technology
& Work. London: Springer London, 17(4), pp. 607–618.</span></span></div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Philip
Ball (2015) ‘Information theory: Knowledge and know-how’, Nature.
Nature Publishing Group, 521(7553), pp. 420–421.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Pinto,
M. and Pinto, J. (1990) ‘Project team communication and
cross-functional cooperation in new program development’, The
Journal of Product Innovation Management. Elsevier Inc, 7(3), pp.
200–212.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Reed,
A. and Knight, L. (2010) ‘Effect of a virtual project team
environment on communication-related project risk’, International
Journal of Project Management. Elsevier Ltd, 28(5), pp. 422–427.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Stryker,
J. , Santoro, M. and Farris, G. (2012) ‘Creating Collaboration
Opportunity: Designing the Physical Workplace to Promote High-Tech
Team Communication’, IEEE Transactions on Engineering Management.
IEEE, 59(4), pp. 609–620.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Srikanth,
K. and Puranam, P. (2011) ‘INTEGRATING DISTRIBUTED WORK: COMPARING
TASK DESIGN, COMMUNICATION, AND TACIT COORDINATION MECHANISMS’,
Strategic Management Journal. John Wiley & Sons, 32(8), pp.
849–875.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Targowski,
A. and Bowman, J. (1988) ‘The Layer-Based, Pragmatic Model of the
Communication Process’, Journal of Business Communication. Thousand
Oaks, CA: Sage Publications, 25(1), pp. 5–24.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Tiferes,
J. and Bisantz, A. (2018) ‘The impact of team characteristics and
context on team communication: An integrative literature review’,
Applied Ergonomics. Elsevier Ltd, 68, pp. 146–159.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Pamela
J. and Mortensen, M. (2015) ‘Understanding Conflict in
Geographically Distributed Teams: The Moderating Effects of Shared
Identity, Shared Context, and Spontaneous Communication’ (2005)
Organization Science, 16(3), pp. 290–307.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Valls,
V., González‐Romá, V. and Tomás, I. (2016) ‘Linking
educational diversity and team performance: Team communication
quality and innovation team climate matter’, Journal of
Occupational and Organizational Psychology, 89(4), pp. 751–771.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Walker,
R. , Cardon, P. and Aritz, J. (2018) ‘Enhancing Global Virtual
Small Group Communication Skills’, Journal of Intercultural
Communication Research. Routledge, 47(5), pp. 421–433.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Willis,
J. (2010) ‘Communications Management in Partially Distributed
Teams’, IFAC Proceedings Volumes, 43(25), pp. 117–122.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Wang,
Y., Zhang, Q., Zhu, C., Hu, M. and Duong, V. (2016) ‘Human
activity under high pressure: A case study on fluctuation scaling of
air traffic controller's communication behaviors’, Physica A:
Statistical Mechanics and its Applications. Elsevier B.V., 441.</span></span></div>
<div class="western" style="font-weight: normal; margin-bottom: 0cm; text-align: justify;">
<br />
</div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Xiao,
L. and Huang, D. (2016) ‘Between-team communication in the
intercultural context’, Information, Communication & Society.
Routledge, 19(7), pp. 940–955.</span></span></div>
<div class="western" style="margin-bottom: 0cm; text-align: justify;">
<span style="font-size: x-small;"><span style="font-weight: normal;">Ziek,
P. and Anderson, J. D. (2015) ‘Communication, dialogue and project
management’, International Journal of Managing Projects in
Business. Emerald Group Publishing Limited, 8(4), pp. 788–803.</span></span></div>
<div style="text-align: justify;"><style type="text/css">
h2 { margin-top: 0.64cm; margin-bottom: 0.21cm; direction: ltr; color: #000000; line-height: 100%; text-align: left; page-break-inside: avoid; orphans: 2; widows: 2; background: transparent; page-break-after: avoid }
h2.western { font-family: "Arial", serif; font-size: 16pt; so-language: en-GB }
h2.cjk { font-family: "Arial"; font-size: 16pt; so-language: zh-CN }
h2.ctl { font-family: "Arial"; font-size: 16pt; so-language: hi-IN }
h1 { margin-top: 0.71cm; margin-bottom: 0.21cm; direction: ltr; color: #000000; line-height: 100%; text-align: left; page-break-inside: avoid; orphans: 2; widows: 2; background: transparent; page-break-after: avoid }
h1.western { font-family: "Arial", serif; font-size: 20pt; so-language: en-GB }
h1.cjk { font-family: "Arial"; font-size: 20pt; so-language: zh-CN }
h1.ctl { font-family: "Arial"; font-size: 20pt; so-language: hi-IN }
p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 115%; text-align: left; orphans: 2; widows: 2; background: transparent }
p.western { font-family: "Arial", serif; font-size: 11pt; so-language: en-GB }
p.cjk { font-family: "Arial"; font-size: 11pt; so-language: zh-CN }
p.ctl { font-family: "Arial"; font-size: 11pt; so-language: hi-IN }
a:link { color: #000080; text-decoration: underline }</style><br /></div>
Jeremyhttp://www.blogger.com/profile/03884508382432876772noreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-50669165879186145782013-11-23T16:58:00.000-08:002013-12-04T09:39:43.840-08:00Open plan offices are killing your people (which is the company btw)<div dir="ltr" id="docs-internal-guid-44c551b7-878f-dea1-b0ec-ff942022800b" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVV8kgVg17sNtQm5Qcmn8cr6bqEnOc6CwldaL1M1jj_AASvMtMnHmE8sfCn5edt5jCOoZrG-TCekOgcsFL3MGLiL6zAgCo1Bbg1t0x98WhyphenhyphenK0dX_uU3munrfRSPHqd45ICHJzKnfIx354/s1600/Florida_chicken_house.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVV8kgVg17sNtQm5Qcmn8cr6bqEnOc6CwldaL1M1jj_AASvMtMnHmE8sfCn5edt5jCOoZrG-TCekOgcsFL3MGLiL6zAgCo1Bbg1t0x98WhyphenhyphenK0dX_uU3munrfRSPHqd45ICHJzKnfIx354/s1600/Florida_chicken_house.jpg" height="218" width="320" /></a></div>
<br />
<br />
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I’m happy to see lots of people supporting and stating the obvious about this topic. Though I thought I’d add my 2c to the demise of this all to common evil of open offices.</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">They are typically favoured by individuals who like to interrupt others, and also by those who look to short term visible costs. Open offices are likely the single biggest cause in companies of:</span></div>
<br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The lost of human happiness</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The lost of team/individual effectiveness </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The lack of success of companies and projects </span></div>
</li>
</ol>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I rank them in that order for importance as well, as that’s the order I’ve typically experienced them being absent in successful projects. I believe the mental state of the members of the team, and the collective teams health is a core (if not </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">the</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> primary) factor in successful outcomes.</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">It’s good to see the academic community supporting (with research) what many have felt and known to be true for so long </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 9px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: super;">[1]</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">,</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I’ve spent many years in different office environments, when I haven’t had the luxury of working from home (where I’m most productive, by far) so have experienced a range of the options. I’ve turned down several </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">very</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> senior positions throughout my career, and common factor in each one was the company had - and actually supported the use of - open plan offices. </span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">While hard to quantify, I wonder how many companies looking for good people are making them run for the hills as soon as they see the work environment. </span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">So lets debunk the common arguments I’ve heard for open plan offices:</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The arguments I've seen for them:</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">They increase interaction </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">They promote an open culture in the company</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">They are cheaper</span></div>
</li>
</ol>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">1. Increase of interaction</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Lets start with the research :</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">"</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Our results categorically contradict the industry-accepted wisdom that open-plan layout enhances communication between colleagues and improves occupants' overall work environmental satisfaction</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">," the researchers concluded </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 9px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: super;">[2]</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">While we are social creatures, we need our own space and to not feel the need to constantly defend it. If we are busy defending, we can’t relax and get on with focusing on what we are supposed to be doing. Books like "Quite: The power of Introverts in a World That Can't Stop Talking" is a good read for this, for the introverts amongst us.</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The common perception of interaction is </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">physical</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> interaction, people talking to each other. But more common and less visually detectable is digital interaction. Given the technological connections that have been present for many years, having a number of gChats going, Skype open, ninchat, etc is not uncommon.</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Personally this is a large part of how I work, and it’s very good interaction, it has two main benefits. Firstly I can set a status of DnD (Do not Disturb) to communicate to others I’m focusing or in </span><a href="http://www.jeremyhutchings.com/2011/01/what-is-hackmode-flow-zone.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">flow</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, the other visual clue if I’m in an office is wearing headphones. Secondly I can just logout to manage individuals who can’t manage their own boundaries or respect others (see </span><a href="http://en.wikipedia.org/wiki/Extraversion_and_introversion#Extraversion" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">extrovert</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> ...).</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">2. The promote an open culture in the company</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Far from it, they actually decreases healthy interaction by increasing defensiveness between individuals, along with stress & resentment of having to tolerate the environment. </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">There are a bunch of links at the bottom that cover this topic, so I’ll not cover that aspect in this blog post.</span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">3. They are cheaper </span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">My first thought it is “</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">define cheaper</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">” … personally I think longer term and a bigger picture than a few months. Though what is typically meant by HR and logistical people, is you can get more people in per square foot. Much the same way industrial farming abuses animals … and look how that turns out for quality and happiness. </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I would estimate from personal experience I’m around 50% less productive in an open plan office (and that’s being <i>really</i> generous). Even with the argument of “You do pretty well, what are you complaining about” it’s worth remembering that this isn’t about what a person produces, it’s about the difference in what they can do in a good environment vs a bad one.</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">a.k.a. “</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">If you think I’m good now, you should see me when I’m able to concentrate…..</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">”</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">So using the 50% experienced-thumb-in-the-air rule, lets see what happens with 10 people in an office. I’m going to go from personal experience relative to the Vancouver, BC market, and using </span><a href="http://www.payscale.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">www.payscale.com</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">. The median pay (for the whole team) is $55,000 for a technically focused company. Being roughly half a million just on salary (before employer costs).</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">$250,000 a year down the drain. </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">$10,000 extra a month to move to an office with some offices and good ergonomics (and people working from home if they want) and you actually end up saving $130,000 a year and have much happier people. </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Also, I don’t believe people can operate at 100% all the time, or that that should. Taking a break and some time to check out lolcats before the next task is important (mandatory I believe…..).</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><br class="kix-line-break" />Talking of happier people, I’ve not factored in sick leave and attrition due to poor environment as well. Even having to call the days people take off to be able to tolerate a typical work environment “mental health days” should tell you something.</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">So no, open plan offices are not cheaper, at all.</span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">So what to do</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">As with just about all things in life, it’s about balance. I’m not advocating silent corridors of closed doors, as that is absurd as the open plan office are in the first place. It’s just the other end of the spectrum.</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">As Gensler’s survey</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 9px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: super;">[3]</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> mentions :</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">“</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">It takes collaboration to quickly move ideas in a competitive knowledge economy. Fluidly shifting between focus and collaboration is how work flows today.</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">“</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">They use the term “</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">balanced workplace</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">” which is the key, you need both sides of the coin. How you achieve that is the trick. </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Achieving that means looking at all the dynamics and interactions, just because people aren't physically talking doesn't mean they aren’t interacting and communicating. </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I communicate with my team </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">a lot</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> though </span><a href="http://www.github.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">www.github.com</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> and Skype, as it has more context, is more convenient and ultimately is more respectful of their choice to be focused or opt in to communicating. Also when I forget something I don't have to ask again, I go and search. Though I enjoy collaborate meetings and time around the whiteboard solving problems just as much, but there is a time and place for both.</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I appreciate this is an alien concept to individuals who thrive on personal interaction, and attempt to undermine - inadvertently for the most part - introverts abilities to focus as they think they are being rude or ignoring them. I’ve lost count of the times I’ve explained to sales people how jarring it is for a developer being pulled out of </span><a href="http://www.jeremyhutchings.com/2011/01/what-is-hackmode-flow-zone.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">flow</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> for a question that could of waited. </span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I believe a mixture of areas in a work environment is ideal. </span><br />
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">So there can be the library quiet areas where people can focus and the interrupters have to respect that. The flip side being is that people can’t hide in there all day! In the absence of being able to do that in a physical way (separate spaces), have periods of the day that are for focus work, and others that are for social. Enforcing that will seem draconian and unnatural to begin with, though it will evolve over time to something that works for all. The initial effort is just to correct the balance.</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">For all the individuals who are harbouring the thoughts of “if I can’t see them how do I know they are working”. Firstly, get some therapy for trust issues …….. secondly if that is the case your hiring criteria is the issue, and ultimately it’s about the outcome and quality of their work. Not that they are treated like battery hens on a clock under a watchful eye. </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The members of my team could be on the moon, in their </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">pyjamas working at 3am if they like …. if that’s what works for them, when they need to focus to get things done - awesome - I'm happy they figure out their formula for getting things done.</span><br />
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">And when the time calls we communicate as a group as we need to, when we need to.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><br /></span>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I say:</span></div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Hire professionals, describe the challenge and direction, then trust them, get out of their way and focus on facilitating and support the outcome of the project. Being mindful of their environment physically and digitally while working is part of the facilitation balance.</span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Getting this right is the balance I think is key, try to focus on and promote.</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Cheers</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://twitter.com/#%21/jeremyhutchings" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">@JeremyHutchings</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">----------------------------</span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">You don’t have to look far to get the information and research to argue against anyone who tries to cast you into the open …….</span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">[1] Workspace satisfaction: The privacy-communication trade-off in open-plan offices</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.sciencedirect.com/science/article/pii/S0272494413000340" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">http://www.sciencedirect.com/science/article/pii/S0272494413000340</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">[2] Privacy and Communication in an Open-Plan Office -A Case Study</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://eab.sagepub.com/content/14/3/379.abstract?ijkey=a4bd32e9ad2d0a3258b9a0efe80ff2b1695e6f14&keytype2=tf_ipsecsha" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">http://eab.sagepub.com/content/14/3/379.abstract?ijkey=a4bd32e9ad2d0a3258b9a0efe80ff2b1695e6f14&keytype2=tf_ipsecsha</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">[3] Gensler's 2013 Workplace Survey: Balance in Any Environment</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.gensleron.com/work/2013/7/22/genslers-2013-workplace-survey-balance-in-any-environment.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">http://www.gensleron.com/work/2013/7/22/genslers-2013-workplace-survey-balance-in-any-environment.html</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The supposed benefits of open-plan offices do not outweigh the costs</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://bps-research-digest.blogspot.ca/2013/08/the-supposed-benefits-of-open-plan.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">http://bps-research-digest.blogspot.ca/2013/08/the-supposed-benefits-of-open-plan.html</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Rubbish, chatter, squatters: The open office dark side</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.bbc.com/capital/story/20130917-the-dark-side-of-open-offices" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">http://www.bbc.com/capital/story/20130917-the-dark-side-of-open-offices</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">24 Reasons Your Open-Plan Office Sucks</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.buzzfeed.com/awesomer/your-open-plan-office-sucks" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">http://www.buzzfeed.com/awesomer/your-open-plan-office-sucks</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Sick Building Syndrome</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://en.wikipedia.org/wiki/Sick_building_syndrome" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">http://en.wikipedia.org/wiki/Sick_building_syndrome</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
<br />
<span style="font-size: x-small;">Images from : <a href="http://en.wikipedia.org/wiki/File:Florida_chicken_house.jpg">http://en.wikipedia.org/wiki/File:Florida_chicken_house.jpg</a> </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span>Jeremyhttp://www.blogger.com/profile/03884508382432876772noreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-9407048989345942512011-08-07T15:13:00.000-07:002011-08-07T15:13:29.217-07:00All that glitters isn't Drupal : CMS vs FrameworkWhile I'm using Drupal on some projects as an example, I'm not singling Drupal out for criticism for the sake of it, and not ignorantly either as it's the CMS I have most production project experience with (opposed to vBulletin, though when I worked creating that, it was a forum - and not trying to be anything else).<br />
<br />
The purpose of this post has to do with my thoughts on : Choosing the right tool (and starting point) for the job.<br />
<br />
Knowing not only why, but that you have done so, as no project or pieces of software is ever "done" till two things happen. Firstly when it's stopped being worked on, and then it will last as long as it is robust, and secondly when the server is turned off.<br />
<br />
Everything from conception up to the first stage is "the development of a software system", releasing it or putting it on a server is just one part of that, typically when customers (hopefully turn up and) need supporting. It's also usually at this point that if you have community engagement and it's manage that your system can be lead and developed for the needs of the community that want and use it. Release too early and you wont have enough of a vision or direction, too late and you'll of cut off all kinds of possible user input. Also someone else might of beat you to market.<br />
<br />
So what does this have to do with a CMS like Drupal and a Framework ? <br />
<br />
Much the same difference that buying Ikea furniture has with buying precut wood and understanding the tools. As always there is a time and place for both, though two typical things happen when you have a CMS build vs a framework build.<br />
<br />
First ....... explosive module bloat. I can't remember the number of times I heard the conversation :<br />
<br />
"Oh I just want to do this one simple thing"<br />
"It's OK I know of one module that does that, though you need five other to support it, but hey that's OK".<br />
<br />
A few weeks later you have two hundred SQL queries per page load and 70 modules, just for an original request of one simple feature. Given that it's very likely that you're relying on 3rd party modules, you are now at the mercy of the erratic OSS winds for the up keep of the module(s).<br />
<br />
Typically you'll never get the exact behaviour you want as any generic module is built to what ever the requirements were at the time the author write them, so likely a compromise to what ever it is you need now.<br />
<br />
The typical approach I've seen to this in the vast majority of Drupal projects is "Time to do some integration work" ....... also known as ....... "Just keep hacking it till it seems to work" i.e open window throw out quality and stability and upgrade path, close window.<br />
<br />
When this approach inevitably grinds to a halt you end up seeing the "Need a rock star Drupal developer for final 10% of project" posts on job boards. At this point you know it's a spaghetti nightmare ....... the irony of why not get a "rock solid engineer" to begin with is never lost on me.<br />
<br />
Second thing is maintenance, or full life cycle support. i.e. once you get to market and have to care for and evolve the system, you can't. You're so hacked into a corner the technical debt overwhelms anything you can do against it. This is typically where inept management will start to blame developers for their choices when faced with the symptoms of a system in crisis.<br />
<br />
-----------------------------------------------------<br />
<br />
So what goes wrong ? <br />
<br />
1) Due diligence<br />
<br />
A software system as we've seen is a journey. Even with my recent encounters with the games industry and individuals claiming something is "done" and should be launched, it's not, there will be patches and updates. They are just trying to minimise the latter and try to paint it as failure opposed to understanding that it's part of the process.<br />
<br />
Obviously embedded systems in medical equipment (as an example) is a different story, though it's very much the process and understanding which is present that achieves that level of quality, so actually supports my argument.<br />
<br />
So ensuring that you (as a client) know what the options are, or as a developer are skilled enough to communicate that to a client is essential. If you aren't go work for someone who is, and learn from them.<br />
<br />
Are you building a product or site to depend upon or a site for a weekend event that is going to be decommissioned in a few days. One needs good foundations and the other needs speed. Understand that rapid prototyping is just that, prototyping, it's done for learning (as is the blend of development by exploration) not delivery.<br />
<br />
Typically what happens is that speed is chosen and high quality is assumed, opposed to the reality which is the other way around.<br />
<br />
Speed in this context is the wrong word as well - it should be velocity as that has a direction which is important and it encompasses the vision of an outcome as well as time.<br />
<br />
Answer - Don't just do something - think first - where is this going and what does it have to do.<br />
<br />
<br />
2) Been told vs choosing<br />
<br />
Requirements and understanding of the problem, then the tools not the other way around. I've met with teams that seems to think that there is a one word answer to every project (i.e. Drupal). Open blog site ? Drupal ...... image upload site ? Drupal ...... hot metal device for flattening my freshly cleaned clothes ..... you guessed it, Drupal.<br />
<br />
Fanaticism leads to blindness, not just in politics and religion, but in engineering as well.<br />
<br />
Answer - Realise you're in a very diverse world, and that's a good thing. There is no one answer to everything how ever hard you want it to be, as every situation is different. <br />
<br />
-----------------------------------------------------<br />
<br />
When to use one over the other ?<br />
<br />
By taking the time to understand, how well do you know what it is that you want to achieved, what are your time scales and will this every have to be maintained.<br />
<br />
Given the 80/20 rule applies to most software projects using something like Drupal do do 100%, getting the 80% done quickly and then hacking yourself into a corner to get the last 20% isn't worth it ....... given that you can do the 20% with a half decent frame work anyway.<br />
<br />
<br />
<br />
Cheers<br />
<a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a><br />
<br />
<br />
<br />
Other reading : <br />
<br />
<a href="http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html">http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html</a><br />
<br />
<a href="http://stackoverflow.com/questions/905232/framework-or-cms">http://stackoverflow.com/questions/905232/framework-or-cms</a><br />
<br />
<a href="http://www.sitepoint.com/forums/showthread.php?t=643367">http://www.sitepoint.com/forums/showthread.php?t=643367</a><br />
<br />
<a href="http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP">http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP</a><br />
<a href="http://www.blogger.com/goog_593444463"><br />
</a><br />
<a href="http://en.wikipedia.org/wiki/Web_application_framework">http://en.wikipedia.org/wiki/Web_application_framework</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-88967399682731880.post-74609166543523094302011-03-03T20:10:00.000-08:002011-03-03T20:11:41.667-08:00How to create SugarCRM graphs<h2>Creating New Sugar CRM Graphs</h2><br />
I've recently been working on a project that required some custom chart additions to SugarCRM. At time of writing the project is using the Community Edition, which according to wikipedia has 85%~ of the code base that the Professional and Enterprise editions do.<br />
<br />
I think I'll have to side with Dan Farber from CNET with concerns over how SugarCRM uses the term Open Source - it's not really. Especially considering that I'm working with the charts module, which is one of the main pieces which has been removed from the AGPLv3 license in Sugar 6 (the latest edition).<br />
<br />
While being hindered by a lack of documentation and examples with regard to charting, i.e. the main way you view all the data in your system, I've had to reverse engineer the system that is being used. This would appear to be common in various areas of CE, i.e. it's entry point bait that gets you going on a project - then you realise you need Pro or Enterprise - to deliver on the project.<br />
<br />
Make sure you have all the functionality asses before you start on a project with this, and if you can't find how to do something in less that two minuets, assume it can't be done.<br />
<br />
I think a better route would of been to use something like CodeIgnighter and jpGraph and build a custom reporting interface. Opposed to using the limitations of the Flash graph player that is offered by default. Then again if your off down that route you're already - outside of the bounds of the system - you should be looking at the whole project and what fits best, as it might not be SugarCRM at all.<br />
<br />
Though this blog is about explaining how the parts I understand interact, and then how to work with what is there.<br />
<br />
<h2>Overview</h2><br />
SugarCRM uses the concept of modules, and modules can have "Dashlets" which is what you can see and interact with on your Dashboard. For this example we'll be in the directory :<br />
<br />
/var/www/modules/Charts/Dashlets<br />
<br />
Fairly self explanatory so far - the dashlets directory for the charts module.<br />
<br />
There are several predefined ones in there. <br />
<br />
Ultimately the Chart Dashlet is a Flash player that is given the URL to a PHP generated XML file, which then renders it as the graph you see.<br />
<br />
The files in a Dashlet folder are named as per the folder and class name (as that's how Sugar finds and loads the relevant classes).<br />
<br />
So for our example we'll have :<br />
<br />
/var/www/modules/Charts/Dashlets/AccountsTotal<br />
<br />
A chart to show the total accounts we have per month.<br />
<br />
Inside that directory there are 5 files (yes 5 .....) that make up the data/functions for the chart :<br />
<br />
<ol><li>{name}.data.php</li>
<li>{name}.en_us.lang.php</li>
<li>{name}.meta.php</li>
<li>{name}.php </li>
<li>{name}.tpl</li>
</ol><br />
So for our chart we'll have : <br />
<br />
<ol><li>AccountsTotal.data.php</li>
<li>AccountsTotal.en_us.lang.php</li>
<li>AccountsTotal.meta.php</li>
<li>AccountsTotal.tpl</li>
<li>AccountsTotal.php</li>
</ol><br />
Just copy one of the existing directories and files, and then rename them.<br />
<br />
<br />
<h3>AccountsTotal.data.php</h3>This will contain the search fields for the chart, the popup when you click on edit to choose a date etc. For now just rename the first element of the Array to the class name so Sugar can load it .<br />
<br />
<code>$dashletData['AccountsTotal']['searchFields'] = array(<br />
...<br />
...<br />
);</code><br />
<br />
<h3>AccountsTotal.en_us.lang.php</h3>Same again here, it's just a tokened language file, so rename the key to the class name <br />
<br />
<code>$dashletStrings['AccountsTotal'] = array(<br />
...<br />
...<br />
);</code><br />
<br />
<h3>AccountsTotal.meta.php</h3><br />
The meta file is used (for what we're concerned with) by the Dashlet selector - the pop up where you select what Dashlets you want to add to your Dashboard. If you want to check the options the images are stored in :<br />
<br />
/var/www/themes/default/images/<br />
<br />
i.e. icon_Charts_GroupBy_32.gif<br />
<br />
<h3>AccountsTotal.tpl</h3>The template file you can leave for now, it's the HTML for the configure popup, i.e. where you choose the dates to feed to the graph logic.<br />
<br />
<h3>AccountsTotal.php</h3>This is the main file for the graphs, the C of the MVC world. <br />
<br />
This is a class file that extends the Sugar class of - DashletGenericChart - so rename accordingly.<br />
<br />
<code>class AccountsTotal extends DashletGenericChart </code><br />
<br />
The constructor and displayOptions can be left, and just call the parent methods. The $options that are passed to the constructor are the details that you set in the search fields.<br />
<br />
<code><br />
public function __construct($id, array $options = null) <br />
{<br />
parent::__construct($id,$options);<br />
}<br />
<br />
public function displayOptions()<br />
{<br />
return parent::displayOptions();<br />
}<br />
</code><br />
<br />
The final two methods are the constructQuery() and display(), the query function is just an abstraction for generating the SQL, applying variables from globals or passed in options etc.<br />
<br />
The display method is the main area you need to be concerned with, overriding the parent and adding in all the XML generation, saving then loading of flash player and passing of XML URL.<br />
<br />
There is an include to get the chartDefs, the the actual sugarchart is created and properties set :<br />
<br />
<code><br />
require_once('include/SugarCharts/SugarChart.php');<br />
<br />
$sugarChart = new SugarChart();<br />
<br />
$sugarChart->setProperties(<br />
/* Title */ "My charts title",<br />
/* Subtitle */ "Some relevant sub title",<br />
/* Type */ $chartDef['chartType']<br />
);<br />
</code><br />
<br />
The signature is :<br />
<br />
<b>setProperties($title, $subtitle, $type, $legend = 'on', $labels = 'value', $print = 'on')</b><br />
<br />
There are some defaults of the chat class set in the original, that I've just left :<br />
<br />
<code><br />
$sugarChart->base_url = $chartDef['base_url'];<br />
$sugarChart->group_by = $chartDef['groupBy'];<br />
$sugarChart->url_params = array();<br />
</code><br />
<br />
Now to get the data & construct the XML I have deviated from Sugar, as after decompling the SWF file and going though the XML generation (that is string building opposed to any use of native PHP XML) I found a much easier and quicker route to getting the job done.<br />
<br />
There are also various bugs and inconsistencies around :<br />
<br />
<b>$sugarChart->sortData();</b><br />
<br />
So I didn't use it, I wrote my own XML handler available (<a href="https://github.com/JeremyHutchings/SugarCRM-Chart-XML-generator">here</a>), it constructs the XML using native PHP functions to do so.<br />
<br />
All that remains is to get the data, and sort it, getData() seems to work, so we can use that.<br />
<br />
<b>$sugarChart->getData($this->constructQuery());</b><br />
<br />
This places the data into an array :<br />
<br />
<b>$sugarChart->data_set</b><br />
<br />
All that remains to sort the query data into rawData then use the new XML class to build the desired outcome and then pass it to the usual Sugar methods for saving the XML and returning the HTML to display the Dashlet.<br />
<br />
The final 3 lines of the method do all of that :<br />
<br />
<code><br />
$sugarChart->getXMLFileName(...<br />
$sugarChart->saveXMLFile(...<br />
return $this->getTitle(...<br />
</code><br />
<br />
<br />
As per SugarCRM community killing conventions I have omitted any comments and anything that could be helpful from the source ;)<br />
<br />
And here is the display method :<br />
<br />
<code>public function display() <br />
{<br />
$currency_symbol = $GLOBALS['sugar_config']['default_currency_symbol'];<br />
<br />
if ($GLOBALS['current_user']->getPreference('currency'))<br />
{<br />
require_once('modules/Currencies/Currency.php');<br />
$currency = new Currency();<br />
$currency->retrieve($GLOBALS['current_user']->getPreference('currency'));<br />
$currency_symbol = $currency->symbol;<br />
}<br />
<br />
require("modules/Charts/chartdefs.php");<br />
<br />
$chartDef = $chartDefs['outcome_by_month'];<br />
<br />
require_once('include/SugarCharts/SugarChart.php');<br />
<br />
$sugarChart = new SugarChart();<br />
<br />
$sugarChart->setProperties(<br />
/* Title */ "Total GLA By Month :: {$this->startDate} to {$this->endDate}",<br />
/* Subtitle */ "Month view",<br />
/* Type */ $chartDef['chartType']<br />
);<br />
<br />
$sugarChart->base_url = $chartDef['base_url'];<br />
$sugarChart->group_by = $chartDef['groupBy'];<br />
$sugarChart->url_params = array();<br />
<br />
$sugarChart->getData($this->constructQuery());<br />
<br />
$rawData = array();<br />
$month = array (<br />
1 => 'Jan', 2 => 'Feb', 3 => 'Mar', 4 => 'Apr', 5 => 'May', 6 => 'Jun',<br />
7 => 'Jul', 8 => 'Aug', 9 => 'Sep', 10 => 'Oct', 11 => 'Nov', 12 => 'Dec'<br />
);<br />
<br />
for($i = 1; $i <= 12; $i++)<br />
{<br />
$rawData[$i] = array('title' => $month[$i], 'value' => 0, 'label' => 0);<br />
}<br />
<br />
$value = 0;<br />
<br />
foreach ($sugarChart->data_set AS $id => $details)<br />
{<br />
$value = ($details['total'] > 0 ? $details['total'] : 0);<br />
<br />
$rawData[$details['month']]['value'] = $details['total'];<br />
$rawData[$details['month']]['label'] = $details['total'];<br />
}<br />
<br />
$options['properties'] = array (<br />
'title' => "Accounts By Month", <br />
'subtitle' => 'Months',<br />
'type' => 'bar chart',<br />
'legend' => 'off',<br />
'labels' => 'value'<br />
);<br />
<br />
$options['ystep']= 100;<br />
<br />
$x = new XMLGraph($options);<br />
<br />
if ($value)<br />
{<br />
$total = $this->previousAccountTotal();<br />
<br />
foreach ($rawData AS $monthId => $monthData)<br />
{<br />
$total += $monthData['value'];<br />
<br />
if ($monthData['value'] AND $total)<br />
{<br />
$monthData['value'] = $total;<br />
$monthData['label'] = $total;<br />
} <br />
<br />
$x->addData($monthData);<br />
}<br />
<br />
$testXML = $x->asXML();<br />
}<br />
else<br />
{<br />
$testXML = $x->emptyXML();<br />
}<br />
<br />
$sugarChart->getXMLFileName($this->id);<br />
<br />
$sugarChart->saveXMLFile($xmlFile, $testXML);<br />
<br />
return $this->getTitle('</code><br />
<div align="center"></div>') . '<br />
<div align="center">' . $sugarChart->display($this->id, $xmlFile, '100%', '460', false) . '</div><br />';<br />
}<br />
<br />
<br />
<h4>Conclusion</h4>A messy work around for sure, though gets the job done for the various graph types I've deciphered so far. I'll add more as I do and likely create a whole repo for a default graph.<br />
<br />
As for calling SugarCRM open source ....... it might be stepping on or right up to the line in legal terms - though I don't think it is wholly OSS in the spirit of the movement.<br />
<br />
I hope it decides what camp it is in and announces that sooner rather than later.Unknownnoreply@blogger.com14tag:blogger.com,1999:blog-88967399682731880.post-23176709303001917242011-01-30T16:47:00.000-08:002011-02-03T10:05:00.796-08:00What is :: Hackmode - Flow - The ZoneI've always been interested not only in the specifics of software itself, but also in the method of how software is created, and what surrounds it. That being teams, leadership, management, external factors, business constraints and likely most importantly the <b>sociology and psychology of creation</b>.<br />
<br />
More of a holistic systems view of the whole process I believe. My degree and area of interest is Software Engineering <i>Management</i> so some of the how as well as the what.<br />
<br />
I realised I've found myself explaining the same topic repeatedly to people in a business context (i.e. suits) who don't develop software, but who interact with people who do.<br />
<br />
So I thought it best to just write it up, then I can direct future people I encounter who ask or need to understand it to here. Also share my thoughts and hope to elicit ideas and experience from others, as this topic really interests me.<br />
<br />
The topic is that of the psychology of a developer, when operating a maximum capacity (relative to them). What's it like, how do people get there and what are the good and bad aspects of it.<br />
<br />
Typically I find organisations (mid level managers usually) expect and demand maximum output of developers at all times, in any conditions and with no support. Any failure to achieve this with a (typically) negative or unsupported environment is wholly the developers fault (see my other post on <a href="http://www.jeremyhutchings.com/2009/12/burnout.html">burnout</a> for what happens then !).<br />
<br />
The usual analogy for that situation is a Dickensian work house, where more hours and faster (more frantic speed) should equate to more output.<br />
<br />
Obviously nonsense, though still lots of places like that about, and it's <b>all of our responsibilities </b>to eradicate them.<br />
<br />
<h3> </h3><h3>The Mind Set</h3>The mind set of a developer when at maximum level of creation and development is covered by an area of : <b>Positive Psychology</b>. in particular <b>"Flow"</b>.<br />
<br />
Introduced by <a href="http://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi" title="Mihaly Csikszentmihalyi">Mihály Csíkszentmihályi</a> it is a well accepted description and understanding of the mental state of individuals, who are wholly engaged and passionate about an activity they are doing. There have been many posts on passion in developers being one of the main things, and I agree (we just need to educate recruiters now).<br />
<br />
The wiki page for <a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29">Flow</a> covers a lot of the general aspects of the topic, so I'd like to relate/translate that to software creation and teams. The page does mention professionals and references Hack Mode and The Zone.<br />
<br />
One way that I attempt to explain the state of being in Flow to people who haven't been, or can't understand it in a developers context is to reference <b>Star Trek Generations</b>. While a techie film itself, it's still more likely to have been seen by someone I'm explain to, than them reading psychology just for fun.<br />
<br />
In the movie there is a character, Soran (Dr. Tolian), played by Malcolm McDowell (yes, I know he must be the evil baddie he's English .......) who is attempting to get back into the <b>Nexus</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZiczxn3GgcevQn5jcOlRCEfNjE3NOQWX-iYItyyfcPc7FOJ-UFSWythc1ZoruITWD9Plj50cd1aAVNCoitgJtTF2OY7BmxyxnnNZG4Vbvg6Wbq-x0moj8ovBwhdNrrqrkpxL-hqq602Y/s1600/soran_nexus.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZiczxn3GgcevQn5jcOlRCEfNjE3NOQWX-iYItyyfcPc7FOJ-UFSWythc1ZoruITWD9Plj50cd1aAVNCoitgJtTF2OY7BmxyxnnNZG4Vbvg6Wbq-x0moj8ovBwhdNrrqrkpxL-hqq602Y/s320/soran_nexus.jpg" width="320" /></a></div><br />
The Nexus is described as :<br />
<br />
"The Nexus is an extra dimensional realm in which one's thoughts and desires shape reality."<br />
<br />
by <a href="http://memory-alpha.org/wiki/Nexus">Memory-Alpha.org</a> (which is one of the better descriptions I've heard).<br />
<br />
This is a fairly fanciful analogy I'll admit. Though there are a lot of comparisons of being in an place/zone where everything you can think of just happens, where you laugh at test units and write and re-write swathes of class/functions in moments. Code of pure gold flows from the keyboard etc.<br />
<br />
And it's a true pleasure, not only are you creating at a pace that would make accountants shiver when calculating your hourly rate vs effectiveness.<br />
<br />
Though <b>far</b> <b>far</b> more importantly, you are doing what you enjoy and are feeling the rewards of creativity near instantly. Maslow would likely describe you as in a state of :<b> Self-actualization</b>.<br />
<br />
For me there is no reward, monetary incentive or management manipulation that can either induce this, or surpass the reward of experience itself (though for sure I'll accept a health pay check/equity for it when it does happen !).<br />
<br />
I'm not sure I'd destroy a planet and it's people (as Soran was prepared too), to get back to it on demand, though I'd think about it ........<br />
<br />
Though it raises two very interesting points for me :<br />
<ul><li>How do you get there ? </li>
<li>How do you stay there ?</li>
</ul><h3> </h3><h3>Allowing it to happen</h3>Personally (and in the research I've done) the path must include a level of <b>passion</b> and/or very high engagement. This typically can't be demanded by management or forced onto a person.<br />
<br />
It's much like (my aversion to) the TV self-help demagogues, who are forever telling (<i>prescribing</i> to) people how to live, opposed to the people creating and embodying the answers for themselves.<br />
<br />
In counselling, it's called client centered. Zen and other eastern philiosphys continually talk about the energy and power within, and that's where the source of a lot of this comes from.<br />
<br />
The main thing that management, and more <b><i>suitable</i> team facilitator(s)</b> can do, is <u><b>create and protect the environment to allow the developer(s) to reach this state</b></u>. Once that is in place, communicate the challenge/goal and desired outcome, then stand back and get out of the teams way. Ego is the typical reason this doesn't happen as weak management has to feel "in control". A shame, though a common human failing.<br />
<br />
Attaining Flow is a skill and ability, it comes from engagement, curiosity, the challenge and having the skills to overcome the task.<br />
<br />
Meaning you have to be good enough for the challenge, that you're not battling with your tools. Be that, a programming language, the server configuration, understanding of a protocol etc.<br />
<br />
So the things needed are :<br />
<ul><li>A sufficient challenge, it's engaging and enticing </li>
<li>You have to be "up for it", personal motivation and external encouragement</li>
<li>Have sufficient skills enough "to take it on", and not be over whelmed</li>
</ul><br />
As per the diagram (I grabbed from wikipedia) :<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZv4HuHXJoUeS7e0BBVqIVh6XI7LSlaNHUVMQZnr58_YpmmBLc0W2qF7idXm4rlm2zaBndGywi4PNakP86BPi6F2fCC5ISkpeFw6lJUYpAUon_ZLCxa2Hx6nfdneObxpeS9IQSOAIbbU4/s1600/472px-Challenge_vs_skill.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="311" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZv4HuHXJoUeS7e0BBVqIVh6XI7LSlaNHUVMQZnr58_YpmmBLc0W2qF7idXm4rlm2zaBndGywi4PNakP86BPi6F2fCC5ISkpeFw6lJUYpAUon_ZLCxa2Hx6nfdneObxpeS9IQSOAIbbU4/s320/472px-Challenge_vs_skill.svg.png" width="320" /></a></div><br />
<br />
Staying there for the individual is a matter of practice, of concentration and immersion. Much like practicing to meditate, I remember when I started meditating I would last two maybe three minuets and my mind would wander, years later and half an hour is no real challenge within itself (more so the motivation to actually begin now !).<br />
<br />
<h3>Staying There</h3>I <b>find the single most important piece</b> in a development environment that is lacking, is the understanding of the other individuals (hence writing this so I don't have to keep repeating myself).<br />
<br />
It can take any where from 15-30 mins for an individual get into this state, and become engaged and start producing while there. The constant inquiries of "Have you done it yet" or "Lets all have a meeting to listen to <i>me talk</i>" is doing nothing but breaking that lead in time, and hitting the reset switch for getting back into it. I'm all for communication, of course, teams and organisations need it. Though when necessary and in context.<br />
<br />
I think the only thing that is more disruptive (and mentally painful) from being stopped getting to the Nexus ....... err a productive state of mind ..... is being <b>ripped out of it</b> once there. It's so jarring I've contemplated drowning people before ..... though have put it down to their ignorance opposed to malice.<br />
<br />
Nerf guns in an office are for play time ........ not 24/7 while people are trying to work.<br />
<br />
Shouting into phones in (or at people on the other side of) an open office (which themselves are very negative to focusing) isn't helping.<br />
<br />
Typical management is driven by interruption, Jason Fried 37signals has talked about interruptions lately, and way pre-dating him is <a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439?ie=UTF8&tag=itsafunnyo-20&link_code=btl&camp=213689&creative=392969" target="_blank">Peopleware</a><img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=itsafunnyo-20&l=btl&camp=213689&creative=392969&o=1&a=0932633439" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" /> that covers it in much more detail. <br />
<br />
<h3>Thoughts</h3>Personally I become very frustrated when subjected to the kind of environment that stops productivity and high quality productivity at that.<br />
<br />
I (and just about all developers I've ever talked to) <b>can do far more in 4 Flow hours than 8 of typical office</b>, and it's far better for everyone involved. Let alone the future as the software is of a much higher quality : think lower Technical Debt.<br />
<br />
So why not let it happen and protect it ?<br />
<br />
As ever take care of #1 and have a thought for others trying to get things done.<br />
<br />
Cheers<br />
<a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a><br />
<br />
<br />
P.S. The statistical support of this is <a href="http://bit.ly/eqFbs1">here</a>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-88967399682731880.post-20194990292649811432011-01-18T13:14:00.000-08:002011-01-18T13:14:44.275-08:00Dealing with challenging behaviour in IT groupsI recently saw a few tweets pushing a piece entitled : When Smart People are Bad Employees.<br />
<br />
Luckily the sense of many comments shone though, and the author was eviscerated for what appeared to be short sightedness, poor understanding of behaviour and basically poor posting.<br />
<br />
Though it did get me thinking about the amount of confusion and reactionary behaviour there is out there by this kind of management, which that author appears to be representative off (thankfully small and diminishing in my experience, though still present).<br />
<br />
Another case of trying to enforce "us and them" I'm right your wrong, opposed to "we".<br />
<br />
We're all human, and we're all fallible at times.<br />
<br />
I found the majority of this kind of behaviour and approach comes from a lack of trust, of oneself mostly, and then the team. A fear response to attempt to control, opposed to having the will power and self control to resist such behaviour.<br />
<br />
(There was another piece I saw on : Managing Nerds, while better and nearly saving itself with some tongue in cheek humour, it was ultimately "us and them" tactics as well as being simplistic and condescending)<br />
<br />
Hence why I'm going to review some of the points give my take on what is going on. Then actual options for how to deal with it, opposed to the original advice of : <br />
<br />
"Put up with it, blame them, then fire them" ....... <br />
<br />
<h3>Behaviour </h3>Though firstly, I think it is valuable to <b>separate behaviour and the person</b>.<br />
<br />
One of the over whelming messages is the original post, is that you judge people and describe them from their behaviours. I suggest that you don't and you define and isolate the behaviour that you find challenging, and see it as your experience of that behaviour instead.<br />
<br />
Keep the faith that most people are positive and want the same things, just some have trouble expressing it or communicating frustration.<br />
<br />
Once you have identified the behaviour and stopped trying to judge and blame the person, you can do the first best thing, and that is <b>asses yourself.</b><br />
<br />
There are volumes written yearly akin to : "What pisses us off, tells us about ourselves" etc. I could quote all kinds of philosophy, but you get the idea.<br />
<br />
Is the behaviour you are experiencing out of place or inappropriate, or is it your reaction and perception that is magnifying it ?<br />
<br />
As with just about anything in life, <b>self awareness is key</b> and also as elusive as it is time consuming to develop, though obviously well worth it.<br />
<br />
If possible, <b>consult with someone</b> who's there that you trust. Possibly a colleague or team member. Remember it's by way of understanding are things how you see them, opposed to an opportunity to complain or try and build sides.<br />
<br />
<h3>Communication</h3>Just about all issues (of this kind) I've come across <b>come from poor communication</b> (and expectation), be it typical or deliberate.<br />
<br />
Project groups are collections of people attempting to get a common goal achieved. Though within that you have collections of individuals who all see the challenges at hand in a different manner (which is a real strength by the way).<br />
<br />
As well as being people, and all that goes with that themselves.<br />
<br />
The usual kind of approach for management that reports all these difficulties is mandating and dictating to a group, how to solve the issue as <i>they see it</i>.<br />
<br />
There are two fundamental issues here. First,<b> the team will solves the challenges</b>, that's what project teams do, when allowed, and support by facilitation. So focus on the issue, not trying to tell people who likely know better than you how to do it.<br />
<br />
This is where trust and respect come in, not the iron first of weak managements "I'm in a suit and have a big title, I <i>have to</i> tell you what to do, what else am I hear for" (that topic I'll leave to <a href="http://www.thebusinessdoctor.me/">Dr Paul Thomas</a>).<br />
<br />
One of the most important things to do is communicate, and the most important part of communicating is <b>listening, not talking</b>.<br />
<br />
If you are experiencing what you perceive to be negative behaviour by people who are "negative" or "questioning you all the time" .......... find out why!<br />
<br />
Resistance is typically a good thing when it's about a project, <b>as someone who can see something you can't is likely trying to tell you something</b>.<br />
<br />
<h3>Control </h3>If you are from the Dickensian school of management (lets call it "the 80's" and you have a huge Motorola mobile phone you like to shout into in the middle of the office), then control is going to be second nature. Anything Zen is going to involve "Asian people in silk pyjamas waving their hands about".<br />
<br />
(As it is I rather like Tai-Chi, it's taught me lots about dealing with energy, negative or positive, and how to go with the flow and re-direct a lot of the time. Also the costs of going head to head, Yang vs Yang, feeding anger etc.)<br />
<br />
There are times when legitimate control and power make sense, for instance a parent physically stopping a child walking into a busy road. Another typical one is the military, because of chain of command (though even there there are caveats for disobeying certain orders).<br />
<br />
Now unfortunately I've seen groups that are run at one extreme or the other, a crèche or a military dictatorship.<br />
<br />
I'd suggest will intelligent professionals, both are pointless and counter productive.<br />
<br />
Though what is apparent to me, is when you have a <b>clash of expectations, </b>within the team. A lot of managers attempt to actually run and direct individuals within a team, i.e. that age old term : micro-managing. The vast majority of IT/software people are going to be resistant to this as they know how to do the job and need support and facilitation, not a condescending head master.<br />
<br />
So from the managers point of view, <i>they</i> are <b>resisting and being difficult</b>.<br />
<br />
A common and unfortunate mistake, also when done in the context of "I'm more senior, I must be <b>right</b>" there can only be one assumption.<br />
<br />
The key here, once again, is the self awareness of what is going on, and what is more important :<br />
<br />
Being "right" and in control .... or helping the team to get the job done.<br />
<br />
I do make distinction from control and direction, though well functioning teams given a challenge when allowed to will typically self organise and become directive.<br />
<br />
<h3>Context</h3>Given I'm talking about work, it is a <b>professional environment</b>, there is money changing hands for effort & time, it's not social or family, or personal relationship.<br />
<br />
Therefore there is a defined environment, be that an expectation of work or hours spent in a location. Now all good management (or rather team facilitation) is flexible, <i>but to a point</i>.<br />
<br />
Allowing someone to be absent for weeks (or even days) and not taking action but to wait and stew until their return and explode is about as far from a constructive or well functioning choice as you can get.<br />
<br />
The key here is <b>professional environment</b>. I am not condoning Prima donna behaviour or "the end justifies the means" excuses, though I am advocating that there is mutual respect and acceptance of responsibility, <b>on both sides.</b><br />
<br />
If some one doesn't turn up for work for days in a row, sure you check in on them find out what is going on (it could be an emergency). But you don't simmer in the office "tolerating" their behaviour because they are a technical genius and then explode when they return, you deal with it. It's contractual if nothing else.<br />
<br />
<h3>Personal</h3>There are two sides to the personal aspect that strike me. <br />
<br />
<b>First</b>, is that most of these issues come from ego, of <b>any</b> team member. It could be "da management" or members of the project team. Personally I don't differentiate or accept that any team issues, are only "the workers fault", there is a shocking amount of managers with challenging behaviours, just as there are workers. <br />
<br />
So there can be ego on both sides. Management by responsibility of position are there to be aware of, and mediate this, opposed to taking it personally and attempting to "control" the staff.<br />
<br />
Specific behaviours of anger, passive aggressive, negative etc, don't particularly bother me as they are just the symptoms of something else. It's just that individuals behaviour to a given situation. There are whole sites about how to deal with individual behaviours, google will help with that.<br />
<br />
Find out what is behind the behaviour, and if it is relevant to the project, or if it's personal to them ........... which brings me on to....<br />
<br />
Point <b>two</b>: being that we all have our own personal issues, and the vast majority of the time, for the vast majority of people (in my experience) separate that from work. And to a degree that's good, it's professional.<br />
<br />
By way of example, the original poster advocates blaming an employee for experiencing an addiction and firing them. Luckily as someone pointed out, in many places that is illegal. Let alone immoral to me.<br />
<br />
Some times we are overwhelmed by the situations in our lives, be that <a href="http://www.jeremyhutchings.com/2009/12/burnout.html">burnout </a>a personal crisis, life in general, etc.<br />
<br />
How a company supports it's people is very telling of how it's people are going to support the company I've found. My experiences are more of Europe than North America, though I've seen provisions for HR and employee support on both sides of the water.<br />
<br />
I don't personally want to run a company and turn it into a counselling help session all day long, though I do accept there are responsibilities and healthy ways of supporting people. <b>Respect at work is a two way street.</b><br />
<br />
Shouting at people or threatening them for not working weekends consistently, and then firing them the first day of holiday they take is no way to do business. <br />
<br />
So my advice is to lay off the condescending approaches of :<br />
<ul><li>how do we control them</li>
<li>how to deal with people who don't do what you say</li>
<li>Nerds are X, and this is how you manipulate them</li>
<li>etc</li>
</ul>And try and look at the bigger picture, and most importantly <b>yourself</b> before trying to blame, control, understand others.<br />
<br />
<br />
<br />
<a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-88967399682731880.post-43824616778024215412010-12-17T11:21:00.000-08:002010-12-17T11:23:04.927-08:00It's not about scrum or agile, it's about peopleOne of my ongoing pet peeves it's the <i>marketing over substance</i> of the usual "agile" and "scrum" proponents. <br />
<br />
I've found near constantly that the focus of this approach by it's advocates, is not to facilitate a team; but to prove that the process (i.e. scrum based agile) is the best (and typically only) way to run a technical project, and write software.<br />
<br />
Agile? ......... sounds more ridged to me. <br />
<br />
I find this ironic as the pushers (appear, in my experience to) rarely come come from a software architecture, or at least development back ground. It more appears a thinly veiled covering over typical old school management tactics.<br />
<br />
As in part demonstrated by this post :<br />
<br />
<a href="http://www.infoq.com/news/2010/11/working-with-difficult-people">http://www.infoq.com/news/2010/11/working-with-difficult-people</a><br />
<br />
Ignoring the apparent "I'm right your wrong" title (which sums up what I'm talking about) and going straight for some of the contents of the post, that supports my points.<br />
<br />
(Points they are ironically trying to distance themselves from, reading Arnold Mindell would help so many .....).<br />
<blockquote><i>"Will Jessup notes that developers tend to be highly intelligent people and often won’t just do something because we say so. He suggests a dialogue."</i></blockquote>A dialogue ? You mean actually <i>communicate</i> with a team, share a vision and try and focus on a desired outcome opposed to just telling people what to do ? ......... now there is a strange approach that will never catch on ......... <i>sheesh</i>, is there that much ego about still ?<br />
<br />
I'll ignore the "developers <i>tend to be</i> highly <i>intelligent</i> people" as anyone can see that for how it's meant.<br />
<br />
There is really little surprise there is resistance to the technique when this approach in used.<br />
<blockquote><i>"Kevin Shine suggests that we should move from selling to getting them to buy in of their own accord: “There is a big mind shift between these 2 thinking approaches. One is collaborative and cooperative and the other is more command and control." </i></blockquote>The obvious issue here is that the very common C&C driven approach is much more accepted and the norm, as well as being from the middle ages. The premise of "us and them" is set up by the method <i>even before the person has met the "software team"</i>.<br />
<br />
The situation is walked into with the mind set :<br />
<blockquote>"I'm going to have to tell them how to do it and what is right. If they resist it's because I've not talked enough and told them what to do. Developers are difficult, I really need to dominate to prove myself." </blockquote>opposed to :<br />
<blockquote>"I'm here to facilitate an outcome, that of a cohesive efficient directed team. The team will deliver a finished product. I'm not actually building it or solving the logic, though I do have a role to support the team how ever I can, and interface with the business. My role here is to understand the context of the work within time lines and communicate that to both areas. This is we, not us and them"</blockquote><i>If</i> the focus was an outcome opposed to being right, the focus would be on humble facilitation and progress, not proving process. One of the biggest failings of the application agile (not the method itself) being the tenant that it's pushed as:<br />
<blockquote>"Agile right - developers and experience wrong".</blockquote>It's top down hierarchy, "Developers are stupid and argumentative, treat them as such", again no surprise there is resistance.<br />
<br />
But the focus of dealing with that resistance is always the developers? ......... how about the cause of it, the manner in which the change is being applied, and by whom ........ an applier of agile who is complaining about resistance maybe .......<br />
<br />
That is seems some kind of <i>revelation</i> that team work should be collaborative or cooperative to the usual pushers of this technique speaks volumes. <br />
<br />
This has nothing to do with agile or scrum. The title of that piece should of been : "Why being difficult, condescending and telling people what to do without engaging them will cause difficulties".<br />
<br />
An example :<br />
<blockquote><i>"In addition he points out that a new Scrum Master needs time to gain the respect and trust of the team members."</i></blockquote>Isn't this kind of thing blindingly obvious? Sure I might of trained as a counsellor to help me understand group work, communication and respect. Let alone how to be client focused (which I switch to the "client" being the project at work) to help me take ego out of it.<br />
<br />
But given that these kinds of points are being talked about as if they are new or some kind of magic approach, is very disheartening and explains a lot as to the failure of enforcers of scrum & agile.<br />
<blockquote><i>Lacking a clear and compelling and a sense of urgency the team doesn’t commit. Ashish goes onto suggest 1-1 coaching, root cause analysis and rigorous use of retrospectives to help team members discover issues on their own.</i></blockquote>You don't need urgency, though I sense that is just code for "panic and rush everything".<br />
<br />
What you do need is an understanding of timing in a business context.<br />
<br />
The 2nd point that isn't talked about from this quote, is that the assumption is that it's always the developers or "other team members" that have the issues. Wholly arrogant in my view. It's just as common that it's the people trying to enforce agile/scrum or management themselves who have issues, <b>just as we all do</b>, it's called being human. <br />
<br />
---------<br />
<br />
Overwhelmed by ego and the need for the method be be right, makes most view anything that challenges them as something that is "wrong" or "difficult". <br />
<br />
<i>Opposed</i> to seeing the method as a way of facilitating a better outcome for all. How long are we going to have to endure this kind of thing being top down and prescribed?<br />
<br />
Little wonder a lot of successful software houses now are small developer lead teams. Any why ? Because it's fluid, communication is done when necessary, and the subject experts are allowed to engage opposed to being manipulated. Let alone the lack of interruptions .......<br />
<br />
<b>Leadership it's about communication and facilitation</b>, process is just a way of managing that. <br />
<br />
<b>Resistance is a good thing</b>, it means there is passion and thought, there is a reason and likely something that hasn't been considered. You investigate it, you don't try to bully or scare it away, as <a href="http://agilescout.com/developers-and-change-scare-tactics/">some</a> would seem to advise. <br />
<br />
I think a lot of this is tied into typical business people's lack of ability to listen, either to a team to hear what is actually going on, or more importantly themselves to detect the real root cause of the resistance ....... ego.<br />
<br />
<br />
A good summary here :<br />
<br />
<a href="http://www.businesspundit.com/interview-why-businesspeople-dont-listen/">http://www.businesspundit.com/interview-why-businesspeople-dont-listen/</a> <br />
<br />
-------------<br />
<br />
Also note ............ <b>I've not said agile is bad any where here</b>, only the way it's <b>commonly pushed</b>. I actually believe that it's well places in some projects and can help, though it's just a tool.<br />
<br />
It is suitable in some places, though you can do a lot of damage with the "right" process tool in the wrong place. And a lot more damage using the wrong tool in the wrong place, <b>in the wrong way!</b><br />
<br />
-------------<br />
<br />
As always it's about people interacting and cooperation, and the core essence of that is self awareness for each member, and quality communication.<br />
<br />
<br />
It's not rocket science, though for most it's not east and something we all have to work on. Process is nice, though people are more important.<br />
<br />
<a href="http://twitter.com/#%21/jeremyhutchings"><span id="goog_1727416229"></span>@JeremyHutchings</a><span id="goog_1727416230"></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-58241467092437280182010-12-14T15:52:00.000-08:002010-12-14T20:25:20.590-08:00XenForo and CodeIgniter Integration<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs2Fik19b4Ahko35AE5YfodbYD1Jik908lkSBNgM4Ez9hAOq_2eAZOQ39aTpgwvshYJwCUdPRU5joIsv92C16BGoGiZ5QXvtgwBDBUEGgBBOPNTBoK7Zg4lqOT5JzMb42BCIp7s2KR50s/s1600/cixf.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs2Fik19b4Ahko35AE5YfodbYD1Jik908lkSBNgM4Ez9hAOq_2eAZOQ39aTpgwvshYJwCUdPRU5joIsv92C16BGoGiZ5QXvtgwBDBUEGgBBOPNTBoK7Zg4lqOT5JzMb42BCIp7s2KR50s/s1600/cixf.png" /></a></div><span style="font-size: large;">Background </span> <br />
<br />
For a current project I am experimenting with <b>XenForo</b> and integrating <b>CI</b> (CodeIgniter) to build some extra functionality.<br />
<br />
They are other areas of the site (not form specific). I just needed to be sure that the user (<b>Visitor</b> in XenForo terminology) was logged in, and if they were a super admin; while having access to libraries and the MVC of CI.<br />
<br />
<br />
<hr /><span style="font-size: large;">XenForo</span><br />
<br />
The set up for XenForo is fairly minor, there is none. Just install it and you're done, for this example it's installed in :<br />
<br />
<div style="background-color: #eeeeee;"><b><code>/var/www/xenforo</code></b></div><br />
URL being :<br />
<br />
<div style="background-color: #eeeeee;"><b><code>http://www.example.com/xenforo/</code></b></div><br />
<br />
<hr /><span style="font-size: large;">CodeIgniter</span><br />
<br />
I've installed (a default 1.7.3) in a separate directory for the moment just for ease of example (structure you site as needed, as always):<br />
<br />
<br />
<div style="background-color: #eeeeee;"><b><code>/var/www/ci</code></b></div><br />
Example URL being :<br />
<br />
<div style="background-color: #eeeeee;"><b><code>http://www.example.com/ci/</code></b></div><br />
Browsing to, gives us the obligatory all OK from the CI welcome controller :<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQhl8qX7fh8fYBhnEzIXqkes9lfBvMM42AoiiVo-sVMZkYwCWFhNUhS33ZLNq2yHh_CRW61fOlV3Iu70lkBj0lW-8ZqlwHSAZsOf16oOA9VT_t0WytuO9QsPsi__WgidhfQa5WUx5CoX8/s1600/xf1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQhl8qX7fh8fYBhnEzIXqkes9lfBvMM42AoiiVo-sVMZkYwCWFhNUhS33ZLNq2yHh_CRW61fOlV3Iu70lkBj0lW-8ZqlwHSAZsOf16oOA9VT_t0WytuO9QsPsi__WgidhfQa5WUx5CoX8/s400/xf1.png" width="400" /></a></div><br />
<br />
<hr /><span style="font-size: large;">xF_auth</span><br />
<br />
I've shared the CI libary on gitHub :<a href="https://github.com/JeremyHutchings/xF_auth"> https://github.com/JeremyHutchings/xF_auth</a><br />
<br />
As with any CI libary, download that and put the config/xf_auth.php config file in :<br />
<br />
<div style="background-color: #f3f3f3;"><b><code>/var/www/ci/system/application/config/</code></b></div><br />
and the library/xf_auth.php in :<br />
<br />
<div style="background-color: #f3f3f3;"><b><code>/var/www/ci/system/application/library/</code></b></div><br />
The two config settings in there being the URL for the forum and the path for the XenForo install, only the file path is used at the moment, so :<br />
<br />
<div style="background-color: #eeeeee;"><b><code>$config['xfAuth']['fileDir'] = '/var/www/ci';</code></b></div><br />
No harm is setting the forum URL, I've just not written the functions to use it yet.<br />
<br />
<b>xF_auth</b> is a <i>wrapper</i> for the XenForo_Visitor class, which is part of the XenForo core. It handles getting an instance of the Visitor and checking permissions for various actions and access.<br />
<br />
<br />
<hr /><span style="font-size: large;">Hello World</span><br />
<br />
With CI, XenForo and xF_auth all installed and configured, time to test CI.<br />
<br />
<br />
The default welcome controller for CI is :<br />
<br />
<div style="background-color: #eeeeee;"><b><code>/var/www/ci/system/application/controllers/welcome.php</code></b></div><br />
Edit this file and add the library load to the constructor :<br />
<div style="font-family: Verdana,sans-serif;"><br style="font-family: Verdana,sans-serif;" /></div><blockquote><span style="font-size: x-small;"><span style="font-family: Verdana,sans-serif;"><span style="font-family: Verdana,sans-serif;">class Welcome extends Controller </span></span></span><br />
<span style="font-size: x-small;"><span style="font-family: Verdana,sans-serif;">{</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> function Welcome()</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> {</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> parent::Controller();</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> <b>$this->load->library('xf_auth');</b></span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> }</span></span><br />
<span style="font-size: x-small;"> ...</span></blockquote><br />
And then for the sake of testing, echo some debug from the controller opposed to creating a new view. That can be done once you get into development.<br />
<blockquote><div style="font-family: Verdana,sans-serif;"> <span style="font-size: x-small;"> ...</span></div><span style="font-size: x-small;"><span style="font-family: Verdana,sans-serif;"> function index()</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> {</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> <b> if($this->xf_auth->isLoggedIn())</b></span><b><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> {</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> echo "You're logged in to XenForo !" .</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> " </span></b></span><b><span style="font-size: x-small;"><span style="font-family: Verdana,sans-serif;">User id :: " . $this->xf_auth->getUserId() . </span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> "</span> </span><span style="font-size: x-small;"><span style="font-family: Verdana,sans-serif;">username :: " . $this->xf_auth->get('username') .</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> " </span></span></b><span style="font-size: x-small;"><b><span style="font-family: Verdana,sans-serif;">email :: " . $this->xf_auth->get('email');</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> } </span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> else</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> {</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> echo "You are not logged in";</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> }</span></b><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> $this->load->view('welcome_message');</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;"> }</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">}</span><br style="font-family: Verdana,sans-serif;" /><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">/* End of file welcome.php */</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">/* Location: ./system/application/controllers/welcome.php */</span></span></blockquote><br />
Now you will see :<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtjGGuoDG77yvbMdZtFIzIYTFio3f7qIx_yjtcIi_dcneQ7PxgJf_rmOnfyPzrUnChCGVbgHqNYv63Sd5EijjyJCokcRSPM2LZtJDEwudFqSWAr8cKcmqxuY_WIAHW46yFcHb_YzQiaYA/s1600/xf2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtjGGuoDG77yvbMdZtFIzIYTFio3f7qIx_yjtcIi_dcneQ7PxgJf_rmOnfyPzrUnChCGVbgHqNYv63Sd5EijjyJCokcRSPM2LZtJDEwudFqSWAr8cKcmqxuY_WIAHW46yFcHb_YzQiaYA/s400/xf2.png" width="400" /></a></div><br />
(as long as you've logged into XF that is!)<br />
<br />
You have now bootstrapped XF in another environment and can build functionality else where on the site using familiar CI MVC techniques.<br />
<br />
<hr /><span style="font-size: large;">Future Development</span><br />
<br />
XenForo at time of writing is in beta, and approaching RC. Though having a library abstract the bootstrapping means that any changes can be hidden from a CI application and implementation.<br />
<br />
<b>Usergroups</b> - The next functions to be added will check what usergroups and permissions the user/Visitor has so the C of MVC in CI can build the views correctly.<br />
<br />
<b>Templates</b> - Being able to call XF templates within CI (view integration), though using the XF context and phrasing is a goal.<br />
<br />
<br />
<a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a>Unknownnoreply@blogger.com16tag:blogger.com,1999:blog-88967399682731880.post-12106139743337675842010-12-12T14:01:00.000-08:002010-12-12T16:45:33.833-08:00How to get involved with PHP and support open source softwareI noticed a <a href="http://phpadvent.org/2010/everyone-loves-php-by-scott-macvicar">post</a> from an past college <a href="http://macvicar.net/">Scott MacVicar</a> about getting involved with and helping out PHP. Personally I've always thought about it and wanted to, though have always focused on hard core C, thinking :<br />
<br />
<i>"Helping PHP, means writing hardcore C, and building libraries"</i><br />
<br />
The more I thought about that statement, and the way I typically think about software, Open Source and communities, I realized <b>what nonsense that is</b>. There is so <i>much</i> <i>more</i> going on in a project and community, therefor there are <i>many more</i> ways to help.<br />
<br />
<b>Developing a technology & community is a holistic activity</b>. Some of us are writers, framework developers, application developers, business decision makers, power users, clients making requirements, community members, and so on. Though a lot of us, are more than one role, it takes us all and there is always room for more.<br />
<br />
Though you could use these points for any OSS project, I'm just focused on PHP. Here are 10 I've thought of, in some kind of progressive intensity.<br />
<br />
<ul><li>0. Talking about PHP</li>
<li>1. Actually using PHP</li>
<li>2. Online Community</li>
<li>3. Writing about PHP</li>
<li>4. In Person Community</li>
<li>5. Presenting about PHP</li>
<li>6. Helping Open Source Projects</li>
<li>7. Documentation for PHP</li>
<li>8. Test Cases</li>
<li>9. Developing the PHP source</li>
</ul><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6CUBcfwBNgHUoQ27WqSt08A4S59DecDwjAQgraiKAXuqM0euHrN3Qc69bEF6Hk19dM_CEosJIeQ0Et53uLkGvkgRLBqBAQgkVuELvhmRw9T-MBw8UlBm2j9Wwn0HUuHrv-ubcxO7lmEE/s1600/megaphone.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6CUBcfwBNgHUoQ27WqSt08A4S59DecDwjAQgraiKAXuqM0euHrN3Qc69bEF6Hk19dM_CEosJIeQ0Et53uLkGvkgRLBqBAQgkVuELvhmRw9T-MBw8UlBm2j9Wwn0HUuHrv-ubcxO7lmEE/s200/megaphone.png" width="200" /></a></div><br />
<br />
<span class="Apple-style-span" style="font-size: large;"><u>0. Talking about PHP</u></span><br />
<br />
Quite the opposite of fight club here. By talking about PHP I mean when you are in a <b>development environment, where decisions are being made.</b> Or a business environment where people are nervous of open source (yes places like that still exist......). A common rebuttal I hear is "It's <i>just</i> a scripting language, is it really up to the job" ........ this by people who are on Facebook/Digg/various forums at the same time!<br />
<br />
Combat the fear and ignorance with some numbers.<br />
<ul><li><a href="http://php.net/usage.php">The trend of PHP usage</a></li>
<li><a href="http://trends.builtwith.com/framework/PHP">Use stats on builtwith.com</a> (I like the Frameworks Distribution graph, take that RoR !)</li>
<li><a href="http://w3techs.com/technologies/details/pl-php/all/all">By version on http://w3techs.com</a> (So happy to see the vast majority on 5.x)</li>
</ul>It's out there, and en mass. So remind nervous people it's all good, all the cool kids are doing it ;)<br />
<br />
<br />
<div style="margin: 0px;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTim3Ym_v_EbdtEXRuE6kJwlfZ-xyzCvBmEpnaS3NYhSliCI_vDYo11ArfX6flan0UqUtheXJumx1nteI5Y2WJ94MCAYCxeieQuQZvYIIIbQ0t4TWcsXyXSjYnEo-E-FuAof6Tm__Aeqo/s1600/Web+Coding.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTim3Ym_v_EbdtEXRuE6kJwlfZ-xyzCvBmEpnaS3NYhSliCI_vDYo11ArfX6flan0UqUtheXJumx1nteI5Y2WJ94MCAYCxeieQuQZvYIIIbQ0t4TWcsXyXSjYnEo-E-FuAof6Tm__Aeqo/s200/Web+Coding.png" width="200" /></a></div><span class="Apple-style-span" style="font-size: large;"><u>1. Actually using PHP</u></span></div><div style="margin: 0px;"><br />
</div><div style="margin: 0px;">Talked the talk, also w<i>alk the walk</i>.<br />
<br />
Knowing PHP is one thing, but by actually using it you're creating more software and systems in it. So there is more of it in the world, making it more ubiquitous. When things become more prevalent, they <i>typically</i> become more accepted.</div><div><br />
There are a few aspects of acceptance, talking about something doesn't mean it's <i>accepted</i>. When something<i> is used and considered de facto</i>, it's accepted. I believe it's akin to evolving development methods in teams (which is something I focus on).<br />
<br />
Just because I advise a team about a development technique, doesn't mean it is accepted, and the standard. When they are used daily and accepted, it is.<br />
<br />
There are various was of using and supporting PHP, not only writing raw PHP code at work. You can also use a project (growing its install base), where the project itself is written in PHP. Giving lots of cash to SAP or Salesforce.com ....... has SugarCRM been evaluated?<br />
<br />
<ul></ul><div class="separator" style="clear: both; margin: 0px; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFX5H903a_6BJVW3GG6lxDh1a8iXFwuxJ7m0TBIzhphj1NZIRTNRuer7ZTLOYpDIPIuspzAOIOSSoUSRdhmGVHGnbBC95j3pbLLLWPdcRP8n2YQiQJIUvgNxZNjmfivptz6c8jAD1rR10/s1600/xenforo.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br class="Apple-interchange-newline" /><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFX5H903a_6BJVW3GG6lxDh1a8iXFwuxJ7m0TBIzhphj1NZIRTNRuer7ZTLOYpDIPIuspzAOIOSSoUSRdhmGVHGnbBC95j3pbLLLWPdcRP8n2YQiQJIUvgNxZNjmfivptz6c8jAD1rR10/s200/xenforo.gif" style="cursor: move;" width="167" /></a></div><div style="margin: 0px;"><u><span class="Apple-style-span" style="font-size: large;">2. Online Community</span></u></div><div style="margin: 0px;"><br />
</div><div style="margin: 0px;">The whole point of the internet is information sharing and connection. The resources and communities out there are vast. A quick Google of "PHP development forum" will give you pages to go though.<br />
<br />
And that is just for the language itself, there are lots of communities that are focused on the development of something specific (which you might be more interested in) that just happen to use PHP.<br />
<br />
So you approach it from both sides, language first or interest first.<br />
<br />
Most of the greatest works are done in teams, not by super star individuals (some are, though it's rare). We all have our areas of specialty, and more important our areas of <i>interest</i>. For instance there is little I don't know about migrating data between forums and CMSs and still get emails and IMs about various issues. Being able to share the information, pass it on, get feedback and make it better is a <b>core philosophy of what we do. </b></div><div style="margin: 0px;"><br />
I'm quite the fan of : <a href="http://www.amazon.com/Cathedral-Bazaar-Eric-S-Raymond/dp/1607962284?ie=UTF8&tag=itsafunnyo-20&link_code=btl&camp=213689&creative=392969" target="_blank">Cathedral and the Bazaar</a><img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=itsafunnyo-20&l=btl&camp=213689&creative=392969&o=1&a=1607962284" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" /> by Eric S. Raymond for community and OSS.<br />
<br />
</div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEVg3fiWBHjcBlJdPa9sugAoxnXg-5ukIa0erCjUUeg2ckHSD-DQa0gwDkfaGeyWh0Qp4N2igOlwXzI0eTHItAvCP3lUTBAXQYuSfKz7wmHY0zvnUV70zfvU-5IzTGbcnDo7YNyltXKb0/s1600/blogger.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEVg3fiWBHjcBlJdPa9sugAoxnXg-5ukIa0erCjUUeg2ckHSD-DQa0gwDkfaGeyWh0Qp4N2igOlwXzI0eTHItAvCP3lUTBAXQYuSfKz7wmHY0zvnUV70zfvU-5IzTGbcnDo7YNyltXKb0/s200/blogger.png" width="200" /></a></div><span class="Apple-style-span" style="font-size: large;"><u>3. Writing about PHP</u></span><br />
<br />
I suppose to a degree what I'm doing here. Make some noise, let people know what is going on, get more people on board. There are always things to do, as well as people joining and leaving their roles in the community.<br />
<br />
You could be writing some kind of <b>howto</b> for the technical people, or and introduction targeted at new developers.<br />
<br />
If you're a business type maybe a paper, or review of how using PHP in your business helped things - positive engagement with OSS. Enterprise might move slowly, though when it does, it turns up with <b>big cheque books and looks for people who know what they are talking about</b>.<br />
<br />
More importantly <i>people who've done it before and can demonstrate that success.</i><br />
<br />
Maybe you've seen a blog post that you disagree with, or that you want to add too. I did that a little while ago with another <a href="http://www.jeremyhutchings.com/2010/11/top-10-improvements-for-php-developers.html">Top 10 list of PHP developer improvements</a> just because I wanted to by my own 2 cents.<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF67h0Ie62-flpk8BCaz9IGrZOO7OfYsVJEugUXNJTh4qwH6hyphenhyphen2HbqBNMFwDOrVDUEJKGx-Y89Q5-wAl8OIcAF9PD7dp10Rq1jSex0MDc35wusPHgA2HKuOYohZKy8LbtR8EZptVMyDSo/s1600/meetup_logo.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF67h0Ie62-flpk8BCaz9IGrZOO7OfYsVJEugUXNJTh4qwH6hyphenhyphen2HbqBNMFwDOrVDUEJKGx-Y89Q5-wAl8OIcAF9PD7dp10Rq1jSex0MDc35wusPHgA2HKuOYohZKy8LbtR8EZptVMyDSo/s200/meetup_logo.gif" width="200" /></a></div><span class="Apple-style-span" style="font-size: large;"><u>4. In Person Community</u></span><br />
<br />
As I mentioned above great things get done in teams, and communication is key to this. We are usually surrounded by like minded people and just think we aren't because we've never met them ! A bit of a truism if there ever was one.<br />
<br />
<a href="http://meetup.com/">MeetUp.com</a> is a perfect example of how to get involved with a local community, or show and tell. <a href="http://www.phpusergroups.org/">http://www.phpusergroups.org</a> has links to specific groups (a few broken ones in there, though you can Google around that !).<br />
<br />
Not only are you going to potentially make new friends, which is rarely a bad thing, you'll get to share your ideas, see others ideas, get to ask questions, feel good when you answer some and even network for jobs and contracts.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnyDCcx0XX3dY0c5n2oojVnaiZF5tI-QtVYhQEcMbvSqG3Ph6H1XGqOpIQFwANLn36eOyOKIv19TV2_73OM7Udt0sO-8iIU2Hzi__V0GsE2G83NxggcaAD1OO47U89zQtizjIb4IqXjDQ/s1600/Principles-of-Public-Speaking-DSST.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnyDCcx0XX3dY0c5n2oojVnaiZF5tI-QtVYhQEcMbvSqG3Ph6H1XGqOpIQFwANLn36eOyOKIv19TV2_73OM7Udt0sO-8iIU2Hzi__V0GsE2G83NxggcaAD1OO47U89zQtizjIb4IqXjDQ/s200/Principles-of-Public-Speaking-DSST.jpg" width="200" /></a></div><u><span class="Apple-style-span" style="font-size: large;">5. Presenting about PHP</span></u><br />
<br />
Personally this <i>terrifies me</i>. When I trained as a counselor I found out that public speaking is the number 1 fear, 2nd is flying.<br />
<br />
Though it gets better with practice and is a lot easier when you're talking about something you're involved with and <b>passionate about</b>.<br />
<br />
Just about all people want to hear what you have to say or they wouldn't be there, and even if they don't they'll be tweeting away on their laptops.<br />
<br />
Presenting doesn't have to be to hundreds of people at a big conference either, starting at that point would be brave and more than a little scary. Though once you've talked to 2 or more people at work or say a MeetUp, you <i>are presenting</i>, you're most of the way there. The rest is just scale and organisation.<br />
<br />
Find your passion and go for it, <a href="http://about.digg.com/blog/rasmus-lerdorf-php-performance">Rasmus Lerdorf</a> is still at it.<br />
<br />
<div style="margin: 0px;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUyGAmpGMbOYb4R5fXDfxPUjVadsKuc62z9RMPaEAKN9xKn-c1nfdUiUDkKbVrvSZ9vl0M67n2dTXpUcmyBDidYPLBOVpToTnb2f3UYQ0F1tE1BaDAp5dum9m3R36Dx0Iq7C4nvph_rRM/s1600/opensource-logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUyGAmpGMbOYb4R5fXDfxPUjVadsKuc62z9RMPaEAKN9xKn-c1nfdUiUDkKbVrvSZ9vl0M67n2dTXpUcmyBDidYPLBOVpToTnb2f3UYQ0F1tE1BaDAp5dum9m3R36Dx0Iq7C4nvph_rRM/s200/opensource-logo.png" width="200" /></a></div><div style="margin: 0px;"><u><span class="Apple-style-span" style="font-size: large;">6. Helping Open Source Projects</span></u> </div><div style="margin: 0px;"><br />
</div><div style="margin: 0px;">Just about all of the ten points here you could apply to any OSS project.<br />
<br />
The spirit of the movement is the reason we have PHP in the first place Its because of people (starting with <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf" title="Rasmus Lerdorf">Rasmus Lerdorf</a> in 1995) putting in the effort to solve a problem and then sharing it for everyone.<br />
<br />
If there is a OSS project you use, there is very likely instructions on how to help or where to engage. Or even better maybe there is an app or tool that you've developed and use yourself because you couldn't find anything else. In all likelihood you're not alone, so why not share it?<br />
<br />
GitHub is an ideal place for this, I've recently had a few ideas myself and have <a href="https://github.com/JeremyHutchings">put them there</a> for a current project. I just need some more hours in the day now .......<br />
<br />
</div><div style="margin: 0px;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwiYCv-TjvIc1VEwnXOKPMhJ-Br8mTYPFDP_jHqbtFvbXRcRSpwu0lBwYr_xlcpAvfB__X5DaCPy4nNpnxnqpa22zjb5uN3SBH4CaNH5gHqo3col66jHMwGvFNpm9VZXZTf_I1cI87K5g/s1600/php-manual.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwiYCv-TjvIc1VEwnXOKPMhJ-Br8mTYPFDP_jHqbtFvbXRcRSpwu0lBwYr_xlcpAvfB__X5DaCPy4nNpnxnqpa22zjb5uN3SBH4CaNH5gHqo3col66jHMwGvFNpm9VZXZTf_I1cI87K5g/s200/php-manual.jpg" width="200" /></a></div><div style="margin: 0px;"><u><span class="Apple-style-span" style="font-size: large;">7. Documentation for PHP</span></u></div><br />
<div style="margin: 0px;">I think the documentation of a project is likely one of (if not <i>the</i>) main criteria for success, aside from the technology doing what is supposed to of course! Documentation in coding standards is one of the things I always encourage and support (read enforce!) when I'm leading a project.<br />
<br />
Also it's a very valuable skill for employers who know the value of quality technology. Delivery of system, fully documented is a great thing.<br />
<br />
It's the first port of call for new people, and then for <i>everyone</i> as they learn, look up errors, check arguments, etc. One of the main reasons I think closed book syntax test for developers are completely pointless, it's not how we work.<br />
<br />
The comments and feed back are another excellent example of a way to help. <i>Many</i> times I've seen an example or how to in a comment that's saved me hours.<br />
<br />
Rather than just reword Scott for how to help out with documentation, I'll just quote him :</div><blockquote>"<i>To get involved with documentation, the only thing you need to know is that the format used is <a href="http://docbook.org/">DocBook</a>. While it can be somewhat complex to understand, it does a good job of abstracting the actual documentation from the output format so the same source can produce the PDF, HTML and the Windows compiled formats. There is a live <a href="https://edit.php.net/">editor</a> you can use anonymously to generate patches. There is also a <a href="http://wiki.php.net/doc">wiki</a> page that explains more</i>."</blockquote><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWZQU1zi3NSkhbXrVQJJZkkZO7KUVCE2OxUj6uDpAwIVEvkiVeudFIcGpBqyRIZUvSKuP276kqr-lKKHPtcZXrKfuFS6Vbxens8EsVmofRUh2BbKfk6uIVSh0J8ReBTGhflyJifEuyN3A/s1600/phpqa.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="109" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWZQU1zi3NSkhbXrVQJJZkkZO7KUVCE2OxUj6uDpAwIVEvkiVeudFIcGpBqyRIZUvSKuP276kqr-lKKHPtcZXrKfuFS6Vbxens8EsVmofRUh2BbKfk6uIVSh0J8ReBTGhflyJifEuyN3A/s200/phpqa.png" width="200" /></a></div><u><span class="Apple-style-span" style="font-size: large;">8. Test Cases</span></u><br />
<div style="margin: 0px;"></div><div style="margin: 0px;"><br />
Believing something works and being correct most of the time is nice, though it's a cowboy way of doing things and best left to the fly by night hackers. It's not <i>engineering</i>. If you want to be sure of something you should be able to prove it, and prove it continuously. Confidence is key.<br />
<br />
My personal favorite on PHP projects themselves is : <a href="http://phpundercontrol.org/">http://phpundercontrol.org</a> for continuous integration. There is no real excuse for not doing it on any sizable PHP project, or in any main stream language really.<br />
<br />
Personally I use ZendStudio and it's <a href="http://files.zend.com/webinar/EN_13_Zend_Studio_Neon_PHPUnit%20testing/">built in</a>, <i>even</i> wizard driven. Though all this is to test applications, which is great, being happy with Test Driven Development and knowing it's value is great for quality.<br />
<br />
Though there are test cases for PHP<i> itself</i>, same idea, just one layer down in the stack. Is the language doing what it says on the tin ? Over at PHP QA, they have a great <a href="http://qa.php.net/write-test.php">How to Help</a> page explaining it all, and what to do.<br />
<br />
Being asked in an interview "Do you use or understand TDD" and being able to say yes, is one thing, saying that you help or are are of the team that does it for the language itself ! .... well that is mighty kung fu indeed.<br />
<br />
And to think I didn't like mathematical proofs in university .......<br />
<br />
<br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirSPX_6abjCZMDxcrvWYWC4V1FYXFj2doF1FLIoMcjOFFII8GKabVew4ru6Z_j5S2ekZVHCV-R30wPD92hS6fI7TAgqY9M-DAd6zUtfuk3F085w7BqE8BrAALURYLWAnXLmmC2YVib89o/s1600/php-logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="103" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirSPX_6abjCZMDxcrvWYWC4V1FYXFj2doF1FLIoMcjOFFII8GKabVew4ru6Z_j5S2ekZVHCV-R30wPD92hS6fI7TAgqY9M-DAd6zUtfuk3F085w7BqE8BrAALURYLWAnXLmmC2YVib89o/s200/php-logo.jpg" width="200" /></a></div><u><span class="Apple-style-span" style="font-size: large;">9. Developing the PHP source</span></u><br />
<br />
The point of this blog post was more to do with the activities you can engage in without actually programming for the source.<br />
<br />
Though who knows, one day!<br />
<br />
Getting happy working with the source, compiling it and writing your own extensions would likely be a good start, here is a book for that : <a href="http://www.amazon.com/Extending-Embedding-PHP-Sara-Golemon/dp/067232704X?ie=UTF8&tag=itsafunnyo-20&link_code=btl&camp=213689&creative=392969" target="_blank">Extending and Embedding PHP</a><img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=itsafunnyo-20&l=btl&camp=213689&creative=392969&o=1&a=067232704X" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" />. Though in all practical terms finding and reproducing bugs is a good way of helping and finding out how things work : <a href="http://bugs.php.net/">http://bugs.php.net</a><br />
<br />
And if you've gotten this far you don't need my suggestions any more.<br />
<br />
</div><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNsqr7aK2hUJMkR8pAmk0bhdWRXZfaN2o19PMrvLWcY3237Y1ATXeWskqKfJnq9k4KlsN1_F0Gyhpi6pLJPKtEUPA_Z9iIRR4Tj_vytfuGFrr_RWHR55T3G_Y6WHKKsOVIWVg14mdkSrk/s1600/php_soap.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNsqr7aK2hUJMkR8pAmk0bhdWRXZfaN2o19PMrvLWcY3237Y1ATXeWskqKfJnq9k4KlsN1_F0Gyhpi6pLJPKtEUPA_Z9iIRR4Tj_vytfuGFrr_RWHR55T3G_Y6WHKKsOVIWVg14mdkSrk/s200/php_soap.png" width="200" /></a><span class="Apple-style-span" style="font-size: large;"><u>First rule of PHP club</u></span><br />
<br />
Well all know the first rule of PHP club..... is <b>talk about PHP club.</b><br />
<br />
Talk is good, though <b>action is better. </b>PHP has helped give lots of us great jobs, careers and opportunities. What are you going to do to give back and help PHP?<br />
<br />
<a href="http://twitter.com/jeremyhutchings">@JeremyHutchings</a><br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-88967399682731880.post-84526337415378162922010-12-08T16:32:00.000-08:002010-12-08T17:46:16.811-08:00The worst job interview ever for software & systems developersRecently I've been meeting with a local company to asses what opportunities they have, how they operate and more importantly, how they treat people.<br />
<br />
I wanted the first hand information opposed to going on their reputation.<br />
<br />
I met with them 3 times (have to give them a fair run and all that) and each time there was something strange going on. First time around, in a 14x14 room with paper and pen to do a memory syntax test, to asses what I'm like as a "developer" ...... really .... Second time was a whole day with a 15 min break and given the last 30 seconds of each meeting to ask my own questions. Then when I was called in for the 3rd interview, my mind was made up, which is the experience I'll use as an example here.<br />
<br />
For the cost of a few hours of my life (the 3rd interview) and something to reflect on, it turned into a gold mind of "How not to interview software people".<br />
<br />
Everyone was late, there was no interview process, I'd been given the wrong job spec, the interviewers ranged from completely uninterested (one didn't say more than 5 words) to aggressive and baiting, and so on.<br />
<br />
I looked about and found a "top 5" worse questions list and to my amazement I was asked all of them in one interview, and mostly by the same person. I'm not sure if the company realizes how damaging it is to let people like that interview.<br />
<br />
Knowing that the organisation deals with people in this manner, confirmed by hunches that it's bad, <i>really</i> bad. I wonder how they attempt to attract or keep talent.<br />
<br />
I thought I'd go over the questions and try and think of some alternatives to pull some good out of it all.<br />
<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">1. "So then, tell me about yourself"</span></b><br />
<b><br />
</b><br />
The <i>number 1</i> worst question you can ask, especially when you have someones resume in front of you.<br />
<br />
Also if you're sitting at a computer 5 minuets before the interview, how about putting their name into Google, if they work in IT and specifically the web, you should be able to find them. Not doing this show a lack of imagination, skills or planning for the interview. Again who wants to work with someone like that?<br />
<br />
On a side note - One of the main things I'm noted for by friends in my curiosity. I always have to be learning, doing courses about random subjects, and trying to see the world from different perspectives. I attempted to answer this question by explaining that. I see having a curious mind as a good thing, and that I've actually <i>trained at learning.</i><br />
<i><br />
</i><br />
I listed of a few of the topics that interest me and that I've studied and received the answer :<br />
<br />
"No no no, don't tell me about your professional career, we've talked about that. School is for getting a job that is all, tell me about the <i>real you</i>, I want to know who you are".<br />
<br />
I couldn't believe what I was hearing, though seeing as an interview is a two way process, they all got on the fail boat, sailed off and sunk at that point !!<br />
<br />
<b>Alternative</b><br />
<br />
What is it you're actually trying to learn? If you've any clue you want to get them to talk about something they are passionate about, see if they have the spark. You're likely after 3 skills, problem solving, interpersonal and ability to execute.<br />
<br />
Can they figure "it" out, doing it in a team, and get it done.<br />
<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">2. "Where do you see your career in X years"</span></b><br />
<b><br />
</b><br />
Err ............ building things? Given the speed tech and decent companies move at, who knows. Also if anyone is planning that far ahead they are going to limit their opportunities and decisions in the hear and now. Which is the important bit.<br />
<br />
<b>Alternative</b><br />
<b><br />
</b><br />
Why do you want them to look into a crystal ball ? Unless the company has interesting projects that are engaging, people will leave. Asking them to lie about wanting to build a career with a company they don't know yet, is mostly pointless.<br />
<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">3. "What are you bad at, where have you failed"</span></b><br />
<b><br />
</b><br />
Once again a pointless exercise in humiliation, and a dead end question.<br />
<br />
<b>Alternative</b><br />
<br />
How about asking what was the last time a <i>foreseen risk was adverted</i> and how ?<br />
<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">4. "How do you work under stress, can you deal with a lot"</span></b><br />
<b><br />
</b><br />
Basically you're explaining that you work in an abusive environment and that you want the person being interviewed to accept that as the norm, so you can treat them that way later.<br />
<br />
<b>Alternative</b><br />
<br />
Realize that focused, healthy and happy people are far more productive?<br />
<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">5. "Tell me why you want to work for company X"</span></b><br />
<b><br />
</b><br />
Ego driven and nonsensical. This nothing more than an attempt to hear lots of good things about a company the interviewer works for. And it's every actually the <i>company</i> you work for it's a project you work with. You could choose any mid size organisation, and it's a collection of groups doing different things, there is no magic Kool-Aid dispenser.<br />
<br />
<b>Alternative</b><br />
<br />
You're likely attempting to discover motivation for being there ........ ultimately it's to get paid, deal with it. So why not focus on why a person does the kind of work they do. In the IT case, <i>why</i> the certain area of coding they work in. They could look at my resume and legitimately ask "Why LAMP for 13 years, what keeps you engaged with it that long", for someone else it could be the internals of a database, or network programming, system design, etc.<br />
<br />
--------------<br />
<br />
Just goes to show 60 seconds on Google and save both sides a whole lot of headache and wasted time before an interview. Also don't say "Thanks for coming we'll be in touch" if you don't follow up as you're just proving yourself to be a liar, say "We'll contact you if we want to take this further" ....... it's call being forthright and honest!<br />
<br />
I'm happy to of had a lucky escape, learning what I did before getting involved.<br />
<br />
As per "<span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;"><a href="http://www.jeremyhutchings.com/2010/11/interviewing-dating-for-techie-playing.html">Interviewing & Dating for the Techie : Playing the game</a>" remember that this is a two way process you have to asses the situation and what is on offer from both sides.</span></span><br />
<span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></span><br />
<span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;">It's good to know I'm not alone, and there is a lot (unfortunately) of this going on :</span></span><br />
<ul><li><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;"><a href="http://thedailywtf.com/Series/Tales_from_the_Interview.aspx">http://thedailywtf.com/Series/Tales_from_the_Interview.aspx</a> </span></span></li>
<li><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;"><a href="http://stackoverflow.com/questions/11464/what-is-the-worst-interview-question">http://stackoverflow.com/questions/11464/what-is-the-worst-interview-question</a></span></span></li>
<li><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;"><a href="http://www.businesspundit.com/the-ten-worst-job-interview-questions-ever/">http://www.businesspundit.com/the-ten-worst-job-interview-questions-ever/</a></span></span></li>
</ul><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;"><br />
</span></span><br />
<span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="font-family: inherit;">Take care people !</span></span><br />
<br />
<a href="http://twitter.com/jeremyhutchings">@JeremyHutchings</a><br />
<br />
<br />
<b><br />
</b>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-48221271791855552222010-12-06T20:16:00.000-08:002011-03-22T10:57:06.556-07:00More myths of software outsourcing<span class="Apple-style-span" style="font-size: large;">1. It will reduce costs, it's cheaper </span><br />
<br />
It's most common excuse I hear, it's also typically the most short sighted, and most that likens software development to manufacturing widgets.<br />
<br />
Firstly creating <b>software isn't akin to producing widgets</b>, it's a creative process that depends highly on communication, and the <i>quality</i> of that communication. I don't just mean spoken language there, as the issues with that are all but obvious, but cultural as well. The culture and approach of the company, as well as the work ethics of the teams must be the same, or there will be a lot of friction.<br />
<br />
The <i><b>speed that decisions can be made</b></i><b> and acted on</b>, are dependent one two things.<br />
<br />
Firstly on how they decisions are <i>actually made </i>(i.e. process, hence why smaller teams with less management overhead and <b>programmer lead projects will always beat the top down meeting driven interruption culture of bigger organisations</b>). Though secondly and that which has more importance here is, the speed at which that decision can be captured, understood, written down (requirements, design, ticket etc), scheduled and communicated.<br />
<br />
If you have an implementation team that is so far removed from that, it will be slower and the quality of the communication will be worse, clarification, updates and corrections will sap time, and time is very expensive.<br />
<br />
<i>Support</i> - Once the system is built you're beholden to external costs for change and management of it. If you choose to bring it in house you do so with little or no implementation knowledge, so the learning curve for that will drive up costs massively as the internal team get up to speed.<br />
<br />
<i>Quality</i> - <b>The external team's main focus is making money</b>, not making you a quality product, it has to be, it's a business equation. So negotiating for the best price (i.e. cheapest up front) is going to ensure high technical debt that will lower quality and drive up costs.<br />
<br />
<i>Ownership</i> - There is a legal overhead for protecting your IP and possibly and company secrets (though if you're mad enough to outsource that ! ....... then well, you're likely not reading this).<br />
<br />
<br />
<span class="Apple-style-span" style="font-size: large;">2. Developers are all the same, it's all about numbers</span><br />
<br />
The difference from bad or average system architects, designers, developers to good or great ones, is massive, I think that argument was proved a long time ago. The levels in productivity and quality are an order of magnitude higher from high quality developers.<br />
<br />
As <a href="http://forio.com/resources/article/the-pitfalls-of-outsourcing-programmers/">Michael Bean</a> mentions :<br />
<br />
<i>"But writing innovative software cannot be done on an assembly line. It requires hard-to-find development and design skills. Farming out development to legions of programmers overseas will not create a differentiation advantage. When a technology company outsources software development, that company loses its capacity to innovate and its competitive advantage."</i><br />
<br />
And never a truer word said I think, what is it that is trying to be achieved: creative & innovative software, or cheaper and faster widgets?<br />
<br />
If you are (essentially)a software company, that being what you offer the customers is software, or a service that relies on software, <b>then it's the core of what the business is</b>. Viewing it with such laborious distance means you will most defiantly reap what you sow.<br />
<br />
Creating good software & systems involves passion and creativity with a good healthy mix of "getting things done" attitude, out sourcing to a Dickensian sweatshop instantly removes all of these factors.<br />
<br />
<br />
<span class="Apple-style-span" style="font-size: large;">3. We'll bring it in house when it's done, and then look after it</span><br />
<br />
I've worked on several clean up jobs and have walked away from several more because of this myth.<br />
<br />
The reason the company changes it's mind and realizes that outsourcing is wrong, is because it goes badly, the relationship is sour and what is being produced is substandard and mediocre.<br />
<br />
Typically because of a combination of the reasons mentioned above; poor communication and cost, over quality.<br />
<br />
On the point of things going wrong ......... even if you have the best person in the world who's responsibility with in the company is to manage the development, their effectiveness is going to be massively reduced by having to deal with external teams.<br />
<br />
They effectively turn into nothing more than a requirements channel and point of blame for the project, with little or no ability to influence proceedings.<br />
<br />
I recently interview with a company and only learnt about this exact thing in the interview ....... I couldn't wait to get out of there ! I've learn't my lesson, trying to pull one of these projects out of the technical grave led to the experience and inspiration for<a href="http://www.jeremyhutchings.com/2009/12/burnout.html"> the burnout post</a>.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">4. Can't find the staff, it's all the local markets fault, we have to do it</span><br />
<br />
Would you open what you want to be a high quality restaurant with no chefs and then outsource everything in the kitchen to a remote fast food joint?<br />
<br />
OK, the logistics are different but the analogy points out the lack of sanity in it all.<br />
<br />
<i>It's what a technology company does</i>, and if out sources that it gives up the ability to control the quality and innovation at source.<br />
<br />
On the point of "can't find the staff" ........ notice I'm not talking about physical location. I've nothing against remote working, personally I've done it for years. The original vBulletin team (that I was a part of) which built version 3.0 until 3.6, were remote working for the majority of the time. And the quality in that was very high (I'm proud to say), we weren't outsourced development, <i>we were a part of the company.</i><br />
<br />
<i></i>You can build a <i>virtual team </i><b>and maintain high quality</b> <i>, this is</i> <i>2010,</i> the internet is the primary form of environment & communication for most of us in development. Just about all developers and designers I know prefer it.<br />
<br />
Which is another blog post in itself, about mental health and social interaction!<br />
<br />
37signals and <a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439?ie=UTF8&tag=itsafunnyo-20&link_code=btl&camp=213689&creative=392969" target="_blank">Peopleware</a><img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=itsafunnyo-20&l=btl&camp=213689&creative=392969&o=1&a=0932633439" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" /> are forever talking about methods of working, and how typical offices are actually bad for most creative software work (though they have their place).<br />
<br />
<br />
<span class="Apple-style-span" style="font-size: large;">5. We can use agile, get versions back quickly & keep track</span><br />
<br />
Which within itself is no reason to outsource, if you really want to be "agile" then having the team as close to the feedback and decisions (i.e. a part of it), as possible is best, not the opposite !!<br />
<br />
While you might see results sooner, you're still going to be plagued by all the above points.<br />
<br />
<br />
<span class="Apple-style-span" style="font-size: large;">6. When it goes wrong we can sort it out</span><br />
<br />
When it goes wrong with outsource ............ it gets contractual, with an internal team it gets intense.<br />
<br />
Though at least they are part of the company and the company is the people and technology. So in the later scenario the focus is to fix it and be successful, not to engage in the blame game and hiding behind contracts and quoting the effects of poor to each other.<br />
<br />
<br />
<br />
Further reading :<br />
<br />
<ul><li><a href="http://svprojectmanagement.com/author/awotiz/" title="Posts by Anita Wotiz">Anita Wotiz</a> - <a href="http://svprojectmanagement.com/outsourcing-software-development-a-bad-idea" title="Outsourcing Software Development – a bad idea?">Outsourcing Software Development – a bad idea?</a> (lots of follow up posts)</li>
<li><a href="http://www.passioncomputing.com.au/">Passion Computing</a> - <a href="http://www.passioncomputing.com.au/Articles/Disadvantages-of-Indian-Outsourcing.aspx">Disadvantages of Indian Outsourcing</a> (more personal experience) </li>
<li><a href="http://www.bukisa.com/people/avanicimcon">avanicimcon</a> - <a href="http://www.bukisa.com/articles/296458_risks-in-outsourcing-software-development">Risks in Outsourcing Software Development</a> ( 4 great points)</li>
</ul><br />
<br />
Update : As per a comment by Michael Thore over at <a href="http://www.salient6.com/"> http://www.salient6.com</a>, I'd agree with adapting the title to "offshoring" opposed to the generic and possibly misleading term of "outsourcing". But I still advocate having development as an integral & core part of the <br />
business if and where possible. Ideally from the outset and definitely <br />
in the long run.<br />
<style type="text/css">
p, li { white-space: pre-wrap; }
</style>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-88967399682731880.post-44329346102654086242010-12-05T16:53:00.000-08:002010-12-05T16:53:12.840-08:00OffLog : High volume reporting on a limited system<ul><li>How do you<b> </b>log a <i>lot</i> of data without killing your limited setup ?</li>
<li>But how can you scale the system or change components easily, i.e. have good architecture ? </li>
<li>How to not over load production databases, so logging kills the actual system you're running ?</li>
</ul>Questions I've dealt with a few times, and a pet project for logging on a game I'm building that I thought I'd share.<br />
<br />
<h4>The situation</h4>You've been told to report on "<i>everything</i>" though not given the kind of back-end (or cash) that Facebook/Google/Amazon have for systems like MapReduce or Pentaho.<br />
<br />
You have at least one server (virtual or real) for "reporting", or at least an allowance of processing time and storage some where.<br />
<br />
Though if the systems gets big you want to be able to swap out the back end or add more capacity without having to do anything in the application.<br />
<br />
There are likely some front end machine(s) doing some kind of scripted work, for an application or game (LAMP in this example) and a database back-end for the actual application.<br />
<br />
But the main thing you have is a<b> LOT </b>of data to log and process.<br />
<br />
Given how much time and effort that has gone into building the application and making it efficient, the thought of slowing it down with logging irks you.<br />
<br />
Lots of tight code & apc/memecache, and now you're going to slow it down logging to a database, slowing everything to disk speed and synchronous calls ? Hell no.<br />
<br />
And rightly so.<br />
<br />
Personally I believe : <br />
<ol><li>Reporting shouldn't go in the "main database".</li>
<li><b>Reporting shouldn't slow down the application</b>, or as one grows so does the other, and it all grinds to a halt.</li>
<li>Good <b>architecture at the start, helps advert problems along the way</b>, and can not only mitigate some nasty problems, but helps in long term maintenance and evolution of the system.</li>
</ol><br />
<h4>The components</h4>This example is LAMP (and memcache)<b>, </b>with the addition of <a href="http://en.wikipedia.org/wiki/Gearman">Gearman<b>.</b></a> That's it.<br />
<br />
And if you haven't played with Gearman, the sooner the better.<br />
<br />
<h4>The set up</h4>I'm using two servers, though can do everything on one and move to two when I need or want, transparently to the client machines.<br />
<br />
<div align="center"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6HRGmhL7W57TCGO8t_CYmvZ3rFx5vd2rikCAOK7-LIWte_BYQOQSbGqV6Im3yv70WkBu8C5c7_l0wnMkYhB3qvhftUCggZ6GfpoAExfWk-fftqyCfMkQ8HCV3wRKUlSZhyphenhyphenLFc0E6ZZo4/s1600/offlog.png" /></div><br />
<ul><li><b>C</b><i>n</i> - Client script uses <a href="http://php.net/manual/en/gearmanclient.dobackground.php">GearmanClient::doBackground</a> to hand off logging actions to Gearman, as to not interrupt the main script</li>
<li><b>W</b><i>n</i> - Worker, maintains persistent connection to memecache on logging server, to update action counts</li>
<li><b>0-5</b> = 6 * 10 min time slices in memcache (the ring buffer), workers log to current time slice</li>
</ul><br />
So what happens ?<br />
<br />
The key part is the workers from gearman are filling a <a href="http://en.wikipedia.org/wiki/Circular_buffer">Ring Buffer</a> in memcache, In this example, there are 6 <i>time slices</i> in the hour, so 10 min sections.<br />
<br />
As a <i>logging action</i> is created (or incremented) at min 6 of the hour it goes in slice 0 (0-5 for the 6) at 15 past the hour, it's slice 1, and so on.<br />
<br />
Much like the sections of a trivial pursuit board game piece.<br />
<br />
As one slice is filled and the clock ticks on, so it moves onto the next slice every 10 mins. <br />
<br />
This is the first place we balance accuracy with "getting the job done", we're pre-aggregating. We can break down to 10 min sections, but beyond that the detail is lost.<br />
<br />
A fair price for getting a good enough idea of what is going on I think.<br />
<br />
If there are users or actions that <b>must</b> be logged, then have the workers just those data points separately. As it's all going through Gearman the client doesn't know no care (and shouldn't) what happens.<br />
<br />
The use of Gearman here allows the front end scripts to hand off logging data and keep running at maximum speed. Gearman can then buffer and pass of data as quick as the workers can process it. At this point if the memecache is on another machine, it's down to network speed, though only for logging, not your main application.<br />
<br />
<h4>The collection & the register </h4>So as we've just read the Gearman workers on the front end servers are filling up the slices in memecahe (with persistent connections to alleviate start up and tear down).<br />
<br />
But now we have to collect that data and store it.<br />
<br />
Each of the workers do two things, they take log action data from a front end script and put the details in memcache, they also make sure that the userid and action id is logged in a <b>register</b>.<br />
<br />
This is because we can't "SELECT *" from memcache to get all the users that have done something in that 10 min section.<br />
<br />
This is where cron comes in, ever <i>slice size</i>, being 10 mins in this example and the default implementation.<br />
<br />
Firstly to get the list of users that have done something in that slice, and what the list of actions are. Then with a loop though the users and all the actions all the counts are grabbed from memcache.<br />
<br />
There will be some misses here, as given we have a list of <i>all</i> the users and <i>all</i> the actions, not all users have performed all actions. Though we'll accept the misses to make sure we get it all.<br />
<br />
After which we have all the data from that slice and it can now be left, as the memcache time out is 35 mins so it will have evaporated before the workers come around again with fresh data.<br />
<br />
Also given the ring buffer size and time dimensions each cron has 35 mins to complete aggregating and pushing the data to the database before the data times out in memcache.<br />
<br />
Now in processing time terms, 35 mins is a veritable ice age and if you run over that there is something else going on!<br />
<br />
<br />
<h4>Integration to an app</h4>Using the PHP client, we can instantiate the logging client at the beginning of our main application script, so we can log multiple items though out the script if needed.<br />
<br />
<code><br />
$loggingClient = new offLogClient($offLogCfg);<br />
$loggingClient->logSimpleAction(1, ACTION_USER_LOGON, 'test string');<br />
</code><br />
<br />
First param being the userid. Seconds being ACTION_USER_LOGON constant number, which is defined in the config along with all the others needed.<br />
<br />
The third is an arbitrary sting that can be used for all manner of extra information, though for the purposes of action counting, is ignored. This is used for a <i>watched action</i> or <i>watched user</i>, where we want specifics.<br />
<br />
<h4>Aggregation</h4>The aggregation happens in the slices of the buffer of course, each piece of data being a userid and a actionid (key) pointing to a count (value) :<br />
<ul><li>Userid X did action Y, Z times in this time slice.</li>
</ul>Once the cron job has gone though and collected all the data from the time slice and put it in the database, you're back into the realm of SQL where you can generate reports, archive data, mine, spot trends, and graph out.<br />
<br />
On the topic of graphs, I use : <a href="http://jpgraph.net/">http://jpgraph.net</a> and will be adding a few simple scripts to the code by way of example as well. <br />
<br />
<h4>Future</h4>As long as you have a LAMP environment, all you need to install in a Gearman server and the support in PHP, there is an overview of that <a href="http://www.geeksww.com/tutorials/operating_systems/linux/installation/installing_gearman_shared_pecl_extension_for_php_on_debianubuntu_linux.php">here</a>.<br />
<br />
The only other thing needed is the code, and I've put that in gitHub here :<br />
<br />
<a href="https://github.com/JeremyHutchings/OffLog">https://github.com/JeremyHutchings/OffLog</a><br />
<br />
Obviously a work in progress and an idea I'm playing with and developing, now that I've thought it through and written the blog piece I can get on with coding it up!<br />
<br />
Given the use of Gearman, if the logging requirements change level of details, volume, etc using a different back end system is easialy doable.<br />
<br />
An example of why I think components in a system though exhibit the same two qualities that good OO code does, good encapsulation and low cohesion.<br />
<br />
<a href="http://twitter.com/jeremyhutchings">@JeremyHutchings</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-25084791563680286472010-11-30T13:16:00.001-08:002012-01-02T12:33:51.501-08:00Where did software quality go ?A while ago I met with an ex Technical Director of a very large game company here in Vancouver. I was working for a local company myself, and we met about a possible project between the two companies.<br />
<br />
While going over the details we reviewed some legacy systems that they would be working with, the software quality was less than ideal.<br />
<br />
The statement he made quite a few times that got me thinking was - "<i>all</i> software is messy and usually bad, <i>and that's just the way it is</i>".<br />
<br />
To which I instantly thought :<br />
<b><br /></b><br />
<div style="text-align: center;">
<b><span style="font-size: small;">“The constant assertion of belief is an indication of fear”</span></b></div>
<div style="text-align: center;">
<b><span style="font-size: small;"><br /></span></b></div>
<div style="text-align: center;">
<b><span style="font-size: small;"> </span></b><span style="font-size: small;">~ Jiddu Krishnamurti</span></div>
<br />
<br />
I'm not sure if this was just his defeatist attitude, or one that had been fostered from coming from a corporate environment that was steeped in technical debt and that usually worked to the lowest common denominator.<br />
<br />
Though it did make me think - as I don't accept that, at all, so why do so many others?<br />
<br />
In my experience people who create technology <i>typically</i> attempt to do the best they can in the environment they are in, with the skills, information and support they have. We all have bad days, and inexperience can trip up neophytes as they learn. Though the vast majority of developers I've worked with <i>want</i> to create quality, something to be proud of and to be seen on TechCrunch and the like.<br />
<br />
So why does it "go wrong" so much? <br />
<br />
Why is a lack of quality :<br />
<br />
A) accepted as the norm (by a truth by constant assertion I believe)<br />
<br />
B) supported by attempts to do a decent job signed off as "over engineering", "wasting time" and my favourite ........... "taking too long" (as if technical debt is cheap to work off)<br />
<br />
---<br />
<br />
I'm happy to say I've worked in both kinds of places - though sad to say the poor attitudes to the <i>approach of creating</i> software are still very prevalent.<br />
<br />
Lots of places want the rewards of success of doing a quality job, so why are so many companies avidly avoiding actually doing a good job by choice? Partially senior management ignorance & lack of quality management, though mostly a short term view I think.<br />
<br />
I was happy to see Mark Zuckerberg speaking a while ago about longer term view of technology - basically how so many failed dot coms were thinking build junk and sell it quick, and got what they deserved. <br />
<br />
I also find that a large and worryingly growing section of business believe that "agile" is a one stop shop to assuring quality in software and that it will cure all ills - it wont. It is just a process, and therefore an organisational tool. It organises work flow and tries to support communication, but it isn't going to assure McLaren levels of quality.<br />
<br />
You can apply all the tools (process or tech) you want, though <i>if the mindset and approach is the same</i> it's nothing more than a thin veneer. <br />
<br />
<br />
I think there is a collective answer to this, and one that developers themselves must be a part of, opposed to finger pointing at "the suits who just don't get it". If they don't "get it", then we have a responsibility to show how and why, as well as learn the bits we don't get in business.<br />
<br />
---<br />
<br />
<b>Firstly</b> I think that there is a lot of confusion as to what a prototype is and what it purpose is. If it's just to show mocked up functionality of put in front of a VC, then that's it's purpose. Not to be given to a development team the day after funding and told to "make it work". It was a tool to show concept to get money ..... <u>then let it be that, just a prototype</u>.<br />
<br />
Defend against the "Oh it's built using agile we can just improve on it", if it was and architected correctly then fine, but if it was hacked together over a weekend to have some buttons that work, then that's what it is, a hack job. You take some UI or content, but be very aware that a demonstration on a laptop and serving tens of millions of users a day in a distributed scaled system manner are about as different an environment as you can get. <br />
<u><br /></u><br />
<u>Having someone who understand architecture is vital</u>, i.e. the most senior technical person. Look at the vast majority of successful tech companies leaders and their levels of technical knowledge, opposed to just business acumen. <br />
<br />
<br />
<b>Secondly</b> I think a lot of developers know the difference in quality, though they don't communicate that though fear of reprisal and the demoralising put down of "Oh it's just a 5 min hack, put it in". Leaning how to manage that communication and finding a suitable process for change management is also vital.<br />
<br />
I enjoy cowboy coding, when it's just me and for hobby projects, even then I follow some process ........ but when it's a company and/or team environment, <u>the benefits and speed of quality far out weigh the midnight hacker mentality</u>. Especially when capturing the logic of the solved challenge (i.e. design and code comments) and sharing that amongst the team, which is the essence of what developers should do (fire people who don't comment code and can't explain it 2 weeks later, seriously !!). <br />
<br />
A business & sales mind (or any mind for that matter, we all do it) will see a "product" and make assumptions as to it's purpose, fitness for market and all manner of things. That needs to be clarified amongst all parties and especially understood by the product owner. <u>Manage expectation and focus on clarity of communication.</u><br />
<br />
<br />
<b>Third</b> is the quality of engineering, education and knowledge, or the lack there of. A piece over on <a href="http://supercoders.com.au/blog/designpatternshavemostlyflopped.shtml" target="_blank">supercoders.com.au </a>covers this nicely, talking about Design Patterns and why there is a difference between a 3 week scripting course and a 4 year software engineering degree .... I've seen so many wheels reinvented, or problems misdiagnosed or not even seen that a band aid is applied (i.e. accruing technical debt) that it's shocking.<br />
<br />
<u>We need to do better, and to do so, we need to be better</u> ........ we also have to prove why we should be building quality then speed, any by proof. That being quality software that you can build on opposed to spending the future "fixing". <a href="http://blog.cutter.com/2010/01/11/self-discipline-and-self-organization/" target="_blank">Self discipline</a> comes into this as well - as does our professional approach - as that quality will make it's way into the project and software.<br />
<br />
I'm not arguing for over engineering or huge out of control development cycles, quite the opposite. The main outcome of building quality software that I've seen is the (accelerating) speed at which new development can be performed. When you are spending 90% of your time build and 10% fixing well isolated and architecturally designed systems (and not the other way around), you build quality and faster.<br />
<br />
<b>Fourth</b> would be process. There is a huge amount of knowledge and experience available on how to "do it", as with design patterns and code, it is with buisness and teams, don't reinvent the wheel. I see 37 signals selling books that people call revolutionary thinking ..... alas Tom DeMarco explained most of it decades ago in Peopleware. A lot of project measurements are quite <a href="http://thecriticalpath.info/2010/11/30/outdated-success-criteria/" target="_blank">out of date</a> as it is, and the organisation as a whole has a responsibility to focusing on <a href="http://blog.cutter.com/2010/12/22/more-agile-orgs-will-attain-higher-levels-of-organizational-maturity/" target="_blank">learning and self improvement</a>, as much as the individual.<br />
<br />
It's this thought to building quality foundations that agile <i>usually</i> throws out the window, much like the short term view of finance the western world has taken over the last 30 odd years ....... and how did that turn out.<br />
<br />
----<br />
<br />
So ultimately - quality leads to, more speed & less haste. Don't <i>take your time</i> but <i>use your time wisely</i> to build something of quality that is fit for purpose.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyrfMG5jFhmkuPCAririrhKf1g6YXU8gvr1UpqgY8Jju3tUtxztTaQBSaZQ0jwjhuy6VbZKPRY-nNDi9FBDbFIVAH5flQxXK4l67_r0qtqJpQudoF0Kbbu0-QT4v_NUgZ-ugrZ-AdEaY/s1600/quality.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyrfMG5jFhmkuPCAririrhKf1g6YXU8gvr1UpqgY8Jju3tUtxztTaQBSaZQ0jwjhuy6VbZKPRY-nNDi9FBDbFIVAH5flQxXK4l67_r0qtqJpQudoF0Kbbu0-QT4v_NUgZ-ugrZ-AdEaY/s1600/quality.jpg" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-4900172356647607302010-11-28T20:37:00.000-08:002011-06-20T07:50:22.641-07:00Top 10 improvements for PHP developersCraig Buckler's post over on sitepoint.com : <a href="http://blogs.sitepoint.com/2010/11/19/mysql-mistakes-php-developers/">Top 10 MySQL Mistakes Made By PHP Developers</a> got me thinking. Are they <i>really</i> mistakes, and are the answers giving people all the options, or is there more that can be added?<br />
<br />
So this post is and extension and part reply to that blog post. <br />
<br />
Maybe the 10 points are just things we can improve on, in <i>various ways</i> depending on what it is we're doing. Or is it just shifting processing & logic from one area to another.<br />
<br />
My caveat would be - that if every beginning PHP dev read the 10 points in Craig's blog and learnt; the dev world would be a better place. I'm thinking <i>beyond</i> the original points.<br />
<br />
I'll just mirror the 10 points he makes, to give my 2c to the discussion :<br />
<br />
<br />
<b>1. Using MyISAM rather than InnoDB</b><br />
<br />
I mostly agree with the premise of "Oh just use InnoDB", given what Facebook are doing with it, and the level of active development going on, it's a safe bet at the moment.<br />
<br />
Though technically it's not a <i>database</i> engine, that's MySQL, it's a <i>storage</i> engine that's being talked about, and there a few of them, not just two.<br />
<br />
There are a few out there. Just reading though a list to see what they are built for, and <i>why</i>, has to be a good idea (even if you just default back to InnoDB).<br />
<br />
Reading about the current developments and options out there is always a good idea.<br />
<br />
Given your <i>designing</i> a data store, how are you going to use the data? What is the use pattern, is it just an archive or an in memory look up, or something in between?<br />
<br />
Why use just one? Can you log to one database using one storage engine and use the other for live data (data relations allowing).<br />
<br />
Also given that Oracle owns MySQL now, is what you're doing compatible with other options like MariaDB if you have to move ?<br />
<br />
What about using XtraDB or PBXT ?<br />
<br />
Do you need full text search (supported in MyISAM) or can you use Sphinx or Lucene ?<br />
<br />
Sure, for ~95% of people (including most of the things I'm doing now) InnoDB is fine, though keeping up with what is going on and <i>making informed choices</i> about technology is no bad thing.<br />
<br />
Remember the main reasons for InnoDB over MyISAM, is row level locking and transactions. Choose data integrity over speed, and the speed argument has mostly gone away now anyway.<br />
<br />
<b>2. Using PHP's MySQL functions</b><br />
<br />
I think this is assuming that you're putting SQL <i>directly</i> into your logic, i.e. Controller in the world of MVC. Yes, you should use the mysqli functions and weigh the costs of PDO and prepared statements <br />
<br />
This also comes back to the idea of "where is the logic" in this system, which I'll really go into in point 5. <br />
<br />
Suffice to say, if you have PHP on one level (business logic) producing functionality, and MySQL on another level (data store) providing more functionality; can they both scale to meet each others needs ?<br />
<br />
You can tune MySQL to some insane numbers, especially when you're on version 5.5 with lots of cores and against SSD like Fusion-I/O ...... though you can keep putting in web servers till you saturate the network with PHP.<br />
<br />
Also, this all predisposes, you're running against one database, or even a master-slave pair for some kind of redundancy, or read-write balancing.<br />
<br />
If we put aside the scaling of databases issue for a moment, and just be mindful of :<br />
<ul><li>web servers running well encapsulated code = cheap & easy</li>
<li>scaling databases = not so cheap & a pain</li>
</ul>The more you can get the dumb web servers to do, and take load of the database, the better. Just have a load balanced web farm and chuck more servers in it, or "use the cloud" etc.<br />
<br />
<br />
<b>3. Not sanitizing user input</b><br />
<br />
Agree 100%, a no-brainer, and it should be point #1. When we built vBulletin 3 we enforced a single point of access for all user data, the $vbulletin->GPC array.<br />
<br />
A single point of getting the incoming data, which was cleaned and checked, the gatekeeper as it were.<br />
<br />
Personally I assume every piece of data coming in is malicious and the user is trying to break the system ........ does wonders for the stability of the code I write, though not so much for my trust in people and faith in humanity ........<br />
<br />
<br />
<b>4. Not using UTF-8</b> <br />
<br />
Again agree 100%.<br />
<br />
Two things I would add are :<br />
<br />
1) Ensuring you know what UTF-8 is, and <i>why </i>it's a good thing<br />
<br />
<a href="http://en.wikipedia.org/wiki/UTF-8">http://en.wikipedia.org/wiki/UTF-8</a><br />
<br />
2) The difference between the collation types of tables and their uses<br />
<br />
<a href="http://stackoverflow.com/questions/2344118/utf-8-general-bin-unicode">http://stackoverflow.com/questions/2344118/utf-8-general-bin-unicode</a><br />
<br />
<br />
<b>5. Favouring PHP over SQL</b><br />
<br />
Now this is where I disagree ......... a lot.<br />
<br />
But not with the "don't do SQL in loops, and write good SQL" that's another no-brainer.<br />
<br />
I cringe when I see SQL loops .... as I did on a recent project,it must be the digital equivalent of S&M with MySQL in a gimp suit and PHP with a riding crop ...... though I digress.<br />
<br />
<br />
I'll use two (of many) examples, as to why "PHP over SQL".<br />
<br />
1) Architecture, scaling and system design.<br />
<br />
Firstly you are splitting the logic between SQL and PHP as to what is making the decisions with your data, what happens if you have to move away from SQL? <br />
<br />
I'm not siding with the NoSQL gang and just looking for excuses, I'm ensuring that I'm giving myself choices and using a database as a <i>data store</i> first.<br />
<br />
You can doing averaging in PHP near as well as you can in MySQL AVG() with good data structures. <br />
<br />
Also you can point a fair few of web servers at one default set up database, but you can point a <i>LOT</i> of web servers at a very well tuned database when the PHP is doing more of the grunt work.<br />
<br />
So more over all "work" is done, <i>and</i> it gives you more room before MySQL bottlenecks.<br />
<br />
2) Using time - NOW().<br />
<br />
When you have more machines and the system grows, PHP and MySQL are going to be using different system clocks for time() and NOW(). If any of these get out of sync, which time is correct ?<br />
<br />
What happens if the data store (for writes) is on the end of a queue, i.e. JMS or WebSphere MQ, the time the data is processed is important, not when it's written.<br />
<br />
Also if there are multiples of the same data with different time stamps, you can process them in order or enforce a kind of vector locking if needed. <br />
<br />
Personally I usually store times as epoch and do any time calculations in PHP to make it easier, selecting on INT opposed to DATE. The actual year, month, day can be denormalised into columns if really necessary.<br />
<br />
(An upcoming blog post about reporting on a shoe string does that)<br />
<br />
<br />
<b>6. Not optimizing your queries </b><br />
<br />
Yes another good one, though a lot of over lap with #5.<br />
<br />
Having very complicated SQL also supports my argument from #5, just don't do it.<br />
<br />
Get the data in and out as fast and cleanly as possible, and do the rest in PHP.<br />
<br />
If you're tying up your database with queries because you've tried to be "too clever" or were "showing off with your l33t SQL skillz" then next time have a think about clean software architecture, and what is workable and maintainable.<br />
<br />
A short while ago I worked on a project with <i>the worst</i> SQL I've ever seen, even. Even an ex MySQL-AB consultant called it "A master piece ....... but from the dark side, they couldn't of made this worse if they tried; I don't think I could".<br />
<br />
One of my favourite quotes.<br />
<br />
I guess the original developers thought they were being rather cool and snazzy at the time, or more likely that it was a road crash of a development journey.<br />
<br />
Though if it wasn't for some late nights be me and the gang, and throwing a lot of hardware at the problem (while we re-engineered it on the fly), it would of ended the project.<br />
<br />
So bad SQL can be <i>really</i> bad.<br />
<br />
15 way JOINs and 10 inner SELECTs means <i>you have something wrong</i>, not that you're doing well .........<br />
<br />
<br />
<b>7. Using the wrong data types</b><br />
<br />
The opposite of what is said in the original supports what I'm saying, yes make MySQL a dumb data store if that is easier. <br />
<br />
<br />
There are temptations to store INT for epoch <i>as well as</i> DATE or denormalized day, month, year INTs, though unless you're <b>sure</b> the data never changes or isn't supposed to, be very wary of this. <br />
<br />
Again it's about <i>where</i> are you performing the logic. You can put a lot of the logic of what you assume or would of done in SQL, into a decent data layer written in PHP itself. i.e the Model in MVC.<br />
<br />
Also writing up a decent data layer (access layer, abstraction, etc) or using an existing one, adds the ability to put in caching. <br />
<br />
In a recent game back end I wrote, there are 9 SQL selects when the game stars and 2 each time a player turns up, and that's it. After that it's all INSERT and UPDATE, because of <b>memcache</b>.<br />
<br />
Baring memcache going down (then the data layer just fails over to the database ..... and you're back to the PHP on MySQL S&M abuse scenario ! .......) or a restart all reads should be dealt with by cache.<br />
<br />
Even if your data is on SSD not disk, there is no need for it (for reads that is, I understand the need for persistence in storage !).<br />
<br />
<br />
<b>8. Using * in SELECT queries</b><br />
<br />
Very much so, I'd fire people for less .........<br />
<br />
<br />
<b>9. Under or over Indexing</b> <br />
<br />
This very much is relative to the app and how the data is used, though yes it is a balancing act. This takes time and reviewing the data use pattern, slow query log etc.<br />
<br />
It can also be something of a dark art, and you can take a lot of time reading up on key buffer sizes and how they effect your query speed.<br />
<br />
Though one good thing to think about for general learning, is index only scans.<br />
<br />
Here is some reading from the world of PostgreSQL :<br />
<br />
<a href="http://rhaas.blogspot.com/2010/11/index-only-scans.html">http://rhaas.blogspot.com/2010/11/index-only-scans.html</a><br />
<br />
Talk from the MySQL world :<br />
<br />
<a href="http://mysqlha.blogspot.com/2010/11/how-are-index-only-scans-implemented-in.html">http://mysqlha.blogspot.com/2010/11/how-are-index-only-scans-implemented-in.html</a><br />
<br />
<br />
<b>10. Forgetting to backup</b><br />
<br />
Once again I disagree ....... not with backups, they are vital. Because they are needed for the one thing that I do advocate that is what is really important ........ <b>proven restores!</b><br />
<br />
--------------<br />
<br />
Another top 10 list for programmers, that I like :<br />
<a href="http://www.blogger.com/goog_1508396815"><br />
</a><br />
<a href="http://www.techradar.com/news/software/applications/10-mistakes-every-programmer-makes-909424">http://www.techradar.com/news/software/applications/10-mistakes-every-programmer-makes-909424</a><br />
<br />
--------------<br />
<br />
As ever take care and think of what you're doing and <i>why</i>, not only how.<br />
<br />
<a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-88967399682731880.post-40853020896657035292010-11-27T17:08:00.000-08:002010-11-29T11:20:37.759-08:00Agile Agnostic : Which development method to useI've been asked various questions lately that all could be summarised as :<br />
<ul><li>"What do you prefer, waterfall or agile development, which is <i>best</i> ?"</li>
</ul>I find these questions much the same as asking the length of a piece of string, or what does the colour blue taste like.<br />
<br />
Nonsensical and out of context for the most part.<br />
<br />
<br />
Firstly a development method, is just that, a <i>method</i>, a process, an organisational tool. And just like any tool there are suitable and <i>unsuitable places, </i>and ways of using it.<br />
<br />
Using chisels as screwdrivers spring to mind.<br />
<br />
Agile (or any other) method isn't a silver bullet to cure all software ills, or by any means a "radical" new way of doing things that will cure all bugs. <br />
<br />
I think there are lots of different aspects to think about before answering the original question, though I'll go over the following ones. <br />
<br />
<br />
<b>Company culture & history</b><br />
<br />
How does the organisation currently produce software, does it even do that in house ? Assuming there is a development team in house, what are the current methods being used ?<br />
<br />
What are the discipline levels with the current development, how is version control, build management, documentation,target dates, etc all handled ?<br />
<br />
Altering the way in which software is created within itself is going to involve being very aware of what is going on, what you are changing and why.<br />
<br />
I was recently asked in an interview about my thoughts and experience with CMM (along with ITIL, which I hadn't heard of until then).<br />
<br />
I answered along the lines of : CMM is typically seen as a heavy weight out of date system from the world of old school dev. <i>Though</i> it has a very valid premis which I like a lot :<br />
<br />
<ul><li>You have to know where you are to know how to get to where you want to go.</li>
</ul>It's the same as the difference between speed and velocity, velocity has a <i>known direction</i>.<br />
<br />
So before changing or "improving" the current way of doing things, you must first know where you are. Even if that is CMM level -2 !<br />
<br />
<br />
<b>Team dynamics</b><br />
<br />
Given that a development method is a process, it's a guide and limit to human behaviour. How is the team going to react to that ?<br />
<br />
Sure you can take the stance of "You're paid to do as you're told, get on with it", though this isn't the military, and I tend to have more respect for people than that.<br />
<br />
If you are attempting to improve something, in this case the out come of development, you should know what you're after. Be that :<br />
<ul><li>Speed of development</li>
<li>Uniformity of work</li>
<li>Less bugs</li>
<li>Faster release cycle</li>
</ul>Or more typically, a combination of the above.<br />
<br />
For a method to be successful you have to state what you think it should achieve so you know if you're getting what you're after.<br />
<br />
I've seen several teams where a certain method was introduced and things (i.e. quality) got very obviously worse.<br />
<br />
So if you can identify what it is trying to be achieved, and then share that with the team, it will be much easier.<br />
<br />
Identifying issues with the current <i>process</i> and not the people, while focusing everyone on a different outcome via a "better way" I've found gets much more support.<br />
<br />
A shared vision and understanding of <i>why</i> there is change is far more likely to be adopted and succeed, than a dictatorial approach to "fixing people's mistakes".<br />
<br />
<br />
<br />
<br />
<b>Skills and experience of facilitators</b><br />
<br />
Managing change in itself is a massive topic, just google "managing change"....<br />
<br />
Tough attempting to influence a group of people to change their behaviour is no easy task. The all too familiar style of management will just "lay down the law", though this has a few main side effects :<br />
<br />
<ul><li>Resentment</li>
<li>Short term wins over long term gains</li>
<li>No stickiness of change (once the influence is gone, the system reverts)</li>
</ul>Knowledge of the method is just one part, self-awareness and knowledge of team dynamics is likely more important. <br />
<br />
What to do with conflict, resistance, apathy ? Far more important than getting a time estimate on a chunk of work, or drawing a shiny new graph for "senior management".<br />
<br />
Also talking of senior management, do they assume that agile means they get to change their mind completely every sprint without consequences ?<br />
<br />
<br />
<br />
<b>Architecture & Design</b><br />
<br />
Basically, does the method take it into account ? My main criticism of agile (used in ignorance) is that upfront design and defining a starting point is avoided, as it doesn't seem "agile".<br />
<b> </b><br />
Then with a constant focus on the minutia of the code (i.e. what's happening in the next X weeks/days), architecture goes out the window. Typically followed by technical strategic planning, it's as if there is a rush from one end of a polarized spectrum to the other. <br />
<br />
No method I've used or researched <i>actually</i> advocates that, though I've seen it assumed in practice and the rush to skip it very evident.<br />
<br />
There is a caveat here though - some accomplished and experienced developers can typically go straight from mind concept to code within an architecture naturally. Though they are typically the top % of what they do and they are working on their own or with another (XP style).<br />
<br />
The context I'm talking about is development groups within a business.<br />
<br />
I've been in sunk-works environments where you are allowed/expected to do this at work, though it's sinfully rare. <br />
<br />
<br />
<b>My Answer </b><br />
<br />
As it's just a tool, it all depends on the job at hand.<br />
<br />
Though typically I find the best outcomes come from a blend of both. Take some of the initial aspects of waterfall to lay the foundations & vision of the project, identify the stakeholders and gather initial requirements.<br />
<br />
Then move into wire-framing, investigate different technology, ensure the whole team has involvement and input from day one.<br />
<br />
While all the pieces are coming together the call has to be made for "this is good enough", being that the picture is clear enough to begin the build. This is where the process typically turns into what most people think agile is.<br />
<br />
<br />
<br />
<b>Conclusion</b><br />
<br />
I believe being wholly evangelical about a tool, be that a agile method, Ruby on Rail, Drupal, etc ......... or anything, <i>compromises a project</i>. you can't be objective if you believe there is one (and the same) answer for everything <i>all the time</i>.<br />
<br />
The most adaptable and successful systems I've observed are typically blends, show flexibility, and <i>are focused on getting the job done, not being right all the time!</i><br />
<br />
<a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a><i> </i>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-81367646461413535642010-11-05T13:01:00.000-07:002010-11-06T16:50:58.788-07:00Interviewing & Dating for the Techie : Playing the gameI’ve seen quite a few posts recently about interviewing, hiring & job hunting in IT, so I thought I’d share my views.<br />
<br />
There seems to be quite a divide between companies that think they are the best, want to be, and ones that <i>actually</i> are. The latter are <b>fun, passionate, free flowing</b> places where everyone wants to work. The former seem to just pay lip service to the idea, while demanding their (actual and potential) <b>employees pick up the slack of the organisation.</b><br />
<br />
At least the ones wanting to be, know where they are, and are <i>trying</i>!<br />
<br />
The flip side is there are <b>a lot of job hunters, who aren’t realistic about their own abilities</b>, or who haven’t really thought about what they are after.<br />
<br />
I’ve been the interviewee and the interviewer a few times over my career, so like a lot of us I have dealt with both sides of the coin. A lot of time is spent sorting the <b>suitable</b> people from the <b>unsuitable</b> people. Just as there is sorting <b>suitable organisations from unsuitable.</b> I know how tiring and frustrating it is for both sides.<br />
<br />
It cuts both ways for people, and organisations. Try to know where you really are on <b>your side of the fence,</b> when it comes to what you have to offer and what you can realistically partner with.<br />
<br />
I liken it to dating as there are some fun analogies, as well as a lot of similarities. There is a good reason for that, because it's all about looking for, and starting healthy relationships with suitable people.<br />
<br />
Personally I’m either hiring for, or negotiating contracts. So it’s a combined issue for me, as I’m in either one of the roles at various point in time. Either <i>having</i> the power, or doing the <i>chasing</i>. Or as well see, just assuming it's that way.<br />
<br />
[analogy time] Depending on your cultural & social context, there is usually a pursuer and the pursued in typical dating...[/analogy time]<br />
<br />
So what is the frustration both sides experience, and what can we do about it ?<br />
<br />
<hr /><h3>What’s being looked for - All that glitters is not gold</h3><br />
What constitutes a suitable <b>employee</b> (I’ll talk about a company later) might be wholly technical, (as appears to be primarily for <a href="http://www.rethinkdb.com/blog/2010/06/will-the-real-programmers-please-stand-up/">rethinkDB</a>) though it’s always <b>what is relevant.</b> If you are hiring a C/C++/etc coder (or call yourself one) you sure as hell should be able to (create then) reverse a linked list in code in an interview, and get <i>most</i> of the code right.<br />
<br />
That is suitable to <b>them</b>, I’m sure they look at other areas (it’s just and example).<br />
<br />
I know some excellent <b>problem solvers</b>, who could solve the problem in PHP. They would use an array and a combination of array_push(), array_pop(), array_slice(), etc and foreach() for traversal. Though would figure out the syntax over time in C for <b>the logic they know</b>, if they had to.<br />
<br />
[aside] Also, they would likely develop it much faster in PHP, it would be easier to read, support and understand, Though I digress into the “bigger picture” of what makes a software engineer and team member, over a hacker/coder/etc........ [/aside]<br />
<br />
I’d do it in PHP or Java myself, though <b>it’s what's is relevant & suitable.</b><br />
<br />
What is relevant to people and organisations? What working challenges and environment is an individual looking for? What is an organisation looking to solve or get done, and in what manner?<br />
<br />
I’m far more interested in<b> getting the job done well</b>. So when interviewing I’m assessing <b>someone's ability to think </b>about what the actual problem is, and what are the different approaches are. I don’t want to limit how they do it with leading questions, I want to see them in action <b>being creative</b>. So what if they don't have the specific skills now, if they are the right people <b>they will learn</b> them.<br />
<br />
And being able to offer that learning is valuable, I'll take <b>knowledge over money </b>(sure once I have the bills paid !).<br />
<br />
I’ve tripped up lots of people in interviews with questions that (most, I think) in any normal situation would of likely figure out. I think these kind of “solve-everything-in-5-mins” problems under pressure, has a lot more to do with the interviewers ego and bad technique. They have little to do with <b>finding good problem solvers, who can develop solutions.</b><br />
<br />
<span id="internal-source-marker_0.9676147485236647" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><analogy time=""><analogy time="">Doing this is much like asking on a date “So why are you better than my ex they were perfect and could do everything perfectly. Now explain to me why you’re perfect as well, while I judge you in a narrow way, opposed to learn about you”</analogy></analogy><span id="internal-source-marker_0.9676147485236647" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><span id="internal-source-marker_0.9676147485236647" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<br />
I’ve been guilty of it, and I’ve experienced it in interviews with people who know no better, at least now I can see it for what it is.<br />
<br />
There is a balance between skills in the work place, and more importantly in <b>teams</b>. Personally I rate the <b>ability to communicate</b> (ideas, questions, learning, etc) and the <b>desire to learn</b> very highly.<br />
<br />
As with <a href="http://www.jeremyhutchings.com/2009/12/rock-star-vs-rock-solid.html">rock stars vs rock solid programmers</a> what's the point of having an “uber l33t” coder who dose nothing but destroy the team, and therefore the product ...... and all because they can code a simple problem in 4 minutes, opposed to 8. You’ll get your <a href="http://skife.org/interviews/design/2010/10/27/favorite-interview-question.html">Ning</a> re-invent-the-wheel problem sorted out in record time. Though can that person communicate it, and then help the team learn and grow? Let alone have they ever looked after such a system in operations, or documented it for others that don’t speak regex naturally.<br />
<br />
[aside] There is a lot to be said for <b>putting developers on support </b>to learn, before working on the code & systems. At vBulletin the original developers (including me) <b>all did support</b>, to keep us close to the customers and daily issues.[/aside]<br />
<br />
As for a programmers who actually have a (holistic) <b>systems view</b> of what they are doing, opposed to myopic (albeit good) view of what they are doing in an IDE is worth an awful lot. It’s about multi functioning teams and well rounded people to me, I’ll take a <i>slight</i> hit on the technical front for someone who knows how the world works, and loves to learn about it.<br />
<br />
<hr /><h3>Employees - Flirting with companies and measuring potential</h3><br />
Do you know what your goals are? Obvious answer #1 for a lot of people is “get a job/contract and earn some money”.<br />
<br />
Though that is the outcome, how about :<br />
<br />
<ul><li>What does that job entail : more of the same and safe, or trying something new</li>
What is the environment like : noisy office for 8 hours, or some flexible telecommuting
<li>What is the reward associated with it (and why) : being realistic, and money is one part</li>
<li>What is the team like (personally I don’t like to work with people I can’t have a beer with)</li>
</ul><br />
<br />
So figure out what it is you want. Better to have a good idea and stick to it, as you don’t want to find out X months in that you’ve “just figured out” you want to telecommute 50% of the time.<br />
<br />
[analogy time] You wanted a relationship with someone who you could travel with, and ended up dating a stay-at-home person[/analogy time]<br />
<br />
So you’ve figured out what you want, though what about <b>what you can offer?</b><br />
<br />
Good relationships are all about <b>give and take, in balance</b>. Are you average (bad and relative term, I know) in the areas you like to work in, though you’re trying to get into top end teams. Confused and angry when getting turned down?<br />
<br />
[analogy time]Constantly hitting on the super model with a PhD, who teaches the Dalai Lama how to be chilled, and getting turned down?[/analogy time]<br />
<br />
When evaluating an employer position :<br />
<br />
<ul><li>What are they really offering</li>
<li>What potential do they have</li>
<li>Where could you go with them</li>
<li>Do they really do what you want</li>
<li>Can you see yourself happy there</li>
<b></b>
<li><b>Remember, you are interviewing them as well</b></li>
<b></b> </ul><br />
<br />
To expand on the last point. I’ve seen people overwhelmed in interviews, people either nervous or desperate for a job (and I sympathise with people experiencing hard times and need to pay bills).<br />
<br />
Though remember this is how you appear to someone on your first meeting, and they are initially (consciously or not) assessing you on behaviour, more than your C.V./Resume.<br />
<br />
[analogy time]Oh I met someone last night and they seemed so needy, they would be a total drain on me, not calling that one back![/analogy time]<br />
<br />
vs.<br />
<br />
[analogy time] Wow, they were so calm and confident without being pushy or arrogant, was interested in my and left me wanting to know more, I can’t wait to meet again [/analogy time]<br />
<br />
Personally I used to be horrendous in interviews, due to seeing them the wrong way and thinking it was all on me. Then I built up some self-confidence, and realised <b>I’m interviewing them as well</b>. They are the ones who need things done, and I’m the one who can do them.<br />
<br />
That and <b>no one is perfect all the time</b>, so don’t try to be, you'll fail. Admit your mistakes and explain what you learned. Say when you don’t know something, but explain how you would figure it out, or find out.<br />
<br />
If you are genuine and it doesn't work out, at least you know it wasn’t for you.<br />
<br />
<br />
<hr /><h3>Employers - Attracting, filtering and being honest</h3><br />
If you want happy, dynamic, creative and over all <b>highly productive people</b>, guess what, you have to know how to facilitate that, and have it as part of the DNA of your organisation.<br />
<br />
<b>You want X, you have to be X.</b><br />
<br />
Good people know what they are worth and what value they have to organisations, <b>you are being interviewed as well</b>. Being abusive in interviews will get you people who are attracted to abusive relationships, i.e. the kind that are dysfunctional themselves (I’ve learnt enough about that training in counselling to see it in interviews):<br />
<br />
<ul><li>"You have to own everything, even stuff you didn’t code”</li>
<li>“You will be happy for me to call you any time of the day because I want something done”</li>
<li>“If you’re hard enough to run with the dogs, I *might* throw you a bone”</li>
<li>“So what if you miss your anniversary, you’ll have more”</li>
</ul><br />
<br />
Also, what are you doing <i>only</i> advertising for people on Craigslist and expecting the best to throw themselves at your feet? You want open source contributes, and flexible people, how flexible are you, and how does your organisation support open source ?<br />
<br />
If you have good people, then tend to know other good people as well. Though it’s not worth relying on <i>just</i> that wholly, or <i>just</i> recruiters, or <i>just</i> any one thing.<br />
<br />
[analogy time] Standing and the bar looking down your nose at all the “potentials” who aren’t good enough for you, expecting them to come running and beg for your attention? [/analogy time]<br />
<br />
How many people have snapped out of it, I woke up and thought : “Hang on, this <b>is about more than money</b> for me, I’m not going to take this **** any more”.<br />
<br />
Good organisations & people know this, and look at themselves before others, first. Self awareness is key, be that with individuals or organisations. Especially when getting into relationships with others, know who you are and then be honest about it, it saves a lot of time and grief.<br />
<br />
<b>It’s starts before the interview</b>, as it’s about the personality and culture of the organisation and what they do. Are they portraying that honestly and properly? I once heard “if you are going to be buff, be naked” sounds good to me.<br />
<br />
[analogy time] Hmmm, no ...... I think I’ll leave this one ![/analogy time]<br />
<br />
Get involved with the local developer community, and the good ones who are aware of themselves and organisations will find you out. Be open to good people, not limited rigid skill set list.<br />
<br />
<analogy time="">Do great people meet all the time and have healthy relationships, in sleazy pick up bars with one side being condescending to the other. Or do they more often meeting doing things they both love and share?</analogy><br />
<br />
Don’t just put <b>lists of arbitrary requirements</b> on your web site that don’t really have a bearing on finding good problem solvers, you’re just copying the people you already have. There is a company here in Vancouver, that just list a huge range of Java technologies and says you must have 7 years in all of them (without exception) to even talk to them. I dare say they get what they ask for ....... narrowness. <b>Suitable to them</b>, <i>maybe</i> yes, though understanding how to find good people and attract developers, <b>defiantly not.</b><br />
<br />
[analogy time] You *must* be 6’5”, have {these} dimensions, blue eyes, and drive this type of car.[/analogy time]<br />
<br />
[aside] I could be up to speed on what they do in a few months or so I’d think, I love playing with Java. Though wouldn’t bother to deal with them because of how they portray themselves. [/aside]<br />
<br />
<b>So you’ve finally met</b> for the first date ....... err interview. Now given that I’m talking about technical people there is an element of assessing suitability the job, or course. Do they have enough knowledge of the domain you work in? What is their current skill set?<br />
<br />
Both are valid, though <b>not the whole picture.</b><br />
<br />
You are not going to keep someone who is naturally creative and who loves to learn, by getting them to do what they have already done a hundred times. You will keep them (engaged) by allowing them to grow, and supporting them in the new role.<br />
<br />
<b>Interview for future potential, not just current limits.</b> If you don’t, you are limiting both of you from the outset. You will loose the good people, as they will get frustrated. So think about their future as well as the organisations when talking.<br />
<br />
[analogy time] Sit on the couch every night watching re-runs when you’re partner wants to go dancing (or do anything fun) for too long and see what happens ......[/analogy time]<br />
<br />
Just as the individuals have to be honest about where they are and what they offer, so do the organisations. Or the frustration of the miss-match will separate the two, once the illusion is up.<br />
<br />
Don’t bother to ask contrived questions in an interview either. Or ones where you are looking for a specific answer, as you are just limiting everyone from the outset again. Make it relevant to what you do, then you’ll actually get an answer that will gauge their <b>passion</b> of the topic.<br />
<br />
Passion can be positive or negative, as long as it’s there. Apathy is something I avoid. I can talk about event driven systems, OO, state based machines, brewing beer, caches, network latency and how to scale things till the cows come home. On the flip side I can tear a certain CMS that is commonly misused, apart, all day and back it up as to <b>why</b>.<br />
<br />
If a person can’t get excited about a topic that is core and relevant to the company then it’s a warning flag. Even if they can’t explain the exact details there and then, given passion they’ll put in the hours to learn. <b>It’s the mindset it’s the passion</b>, if they don’t have it move on.<br />
<br />
[analogy time] Hey, do you like sailing, it’s really important to me, what do you think? ....... Meh, it’s OK I suppose, boats and things.[/analogy time]<br />
<br />
Also if it took your organisation a team and weeks to figure out a suitable answer to a question you are asking in an interview, don’t expect a perfect one in 5 minuets in an interview situation. It’s about how the persons mind works, how they explore and work though issues, not the specific thing you ask them. Also if they falter and then you give your answer expecting them to say it’s brilliant, so you feel good, it’s a fair sign you’re there for your ego, not to interview properly.<br />
<br />
Three final easy points :<br />
<br />
<ul><li>Have a process and explain it up front, and explain what and why</li>
<li>Always contact people you’re talking to let them know if it’s a no, it’s called <b>courtesy</b></li>
<li>Don’t do the talking, let them</li>
</ul><br />
While I agree with <i>most</i> of points <a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html">Joel makes</a>, I think he is missing the point about what is relevant today for <i>most</i> people. Not 10-15 years ago when everyone had to learn C to accomplish anything, and some people laughed at Java in it’s infancy. That is wholly focusing on implementation of logic. I look for the understanding of logic itself, and how it is applied and used in real world contexts. A programming language (mostly) is just a tool, solving the riddle is the prize.<br />
<br />
I do it in PHP, you do it in ASP; meh, we both go to the bar !<br />
<br />
I appreciate the power that comes from understanding how everything works down to the CPU and assembler level, as I studied it throughout my life since I was 9, and at university for years. Though I don’t expect every developer to know<b> all of it, all of the time.</b><br />
<br />
We (developers) tend to get rather good at what we do in the moment, I might not know Erlang now, though give me <b>a challenge and some time</b>. It’s the ability to learn and adapt to get a problem solved, that I look for.<br />
<br />
[aside] Though as with all things, that we (bloggers) see subjects from a different point of view is good, it should ideally make us all better![/aside]<br />
<br />
One <a href="http://www.rethinkdb.com/blog/2010/03/building-a-world-class-team-six-mistakes-i-made-early-in-my-career/">point of rethinkDB’s</a> that I do disagree with, is that unless a candidate is intimidating, they are worthless. Utter nonsense and smacks wholly of a ego driven development & environment to me.<br />
<br />
<b>Overwhelmingly impressed</b> by someone yes, <b>intimidated no.</b><br />
<br />
If you are taking your ego into an interview and feeling intimidated, or someone is using that technique in an interview, something is wrong.<br />
<br />
It’s about exploring and learning about each other, not trying to <i>over power</i> each other.<br />
<br />
Do you really want that same person in the office every day explaining to the rest of the team why their Kung Foo is so weak and how they should all bow down? ....... you might, though that’s no place I, or anyone I know who is any good would want to work.<br />
<br />
I’ll take <b>strength in quite confidence, over arrogance any day.</b><br />
<br />
<a href="http://www.aaronsw.com/weblog/hiring">Aaron Swartz</a> seems to understand what’s important, and has some good ideas on the matter.<br />
<br />
<hr /><h3>Together</h3><br />
A good thing to remember is that “best” isn’t always “highest profile company” or “most money”.<br />
<br />
<b>Best is about the match between the person and the organisation</b>, and the team within it , that they are working with.<br />
<br />
<hr /><h3>End Points</h3><br />
Interviews (and dates usually for that matter) are usually uncomfortable for at least one side, and a lot of great people don’t perform well under that kind of pressure. I remember my early years of dating & interviewing ....... harrowing! So trying to bully a interviewee or BS a interviewer isn’t going to do either side any favours.<br />
<br />
Though if the meeting can get onto something that one or both parties are passionate about, then all the better. That is for the interviewer to try and make happen.<br />
<br />
I agree a lot with<a href="http://www.supercoders.com.au/blog/evidenceofpassion.shtml"> Andrew over on Supercoders.com.au</a>, <b>passion is massively important</b>, I’d never want to be in a relationship with out it, personal or professional. To be <a href="http://en.wikipedia.org/wiki/Maslow%27s_hierarchy_of_needs#1._Self-actualization">self actualizing</a> and a developer that gets into <a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29#Professions_and_work">Flow/The Zone/Hack mode</a> often, you have to be authentic and present in what you are doing.<br />
<br />
You can’t fake the funk, as the saying goes.<br />
<br />
Though I do have to watch so I <a href="http://www.jeremyhutchings.com/2009/12/burnout.html">don't get consumed by it</a>. When I’m not in a healthy relationship, employees (and bad partners) are very prone to exploiting it when it’s one way.<br />
<br />
Make sure things progress at a <a href="http://en.wikipedia.org/wiki/Extreme_Programming_Practices#Sustainable_pace">suitable pace.</a><br />
<br />
Also passion is something you have to keep alive and grow together with, keep up the challenges, finding new heights and making sure both sides are getting their needs met.<br />
<br />
On that note, may you all live happily ever after !<br />
<br />
---<br />
Till next time, take care of yourselves<br />
<a href="http://www.metalcat.net/">@JeremyHutchings</a>Unknownnoreply@blogger.com5tag:blogger.com,1999:blog-88967399682731880.post-48564228704521709292010-10-30T21:21:00.000-07:002010-10-31T15:24:47.575-07:00Prevent Burnout : Continuous Integration 2.0<h3 id="internal-source-marker_0.36871485263471515"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Into - What am I talking about now ?</span></h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><span style="font-size: small;"><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">In a</span><a href="http://www.jeremyhutchings.com/2009/12/burnout.html"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000099; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">previous blog post</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, </span><span style="background-color: white; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I talked about burnout from my own perspective of having experienced it, an overview of it after the fact, and some techniques for getting though it.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The two main pieces of feedback I received were firstly “get a proof reader” and secondly “</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">how can one stop or mitigate burnout in the first place</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">?”. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The first I've done (and I’ve also signed up for a writing class), so hopefully my writings will get better and be easier to read. The second point I have been thinking about for eons, and performed as a job, so will share my thoughts in this post.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">To frame the topic and post, I'd like to share an anecdote from my counselling schooling:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">---------</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I remember discussing the ethics of being a counsellor in class, and causing some commotion as I stated "Surely it's our aim to put ourselves out of a job".</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I didn't mean that I wanted to see the whole class (or profession) jobless and destitute, more so the manner that care is predominantly provided, i.e. </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">remedially</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">It makes </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">no sense</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> to me, to wait for something (a person, a system, a server, etc) to be overwhelmed by challenges and </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">then</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> do something about it. Especially when </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">you know the challenges are coming.</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Be that life challenges in general (personal skills), lots of clients to a web site (performance engineering) or anything where you have cause and effect.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I say “Prepare and be aware as you go”, and drastically lower the chances of it happening in the first place.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">---------</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I would like to explain what I've learnt from building resilient software and technical systems, and combine it with some counselling theory, then apply that to a team as a whole, be that a development team; or any creative group. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Hence, the meaning in the title: </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">Continuous Integration 2.0, </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: bold; text-decoration: none; vertical-align: baseline;">continuously </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">taking care of the team and it’s </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: bold; text-decoration: none; vertical-align: baseline;">integration</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">, during the process of building.</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Most people like me now build software such as SaaS, web sites, etc., which is continuously worked on, and is only ever “done” when we never work on it again. It’s a marathon, not a sprint to the finish, though in either case you have to be up to the challenge. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The thought of running a marathon with no training or support boggles the mind, so why do it in life and work?</span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span><br />
<br />
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">What is CI (Continuous Integration) and why do it?</span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<br />
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">CI is an approach to building (software) systems that involves the </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">continuous</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> checking of what is being built. This is to ensure that it's doing what it is designed to, and not exhibiting the kinds of symptoms that you don't want, i.e. bugs.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I've done this for years with software and have tried to extol the virtues of “</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">the output reflects the way in which you do something</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">” in places I've worked (with various degrees of understanding and acceptance from those involved, I must admit!)</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ironically in some places, CI is ignored or sidelined in favour of chaotic rushes to an arbitrary deadline. And upon reaching that dead line, the output is... well, chaos. That kind of project and management truly get what they ask for.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Quality and speed of development go hand in hand</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, now and in the future of the project. Remember the majority of the work starts when you launch, so lay good foundations. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Catching issues early saves so much time, energy and cost, be that in software or with people and teams: “A stitch in time saves nine”. Read up on “technical debt” and the costs of bugs, they are both well documented. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Not only is there financial cost to a project, though there is emotional cost (leading to</span><a href="http://www.jeremyhutchings.com/2009/12/burnout.html"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000099; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">burnout</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">) for the people working on the software. Which is the part I’m more interested in.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">In practice (for software and technical systems) this typically involves pieces of code called “test units”, that continually (i.e. automatically) test the code as it changes, i.e. to make sure that two plus two still equals four.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Being predominantly a PHP person, I use</span><a href="http://phpundercontrol.org/"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000099; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">phpundercontrol.org</span></a><span style="background-color: transparent; color: #000099; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">which in itself comes from CruiseControl, which I'm a big fan of.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">So what we're doing is checking in often to check things are okay. The approach being a lot of a little opposed to a little of a lot.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<br />
<br />
<h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">What is the “team leader's” role to help stop burn out ?</span></h3><h3><span style="font-size: small;"><br />
</span></h3><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I suppose you could have a program that emailed everyone asking “Are you okay?” every day, though that isn't what I'm advocating ! </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Also I believe that “once-a-year team building” isn't as effective as doing it </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">continuously</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, as it's the </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">integration</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> of the team you're hoping to facilitate and achieve. Curious, there are those two words again.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I believe the once-a-year approach or “when it seems necessary”, is done more out of a sense of obligation, or to copy-cat other companies, inferring truth by constant assertion. I think it should be done all the time, opposed to sporadic knee-jerk reactions.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Team building is a facilitation role, and has more to do with supporting people than telling them what to do. Some projects use an Agile technique of daily stand ups, though these can seem forced a lot of the time. Also they tend to interrupt people, and force a rigid working structure irrespective of what is actually going on in the project.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I suggest it is a role of the team facilitator to take care of the people, usually they have titles such as “project manager”, “team leader”, “technical director” etc. Unfortunately they usually loose site of the fact that it's their responsibility to be focused on the people and </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">then</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> process, so the people can focus on the project.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Don't constantly interrupt to ask if they are okay or be forced in what you are doing, humans know when they are being dealt with in a inauthentic manner. The specifics of people skills and how you check on people are down to personal style and technique, I'm just saying</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;"> make sure you're doing it.</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Do less better</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, remember a lot of a little opposed to a little of a lot. It’s the responsibility of this role to </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: bold; text-decoration: none; vertical-align: baseline;">continuously integrate </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">the care of the team, into the daily project.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<span style="font-size: small;"><br />
</span><br />
<h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">What can the individual do ?</span></h3><h3><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span></span></h3><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">In brief, keep all things in balance and perspective for mind, body and soul, in all areas of your life. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Yes, I know, it’s a lot</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">easier to just write on a blog than to actually put it into practice!</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Though in practical terms, I believe that any situation we find ourselves, we are 50% responsible for being there. Now that doesn't necessarily mean when something is </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">done to us,</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> we are responsible for that. Though how </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">we choose to react, or act is up to us</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">. As is how we choose to </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">prepare ourselves </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">for situations we enter into.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">So we have a duty to ourselves to take care of ourselves. Also being aware of those around us who might be overwhelmed is no bad thing. If I’m in a team of 10 and I’m mindful of the rest, and they do the same, that means there are 9 people keeping an eye out for me.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I believe that it is unethical and unprofessional to work when compromised in an emotional manner. You are not going to doing good work, be happy, or doing anyone any favours including yourself. You are likely just compounding the negative issues.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Here are some topics and activities to think about to help mitigate burnout out. I’ve combined what I do, what I've been taught, and what I've found in my studies :</span></span><br />
<span style="font-size: small;"><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Mind</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">This is where we start, as this is where the embers of burnout will flare up from and affect the rest of our lives. Great skills & activities to read up on and explore here are :</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<ul><li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Meditation - Not for everyone, though having chilled downtime is no bad thing</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Hobbies - I do lots, they distract me from work and allow me to reflect & socialise</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">School - Learning different skills and topics good outlet, broadens the mind and outlook</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Self talk - I’m my own worse critic, I have to watch being negative, and see the good too</span></span></li>
</ul><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Body</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">When we have no energy, are lethargic, are experiencing poor nutrition this will obviously effect our ability to function. As well as being prone to illness and injury. I’m not a gym rat, or advocating that everyone should be, though making sure we take care of the physical sides of our beings is just important as the others. As we have to be in balance, It’s how well functioning systems work. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<ul><li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Food - Volumes have been written on the benefits of eating well and cutting out junk</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Exercise - In a sedentary job that most in offices have this is </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">vital</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Check ups - Not being a hypochondriac, though a health and eye check is no bad thing</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Sleep - Exercise helps here, also natural sleep not 10 beers at the bar type of sleep </span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Massage - After training as a masseur, I extol the virtues of it to everyone !</span></span></li>
</ul><span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><span style="font-size: small;"><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Soul</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Not always the easiest topic to talk about with a target audience who, in </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">my experience </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">are typically not so spiritually inclined. Though I don’t necessarily mean just religion, but include </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">meaning, purpose, a sense of being</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">and belonging</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">. Having studied psychology and worked for a company who’s mission it was to ease the effects of social isolation (and they are harrowing believe me ), I think not paying attention to this area is a big mistake.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<ul><li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Friends & Family - Including personal relationships, ensure you give them time & attention</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Spiritual - I like reading about Daoism, though this is personal to each person, obviously</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Cat - The benefits of caring for a pet are well documented, as well as fun</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Volunteering - What do you give back ? Doesn't have to be formal or organised</span></span></li>
</ul><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">As an experiment, I suggest you keep a record for a week just to see what time and effort you put into each of these areas. Then ask yourself is that what you consider balanced, and is it </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">how </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">you want to be ? What could you do more or less of ?</span></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<br />
<br />
<h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">What are the warning signs, and what shouldn’t we do ?</span></h3><h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span></h3><h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">An absence of the things noted in the previous sections, I suppose. Be aware of the environment you are in, are you being supported or pushed? Be aware of how you feel, is the pressure relative to the reward or investment you have, or are you killing yourself for someone else’s profit.</span></span></h3><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">By way of a personal example, here is knowing you’re not cared about :</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">In a previous job I ended up working 3 weeks straight including evenings, posting on forums doing customer relations and support, on top of the “day job”. In a meeting I mentioned I was looking forward to an upcoming holiday as it was also my anniversary. “The boss” laughed and said I’d likely being working as he had profit targets to meet, and that I had to sort out the technical problems he’d introduced to the project before I got there. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I decided to leave that job at </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">that very </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">moment.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">That is just an example of an external bit of proof of the environment you are in, personal ones to watch for include :</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<ul><li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Stress - Personally I feel it quite physically, </span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Lack of sleep - I ether can’t sleep, or can’t get out of bed </span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Constant tiredness - Related to the above, though adds to lowered performance</span></span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Self medicating - Be it alcohol, substance, sex, etc, you’re treating a symptom </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span></li>
</ul><span style="font-size: small;"><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">To continue on the self medication point above, there is also prescribed medication from doctors. Though personally I’m not a fan of the “pop a pill” mentality and culture, </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">I would never advise anyone to stop who’s on medication</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, as I’m not a doctor. Though I’ve found there is a constant focus on treating the </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">symptoms </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">and not the actual cause (good for drug companies, bad for people). Though there is an argument that if the drugs can alleviate the symptoms enough so the person can deal with the cause, then fair enough.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Being a fan of CBT (</span><a href="http://en.wikipedia.org/wiki/Cognitive_behavioral_therapy"><span style="background-color: transparent; color: #000099; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">Cognitive Behavioural Therapy</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">) I always try to deal with the presenting symptom, </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">but also </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">find out the root cause, which is creating the </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">presenting symptom, </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> much as is done when debugging software. Then the cause can be addressed so you don’t have to deal with the symptom continuously.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">“Why is this happening, how can we deal with it and how can we prevent it next time”. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<br />
<br />
<h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Conclusion - What am I saying</span></h3><h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span></h3><h3><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span></h3><span style="font-size: small;"><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Try</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">to stop it happening, don’t try to “fix it” once it’s over whelmed. It’s the principle of </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">continuous integration</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, be it with software, teams or people. </span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Much the same as the saying “It’s about the journey not the destination”.</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Take care of yourself, it’s professional and ethical. We can't do anything else properly without doing that first. It’s not at all selfish, to </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">not do it </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I would suggest is selfish.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Don't work for abusive companies, or greed-focused ones (i.e. beholden to shareholders). Easier said than done obviously, though when weighing up two job offers, which one is really </span><span style="background-color: transparent; color: black; font-family: Arial; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">better</span><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, given the points above. I recently just ended a very lucrative contract, as the bad far outweighed the good.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I sleep rather well now.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">---------------</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Take care of yourselves, keep and eye on others, and keep on building good things in good ways.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<a href="http://www.twitter.com/JeremyHutchings"><span style="background-color: transparent; color: #000099; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">@JeremyHutchings</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-88967399682731880.post-46347019269166046752010-10-23T12:37:00.000-07:002010-10-24T19:53:40.961-07:00Healthy creation of technologyAfter the last posting I received a challenge from a reader (<a href="http://twitter.com/#%21/ezpnetss">Shane Simpson</a>) who happens to be the <a href="http://www.ezp.net/">hosting company</a> I've worked with on a few project and continue to do so as well as recommend.<br />
<br />
The tweet was <a href="http://twitter.com/#%21/ezpnetss/status/28527840914">this one</a>, which made me think of words by Ben Harper, “what good is a critic with no better plan.", a valid comment I thought, so I tried to summarise (some of) my ideas.<br />
<br />
Now this is going to take some thought, and answering .......<br />
<br />
I think I will try and answer the question opposed to being too exploratory, so "<span style="font-style: italic;">what you feel is a better way of running a technical company</span>" which to me infers, "how to be successful, happy and sustainable as an individual at work, as group of people (the team) and ultimately commercial organisation, after all there are bills to pay".<br />
<br />
A short answer of the top of my head, is healthy relationships between people and a common purpose, the long answer on the other hand is a journey though systems analysis, conflict management, communication, finance, ergonomics, logistics and a host of other topics I fear.<br />
<br />
Though as with any journey this (assumption and idea) is where I'm starting and I'll just have to see where I end up.<br />
<br />
Opposed to trying to describe how I see the whole process & system in one go, I'll take the scientific <a href="http://en.wikipedia.org/wiki/Reductionism">reductionist</a> method to being with and break things down before putting them back together again as more of <a href="http://en.wikipedia.org/wiki/Systems_thinking">holistic view</a>. As with the integration after analysis done, it will be easier to see the <span style="font-style: italic;">important bits</span>, how they interact (the social & technological relationships).<br />
<br />
<h3>1. People</h3>A vast topic that been talked about since the beginning of time (OK well nearly) and posted about by the likes of <a href="http://twitter.com/#%21/richardbranson/status/27740839106">Richard Branson</a>, who I think has a fair idea about building business and dealing with people.<br />
<br />
<h4>1.1 Which people</h4>But whom ? Easy answer is everyone, though it depends on the role(s) people have, in UML it would be actors, and what point in time. To just simplify things for now down to <span style="font-weight: bold;">builders</span>, <span style="font-weight: bold;">facilitators</span> (which isn't a mutually exclusive role, I enjoy doing both) and <span style="font-weight: bold;">clients</span> (internal & external, as I also use the code I write, look at 37signals !).<br />
<br />
<h5>1.1.1 Builders</h5>The people that put the bricks together and build the wall, the coders, the chefs, the architects who draw plans for the train, the welders that put it together, the electricians that wire it up, the people who have a conscious, deliberate and <span style="font-style: italic;">actual</span> input into changing the essence of an idea into something tangible.<br />
<br />
The point here being a thought or desire is being realised, be that in code, brick or a metal tube that whizzes along on tracks. For our answer, lets just call it, code. Though I include art and digital assets anything that was created that is going to pass though a network card to a client in 0s and 1s.<br />
<br />
<h5>1.1.2 Facilitators</h5>Personally I'm not a fan of the term "management" I share the same thoughts on them as most experienced software engineers and professionals like <a href="http://businessdoctorme.blogspot.com/2010/03/ban-boss.html">Dr Paul Thomas</a>. My recent employment history has given me enough evidence to see what happens to technology when people in that role forget what their tasks are (and not constant interruptions or making implementation choices). The tasks are quite simple :<br />
<br />
<ul><li>Support the team<br />
</li>
<li>Deal with paper work (licenses, formalities of business, road blocks, etc)<br />
</li>
<li>Get the above annoyances out of the way of the builders<br />
</li>
<li>Ultimately get yourself out of the way of the builders, you <span style="font-weight: bold;">will</span> slow them down and frustrate them.<br />
</li>
<li>Facilitate communication between the people <span style="font-weight: bold;">that need it.</span></li>
<li>Observe from a distance.</li>
</ul><br />
I think the hardest thing for people in this role from what I've seen is, trust.<br />
<br />
Trusting the builders are capable, trusting the process over all (i.e. not micromanaging), trust in the truth that it's OK to make mistakes and to lead by example as that's where a lot of learning comes from. Sharing a mistake, learning from it and the working as a team to build on it in a trusted environment is an amazing experience and to be supported.<br />
<br />
The other end of the scale is an experience I had in one organisation where a tester wanted to create a league table of which coders had the most bugs buy way of a punitive tool a "blame board" they called it; something I didn't allow at all, a very negative environment.<br />
<br />
I suggest doing a course in group counselling or group facilitation, the things I learnt from <a href="http://rosslaird.info/">Prof. Ross Laird</a> at VCC when studying counselling were quite profound.<br />
<br />
I try to never tell people what to do or "mark them" on the outcome, just communicate the goal of the project or desired outcome and then leave the builders to the task of translating that information into the end product. Though of course you observe and deal with the flow of the process in the moment, though you trust the builders.<br />
<br />
Never tell someone to "take ownership" of something, firstly it's condescending and secondly what you are actually saying is "take the responsibility for the past failed decisions".<br />
<br />
Trust is a huge topic within itself, though it's two way and built on respect (not demanded, i.e. authoritarian).<br />
<br />
<h5>1.1.3 Clients</h5>The end users in most cases, the people with the cash ! What I've found in successful projects (e.g. the early days of vBulletin) is that the initial idea which the builders create once accepted and used by a growing base of clients, is in part given over to them.<br />
<br />
They have valid input, the are now a part of the system over all, they have a valid voice, and can & will walk away from negative relationships where they aren't heard (most of the time). Just look at the positive atmosphere and relationships between clients & builders (and facilitator, being Ashley) over on <a href="http://xenforo.com/community/">XenForo.com</a>. It's basically a nice place to be, the trust and respect talked about above is evident and being earned by both sides.<br />
<br />
At a previous games job I used to spend hours on the forums as Technical Director talking to the players, understanding their concerns and frustrations and communicating what was going on. While most of this effort wasn't able to be understood by "management" the outcome and following that built up in a short period of time was more that enough positive proof with in itself.<br />
<br />
So the point here, is that clients become part of the group once the product is out and the communication between them and the inner team (lets call them) is tantamount to success.<br />
<br />
The art of communication is listening, NOT talking non-stop, being the "leader" in a meeting and power point .....<br />
<br />
<h4>1.2 Timely focus</h4>In something of a rebuttal to “the customer is always right” or “the customer is at the centre of everything”, I'd say it depends on what is going on, what is the focus of the process and system at what time ?<br />
<br />
In a perfect world, effort and energies would be balanced amongst the needed areas in a harmonious balance. As it is focus in a project usual varies depending on what stage it's at, to belittle builders about support or customers before a product is launched is so pointless it doesn't need commenting on.<br />
<br />
So be aware of what it is your doing, <span style="font-weight: bold;">when</span>, and why. If you believe you are focused on one stage or group, then be so and accept that not all your energy is going to be available for other tasks.<br />
<br />
So the point here is stay in the moment, be present, keep a focus on what is going on; Do less better, not more worse.<br />
<br />
<h3>2. Agreed outcome</h3>In the book <a href="http://www.amazon.com/Thinking-Systems-Donella-H-Meadows/dp/1603580557/ref=pd_sim_b_3">Thinking in Systems, Donella Meadows</a> lists the top attributes of successful systems, one of the, is : “Goals – The purpose of function of a system”.<br />
<br />
She also goes on to explain the importance of having all the sub systems (i.e. all the actors & tech systems) aware of what the ultimate goal is.<br />
<br />
And it isn't “making 1 million dollars a month”, I can assure you, that's nothing more than the cry of green from short sighted management. Profit is a side effect our outcome of the system working to purpose and customers exchanging money for the output of that system (i.e. what ever it is the business makes or provides).<br />
<br />
<h4>2.1 Beginning</h4>In the beginning stages there is the original concept(s) very broad based ideas and a hunt for direction or a market, this isn't the time to start coding trust me, this is the time to question, explore, play with ideas, observe others, play games with ideas/situations/outcomes.<br />
<br />
Ideally this behaviour in some form is ongoing throughout the life time of the company, though you can see when it shifts from one stage to another due to the amount of change and team consensus there is.<br />
<h4>2.2 Middle</h4>Stage 1 has given way to enough of a consensus to begin building. I'm not advocating water fall design methods (or any other) here, a method is a social tool or organisational one, I'm talking about a state and activity.<br />
<br />
Here concepts start to be pulled out of the air and realised in 0's and 1's on a data store some where. This is where the facilitators have to put their ego to one side and let the people who actually build things get on with it, though typically this is where the most damage is done my suits with constant meetings, attempts to micro manage and constant changes (because the first step wasn't allowed to complete enough).<br />
<br />
<h4>2.3 End</h4>Everything to now has been laying the foundations, getting the technology ready for clients input. That can either be beta testers, going live straight away, internal review or a combination of all. Though by End here all I mean is end of the internal team, as you're just about to include the external team.<br />
<br />
A lot of projects getting stalled here or held onto for too long as it's the “constant polishing stage”, no set goals or consensus in achievement is met. Which is the typical side of the builders, the opposite end of the spectrum is pushing out unfinished systems far too early, which is symptomatic of amateur and greed drive management. The pull between both forces is evident in most places I've observed.<br />
<br />
Though when there is a common level of trust and it's seen as a constant process between professionals this is a a much more pleasant experience !<br />
<br />
So points to remember here, is being aware of where you are on the time line and that builders who are supported naturally want to achieve and do well (aside from being a human trait)<br />
<br />
<h3>3. Facilitation & Support</h3>In <a href="http://www.jeremyhutchings.com/2009/12/burnout.html">one of my other posts</a> I explain how support (in a typical hierarchy org) is top down and responsibility is bottom up, I have had a few experiences of it being forced the other way, where I was made to support the ineptitude of those “above me” and take responsibility for their choices (legacy issues in a project I didn't build, culminating in getting taken off a project which I was saving, and ultimately saved with my plans …. also being bad mouthed to the whole team in an ego speech, who luckily knew the real story, I walked away from that one instantly !!).<br />
<br />
So, the facilitators are responsible to the team, and take the responsibility for their choices.<br />
<br />
<h3>4. Flexibility</h3>There is an analogy used in parenting styles that explain being too rigid is like being a brick wall, and that being too loose is akin to being a jelly fish. So there is either far too much control or there is non what so ever, or in the case of teams and systems, boundaries.<br />
<br />
The ideal compromise (in the analogy) is that of a spine, it's protective and flexible, though to a point.<br />
<br />
Much is the same with projects and systems, having a vision and goal is good to start with, though all things change once they are in motion, and going with what is in the moment as long as it isn't destructive can be very worth while. It's also how a lot of scientific discoveries are made.<br />
<br />
<h3>5. Assessment </h3>There is a fair amount of honesty that is needed when doing assessment, it can be uncomfortable to shine a light into corners of an organisation, though ultimately ourselves. Though to know where we want to be, we have to know where we first are. And that is as individuals before the rest of the team, if what you're doing isn't authentic to who and what you are, then your outcomes will be limited.<br />
<br />
How many times have you done just enough to get the job done to get by because you're not really engage in it ?<br />
<br />
What that engagement is, how it can be fostered, is a whole book in itself. Though it has to be authentic, you can't just demand that team members engage wholly.<br />
<br />
Though without being honest about where you are, you'll be on the wrong path and confused at the outcome when you get any where.<br />
<br />
A company that is constantly looking for “A players” …... when the company it self isn't an A place, because it doesn't embody that philosophy is going to be a poorly operating system over all.<br />
<br />
<h3>6. Trust</h3>Likely one of the hardest things to do, to trust in yourself as well as others. Though in the most productive environments I had very high trust in not only the abilities of the people I was in a team with, though in their engagement and their openness to questions and learning as I was. I made mistakes, was supported, felt valued and ultimately safe.<br />
<br />
And all that came from mutual trust within the group, we shared a common goal, felt supported, were flexible and honest about out abilities and expectations.<br />
<br />
<h3>7. Money</h3>Oh the sordid topic of coin; be how it comes in, what it does and where it flows out.<br />
<br />
Ultimately be reasonable and see it as a something you get for a well functioning system, not the output of the system itself. This can be gauged by competition, the market and the usual supply and demand factors for the most part.<br />
<br />
Pay as per <a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">the RSA clip</a> pay people enough so it's not an issue, skimping on pay up front as a way to “save money” is about as counter productive as you can get, and once again a greed motive from management.<br />
<br />
As for reward, I remember a meeting where developer reward was being discussed and it was being forced by management and peers that the bonuses to developers should be based on company profit “while they had no input to the way things were done or even what was being done”. So they were held hostage to the poor choices of management/producers/et al.<br />
<br />
<h2>Putting it all together</h2>Sorry, but there is no magic formula, “Agile” isn't a magic silver process bullet a lot think it is, it's just another organisational tool, it's not a guarantee of anything, as with any other method.<br />
<br />
I think my initial short answer holds mostly true, it's about people and communication. Add to that awareness of the system as a whole to each part and a focus on the direction things are going in and it's a matter of being present and staying in the moment for decision making.<br />
<br />
I've found that the quality of the <span style="font-style: italic;">output</span> of a system, be it software, social, family, etc is a representation of the quality of the relationships within the system. Now there are some execptions and you can force good things out of a bad system by chance, though it isn't sustainable or at all enjoyable, so aware people won't stick with it.<br />
<br />
Getting good people, focusing on communication (and quality of it not amount or volume !!) and capture of ideas, aligning them from a know starting point in a given direction, creating a trusted and safe environment (include <a href="http://www.jeremyhutchings.com/2010/08/cost-of-chair.html">ergonomics</a> in there as well !) then getting out of their way and facilitating where it goes seems to be the best tactic I've found.<br />
<br />
It typically comes back to one word that you can apply to any member in the team, or how they treat each other, or develop the communication and system interconnects, the system itself or ultimately the output, <span style="font-weight: bold;">respect</span>.<br />
<br />
Any other questions find me on : <a href="http://www.twitter.com/jeremyhutchings">twitter.com/jeremyhutchings</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-87511673360839934002010-10-21T20:58:00.001-07:002010-10-29T15:07:42.365-07:00This code has no value"This [any] code has no value"<br />
<br />
Since I've been encountering the games world and how they deal with software this is a term I've heard a few times, along with "Oh the tech is always messy, it's just the way it always is". It's rare you see such a good example of "truth by constant assertion" or a system that is in a race to the bottom.<br />
<br />
Opposed to answering a claim that is little more than an excuse not do to a decent job, it's likely better to figure out what is the "value" that is being talked about as there are a few kinds. <br />
<br />
Firstly there is the <span style="font-weight: bold;">cost</span> of the end product, how many hours at what salary rate etc, plus over heads and what ever added and draining costs unnecessary suits are going to add. That at least will give you a raw currency cost. Misleading most of the time I've found (i.e. oh it's expensive, it must be good), though some what necessary in the world of commerce. <br />
<br />
Once there is a product, there is the value to the company of what can be done with it. Can it be licensed and re-sold, used internally, white labelled etc. Though this within itself is dependant of the main thing that will bring down nearly all forms of value, <a href="http://en.wikipedia.org/wiki/Technical_debt">Technical Debt</a>.<br />
<br />
One of the comments I hear that made me think about this post was leaving a company with another developer and he said "Oh they'll be pulling teeth for months, the code has no value without the developer who wrote it".<br />
<br />
I instantly thought : Typically not, good software is build with the design, layout, architecture, comments all rolled in and part of the whole process. Otherwise all you're getting is the last 10% of the work, the implementation once all the logic has been thought out choices made.<br />
<br />
A developer is paid for 100% of their time and then project (you'd hope !) ..... so why is the company only after, or thinks it only needs the 10% ?<br />
<br />
Impatient, naive and poor management is the usual answer I've found.<br />
<br />
I've had a few experiences where software people are treated as workers on a production line and you just throw more of them on, or "make" them work faster to get more output. Now given that most places fall into that counter productive mind set and treat the process of creation like Victorian work farms, I can see the logical next step that what ever "comes out the end" is what you want.<br />
<br />
This is also reinforced by middle management "producers" and the like, who believe they are actually the ones making the choices on how the work is built. Funny and shocking I know.<br />
<br />
An aside ........ though a good segue into what I think has value and how the value can be keep in the project separate from the developers, though obviously heightened with them about.<br />
<br />
Given that any piece a substantial code will pass though a few if not many hands in its life, and it's only ever "done" when it's never worked on again, lots of people are going to have to read though, modify and most importantly <span style="font-weight: bold;">understand it</span>.<br />
<br />
The thinking that went into the creation and the way the logic was solved is what has the most value, what language your using doesn't have that much impact (part of what irks me when people become evangelical about their tech over any other, i.e. the Ruby or Druapl mobs). Communicating why something was done and a brief explanation of how will reduce the learning curve of the next worker <span style="font-weight: bold;">dramatically</span>.<br />
<br />
And what are the two main things that typically poor management do to projects ? Demand that coders start work instantly "what's what we pay them for" ..... i.e. usurping design. Then making up arbitrary time lines which make the developers curtail efforts and compress the working style into :<br />
<br />
// Does things<br />
$storeforrandomtime = $foo->bar($t)->hammersmith($e) * $varfromthreefilesago;<br />
<br />
I've been on projects looking at code worse than that sat next to the "manager" who paid for it explaining that it was going to take a few months to clean up to be workable with, the only reply I had was "Yes, weeks right, don't say months" ......... sufficed to say I left that chaos pit!<br />
<br />
So what would make it all different ?<br />
<br />
Firstly, a recent project I'm working on has a strange thing called design ! The data layer is designed, the business logic, all the APIs and data flows are done. The whole thing presents itself transparently, you can see near instantly where everything is, and more importantly <span style="font-style: italic;">why</span>. The choices and ideas of development are communicated. It could be in PHP, Java, Erlang, but the essence of the project is there.<br />
<br />
It's only the very junior developers and armature management that accept anything else as a job done well.<br />
<br />
It's more a case of capturing why not what, and during the design phase as well, not the implementation phase. Another reason why non-engineering "management" should stay away from the wonder drug that is "agile" development ...... lack of understanding and ability to gauge impact on architecture.<br />
<br />
Misuses of agile has given way to the same symptoms as the greed prevalent in the financial systems of the world ...... short term gains and sly deals at the expense of anything sustainable and on going. <br />
<br />
Secondly make sure the ideas and creation steps are seen for what they are, opposed to being done during the same time as implementation (and I don't mean prototyping).<br />
<br />
Third, have a think about what it is you're actually paying people for ........ are they making widgets or using skills and experience to make decisions, that need to be recorded. <br />
<br />
<br />
It goes beyond "Oh just comment the code" ........ though for some that would be a good start.<br />
<br />
<a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-88967399682731880.post-39815466411210709202010-09-15T11:16:00.000-07:002010-12-01T00:59:48.732-08:00Tested to destructionNow I'm not thinking about a yet to be rated <a href="http://www.imdb.com/title/tt0207928/">movie</a>, or a song by Onslaught, but a technical system.<br />
<br />
<a href="http://twitter.com/loadstorm">@loadstorm</a> tweeted a question about the different kinds of testing to me.<br />
<br />
I've had to deal with (i.e. clean up) the creations of application programmers, or novice games programmers playing with the internet (never again!!) and trying to build a <span style="font-style: italic;">system</span>. <br />
<br />
I've found there are very different ways of approach technical creation, a different understanding of what is acceptable, and a few fairs of being confident you've tested it. I could wax lyrical about quality, though <a href="http://www.amazon.com/Zen-Art-Motorcycle-Maintenance-Inquiry/dp/0061673730?ie=UTF8&tag=itsafunnyo-20&link_code=btl&camp=213689&creative=392969" target="_blank">Zen and the Art of Motorcycle Maintenance: An Inquiry into Values (P.S.)</a><img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=itsafunnyo-20&l=btl&camp=213689&creative=392969&o=1&a=0061673730" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" />, does that nicely.<br />
<br />
A little while ago I was <span style="font-weight: bold;">load testing</span> a system I've build to observe it's behaviour, over time and to the point of non response (0 performance and over all system fail) i.e. destruction. The non use state is nice and easy to measure, do nothing and see what the spare system resources & capacities are, then run the simplest set of use case tests while measuring.<br />
<br />
What is it doing, how fast and how does that effect it. I'm working with a usual LAMP stack, so the "system boundary" as I see it, is everything between the back of the clients browser (as far as I can detect at the TCP/IP level what is going over the wire) to the disk (SSD in this case) where the data sits. <br />
<br />
Though given latency and other routing, I'll take responsibility as soon as the request hits httpd (but am aware of the network system interface).<br />
<br />
We all know it's a state based machine, so you poke it and it (sometimes) changes and (usually) responses !<br />
<br />
The typical <span style="font-weight: bold;">performance</span> test I've observed is client response, how fast did the state response (from moment of request) get back to the client.<br />
<br />
Having been asked what is the difference between load, stress and performance testing, I don't want to define each one and try and separate them, as they are not in my view, they are exhibited behaviours or attributes of a system at a given time in a given state. <br />
<br />
<span style="font-weight: bold;">Load</span> being the increase in requests of the system to perform an action which can be client requests or dB back up etc. Try running a full client load test ......... then do a mysqldump on a large MyISAM that locks the tables and see what happens. Have to remember it's the system as a whole.<br />
<br />
<span style="font-weight: bold;">Stress</span> Is a measurement or another word for load in my view, though lots of it and in increasing measures i.e. "stressing" the system to the point here performance drops below what is acceptable. Load is any point of measurement, stress is typically when the cracks appear.<br />
<br />
<span style="font-weight: bold;">Performance</span> being quite literally the metric of the measurement from the test, how fast did it do X task, how much data did it process in Y time. <br />
<br />
As a correlation of all 3 and as an outcome of testing you can stress a system with load to see it's performance (typically) degrade to a point where it is deemed overloaded (response time is over X and process Y data per second etc) all the way to failing.<br />
<br />
Though given that I try to take a systems view, it's how everything works together, most importantly how the components interact, or fail to in a certain situation.<br />
<br />
Having a 48G web server with quad hex cores pointed at a single HD machine with a 5400rpm ATA drive might look good when you're running your PHP with no dB access, though hit it with 5000 requests that use table locks and see what happens.<br />
<br />
I don't see the system stopping under testing as a "failure", though a gaining of knowledge as to it's behaviour and typically what interconnection of a sub system that I've not paid attention to, or if I have, what the system gets "rated to" ....... hopefully being the target requirement of the project. <br />
<br />
Much like tires on my motorbike, rated to 170 mph.<br />
<br />
Not knowing that number is the failure, not that the system itself fails at a given point.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-88967399682731880.post-21637200071595897352010-08-20T16:26:00.000-07:002010-10-29T15:05:56.827-07:00The Cost of a Chair<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjADSO5wycQLwURSyA47b46d6T2AMtboVOXl9yAvPdxzoXOoJHD12FF4ekwZxKPeE_XpBYxNSIZcpL6rl4tFV8TWeT5GLMAcbU4vQjYblPIEeLgl_ZpTgrWQPqdk9_seaaaXiS7Pjr8IFE/s1600/AeronchairTwo.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5515415100466561570" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjADSO5wycQLwURSyA47b46d6T2AMtboVOXl9yAvPdxzoXOoJHD12FF4ekwZxKPeE_XpBYxNSIZcpL6rl4tFV8TWeT5GLMAcbU4vQjYblPIEeLgl_ZpTgrWQPqdk9_seaaaXiS7Pjr8IFE/s320/AeronchairTwo.png" style="cursor: pointer; display: block; height: 171px; margin: 0px auto 10px; text-align: center; width: 145px;" /></a><br />
<br />
The easy answer is "New, about $1000" for that model. <br />
<br />
Though what does it actually cost, or what is it worth, that is a better question which most accountants (and typically poor managers) will interestingly ignore.<br />
<br />
Though if it's a certain outcome you're after, i.e. healthy productivity of an individual (and team) then their physical environment can't be ignored.<br />
<br />
As any ergonomists will tell you, and <a href="http://www.humanics-es.com/ergonomics.htm">here</a>, many do.<br />
<br />
I find a common argument of "Oh we can't afford good equipment" or "We can crush another 10 desks in here, go to Ikea and pick up some tat and stack the programmers up" as actually absurd as it sounds.<br />
<br />
Typically from a mindsets where creative individuals are classed as cogs in a machine, there to be spun faster. The main counter argument is going to have to be proof of difference and a financial counter argument I feel.<br />
<br />
<hr /><br />
<br />
As is well researched it will take about 15-20 mins for a programmer to get into <a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29">flow</a>, where they are churning out pure gold (how shiny the gold is, is skill level and experience dependant of course). <br />
<br />
This is also putting aside noise (being the #1 distraction in "cheaper is better" open plan offices) keyboard & screen ergonomics etc.<br />
<br />
Just the chair.<br />
<br />
So a poor chair having a comfort duration of say 1 hour, is going to allow for 45 mins of decent work before the individual has to get up, move, loose focus on work to readjust etc.<br />
<br />
8 hour day, 15 mins to get back into flow, take out lunch, 3 periods before lunch and 4 after (given perfect conditions and no people in the office on phones or shouting at each other and being distracting, playing with nerf guns, etc).<br />
<br />
If that's perfect, lets call it 5 periods of work being <span style="font-weight: bold;">225 mins</span> of work a day (not accounting for pointless power point meetings with producers, management, sales reps, etc).<br />
<br />
This also <span style="font-style: italic;">doesn't</span> account for long term degradation of back due to posture etc.<br />
<br />
The counter in a decent chair (my preference being the Areon) is that you can do near countless hours in one, breaking only for the call of nature or when the lights are turned off and the doors shut.<br />
<br />
3 hours before lunch, 4 after, knock 1 off for pointless meetings, so 6 hours, <span style="font-weight: bold;">360 mins</span>.<br />
<br />
An extra 135 mins. Being 2~ hours a day, 10~ hours a week, 40~ a month. So an extra working week a month.<br />
<br />
Given a hourly rate of $30 (relatively low for a programmer) that's $1200 a month, so more than the chair costs in the first month.<br />
<br />
So how much does a good chair cost ? ....... in a month it costs minus $200 and in a year (before the employee moves on) :<br />
<br />
<span style="font-weight: bold;">Minus ..... $13,400</span> or you could say a bad chair cost $13,400 in lost unused wages.<br />
<br />
<hr /><br />
<br />
So being cheap as a way of "saving money" appears the wrong way to go, let alone the long term physical health of an individual.<br />
<br />
And next time ? ...... Pay for growing medical insurance, or pay for gym passes (or some kind of exercise, dancing, running, cycling to work, etc) and incentives people to go as part of the job.<br />
<br />
Any other questions find <a href="http://twitter.com/#%21/jeremyhutchings">@JeremyHutchings</a><a href="http://twitter.com/jeremyhutchings"></a>Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-88967399682731880.post-13621443567671926902010-08-02T14:14:00.000-07:002010-08-09T22:44:09.626-07:00Ownership and ResponsibilityI find these are two commonly misunderstood and (some times purposefully) abused terms.<br /><br /><br /><h4>Responsibility</h4><br /><br />Ranges from been give it knowingly, or having it assume of one. Typically manifests itself when something goes wrong and is seen in the form of the blame game. Is usually passed down in organisations (where as it should go up) by weak management looking to "prove fault" in employees to cover up their (lack of quality) decisions. <br /><br />In a healthy and honest situation responsibility can be a good starting place for defining a role and calculating suitable reward for success, when the role is able to create and effect any needed changes. <br /><br />In an evolved and dynamic environment it is a shared understanding of the team functioning as a whole, a "burden shared" and all that. <br /><br />Though unfortunately rare.<br /><br /><br /><h4>Ownership</h4><br /><br />Tends to encompass responsibility with the added bonus of relative share of the rewards of success. Common misuses of this term are typical when employees are told "they have to take ownership" or "you really own this now" by management, when in fact all they have is slopey shoulder passed down responsibility and no actual ownership at all.<br /><br />A common manipulation used by management being to associate the negative aspects of a project to individuals and account their so called "ownership" to the faults (which are actually typical managements fault) until they go away.<br /><br />Once again, the blame game.<br /><br />In evolved and flattened organisations, the team has no management, it has leaders who are actually people who engage in the work and share and support making decisions, it's team facilitation not top down (detached and ignorant) condescending commands. <br /><br />Unfortunately again a rare, though starting to grow approach as the non team focused approaches will be taken out by the shear scale of inefficiency and employee misery.<br /><br /><br />Paul Thomas is doing some good work in the field : http://businessdoctorme.blogspot.com/<br /><br /><br /><h4>Conclusion</h4><br /><br />1) If you are accused of not "owning" a project, when all you actually have is the responsibility of the blame from managements previous poor decisions, walk away. If they can't accept their mistakes and constantly prove their inability to change, then it's not worth the emotion & time.<br /><br />2) Work for ......... a company where there is actual ownership, i.e. shared profits.<br /><br />3) Start a....... a company where there is actual ownership, i.e. shared profits.<br /><br />4) Don't compromise and don't accept weak approaches as the norm.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-88967399682731880.post-85638612792660355982010-05-27T11:03:00.000-07:002010-05-29T13:00:37.122-07:00End in a black box, or begin in a white one<h4>Different ends of the spectrum</h4><br />There always seems to be some learning up for grabs when two worlds collide, the strength and benefit of difference as ever it seems.<br /><br />The current overlap is between having to write code for a game in the console world, and building an application for the internet.<br /><br />One it would seem is a mad burnout sprint to an arbitrary dead line invented by marketing, or some other external force ..... which you then walk away from dead or alive. <br /><br />The other is a preparation for a marathon, where the foundations of the future are are laid.<br /><br />Get them mixed up at your peril.<br /><br /><h4>Black Box</h4><br /><br />Knowing that there is no future, that the code does not have to touched ever again and the perceived "value" of the product is the external behaviour, then console and sold product coding is black box (patches and updates aside, which in a way prove the point I'm making).<br /><br />Design, planning and execution typically happen all at the same time in a Colombo style of execution "Oh just one more thing" and "I want to to just add X, that's easy right", the perfect burn out recipe for programmers (who I've found in this field are held in quite low regard, basically contempt it seems, by producers and seniors "who know better"). Pre-production concept work aside.<br /><br />Now I've happened to of seen quite a lot of this kind of code and the vast majority of it is mental carnage; hacks on bodges and work-arounds on changed ideas near constantly. I make for perfect college examples of "how not to do it".......... though in this field it's a constant (industry enforced & suit enjoyed) fire fight of change and bug hunting to "blame the programmers". <br /><br />It's basically sickening and so far removed from a healthy way of creating something it beggars belief.<br /><br />Luckily I haven't directly experienced it, and you could never pay or coerce me to ! Though over the few years I've been in Vancouver I mingled with loads of the industry at all levels.<br /><br />Though what is likely most important here is that if a programmer survives to the end of the product and it is launched, they will likely never had to see or touch that code again, the hack it out at the 11th hour is done.<br /><br />Time to sleep and recover until the next boot is applied to the back of the head for the next project !!<br /><br /><h4>White Box</h4><br />Now given that the development work for the internet starts with planning what to get done before launch it's a wholly different approach.<br /><br />The <span style="font-weight:bold;">quality of the process</span> here will define the ability for the product to be maintained, grow, be stable, be profitable, be supported and adapted by different people though out the life of the application (game or what ever, they are all the same behind the scenes, 0s and 1s flying around).<br /><br />Good things you would of thought .......<br /><br />Hence why I describe it as <span style="font-weight:bold;">white box</span>, as there are going to be all kinds of people (i.e. other programmers) looking inside it to see what is going on. <br /><br />So there better be architecture, planning, coding standards, documentation, integrated development, comments, operation tools, etc. The <span style="font-weight:bold;">real basics</span> of programming that are there for the big picture and long game.<br /><br />The insistence of short sighted people to bypass this "because they know better" or under the believe that the code they are writing will never be touched again, <span style="font-weight:bold;">have no place</span> in a professional environment that deals with the internet or an ongoing product.<br /><br /><h4>Technical Debt</h4><br /><a href="http://en.wikipedia.org/wiki/Technical_debt" target="_blank">Technical Debt</a><br />Make poor choices now or hack it out in the short run, and you will pay for it dearly in the future in support and low productivity; it is only very short sighted or instant gratification driven organisations that typically take this route.<br /><br />Ironically offsetting the poor choices onto engineering "to fix".<br /><br /><h4>So ?</h4><br />Remember there is nothing more important than the employees of the company, <span style="font-weight:bold;">nothing</span>. Doesn't take a degree in psychology to know what the ultimate outcome is of not remembering that.<br /><br />Remember which environment you are in and what is the true cost of what you are doing. <br /><br /><span style="font-weight:bold;">Do it properly or don't do it at all.</span> Properly isn't some academic dream or waste of time, it's how great companies emerge and awesome products become a joy to work with.<br /><br />Tis is any wonder that the majority of successful tech companies on the net are run by people which a lot of technical knowledge who don't compromise on quality of approach ?Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-88967399682731880.post-7612881670568061622010-03-31T05:57:00.000-07:002010-04-12T18:12:23.569-07:00Committees and Directors<h4>Outcome</h4><br />Many things are going to effect getting something done, in this case building a system or creating software. Though I think the following could be said about just about any collaborative effort.<br /><br />There are three concepts to keep in mind, one is <a href="http://en.wikipedia.org/wiki/Design_by_committee">design by committee</a>, the second a saying I picked up at Cable & Wireless from a director I worked for :<br /><br />"There should always be an odd number of decisions makers, and three is too many"<br /><br />And the third concept, which I was lucky enough to have a senior exec from Accenture remind me of recently is :<br /><br />"Given that a qualified professional experienced person (i.e. me) trusts their judgement and ability to learn from mistakes, the more time you spend making decisions, the more you get correct and the more that gets done."<br /><br />It's a simple formula that rests on the 80/20 rule stating : If I make the right choice 80% of the time, then the more choices I make and act on the more I'll get right over time. <br /><br />The opposite being not making any choices and getting wrapped up in discussion, email storms and typically quite a Machiavellian approach to teams and work. Which is not only tragically destructive to gaining momentum on a project, it's counter productive and very easy to lose any direction.<br /><br /><h4>Getting it done</h4><br />As with all ideas they are good in theory ........ actually executing on a way of working as with most things is harder, i.e it's easy to sit here and type about it, though actually doing it takes some effort.<br /><br />When moving from a committee or a non decisive environment into one, to put it bluntly noses are going to be put out of joint. Change always has it growing pains with egos and existing (read old) ways of doing things are being challenged, changed and general group dynamics being mixed up, you'll encounter the full range of people clamouring for more pie via what ever techniques they are used to or choose, some who are resistant and others who put their hands in the air and cry "just let me know where I do what".<br /><br />Judgement aside for acceptance (easier said than done I know !)........ these things are typical and just "are what they are" so getting upset by them will put you at a disadvantage. <br /><br />As with just about all things in life, it's about awareness of yourself untimely and of the situation in this case.<br /><br />How do you react in these situations ? <br /><br />How do you deal (positively, as it's pointless fighting manipulators at their own game, and ensure you support the ones who want to grow) with others ?<br /><br />What is the desired outcome ? Yours as well as the company's that is paying for outcome X, and if they don't even have X defined that is a whole other blog, though make sure you keep asking or if your up for it be part of defining it ;)<br /><br /><h4>Fall out</h4><br />As new things come up there will be certain influences that will try and make "secret projects" out of the bosses ideas to garner favour and control the outcome in their favour, opposed to actually being team focused let alone outcome focused. These individuals are quite dangerous though easy to spot and even easier to deal with.<br /><br />Just focus on getting the work done opposed to controlling it or hiding it, be inclusive of people who want the same and want to work.<br /><br />This will inevitable get you their negative attention, be that trying to put you on the spot in meetings or defensive "woe is me" emails or chats they will have with other team members, though remember your their to get a job done and not play their game.<br /><br />Remember they are far better and playing games on that level, don't sink to it, it's where they live their lives and they will likely win outright, or keep it up till you burn out. <br /><br />Just accept it for what it is, leave them to it, be aware when dealing with them, and get on with making choices and doing work.<br /><br />Who actually produces and delivers will be plain to see, and any employer who cant see that ..... well.<br /><br /><h4>Balance</h4><br />As will all things, it's not one or the other. <br /><br />The balance between full on dictatorship and committee paralysis is called da da daaaaa .... <span style="font-weight:bold;">teamwork</span>. <br /><br />Which turns out to actually be quite hard, as it relies on trust and each member making (the majority of the time) the choice of co-operation. With out that the system will lurch from one end of the spectrum to the other, committees killing any momentum and then individuals working away without the support of the rest of the team.<br /><br />In fully dynamic environments (such as the development kind I'm told about within places like facebook or companies that actually want top performance) you have small teams where individuals spearhead projects and the team supports and leadership is shared (as it always is/should be in a team, even if that is accepted or not).<br /><br />Though you need that culture and understanding across the organisation, a level of decisiveness and maturity. <br /><br /><aside><br />Though in typical teams some kind of hierarchy will be enforced in the belief that one person will know more than all the others <span style="font-style:italic;">all</span> the time, which just writing it down feels strange, let alone trying to think about it.<br /><br />Personally I see myself as a team facilitator, not permanent "leader". Typically I do more to stop other people trying to interfere with a team for their own personal reasons opposed to dictating myself.<br /></aside><br /><br />So :<br /><br />1 - Model by example<br />2 - Accept you get to learn from 100% of what happens, and 20% of that more so<br />3 - Let people be people and leave them to dig their own holes or support the ones who join in<br /><br /><span style="font-weight:bold;">4 - Remember ........... unless you own the company ..... it's just a job !</span>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-88967399682731880.post-67431217179087142342010-03-01T19:02:00.000-08:002010-03-02T11:46:25.561-08:00A Mandelbrot Tornado<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCdXyqWHqKugZVBVGTQvOy9HDN4nhfmvgIPp608Fh2D_Ki2ykE3s0Am3UU7Wc7nZzWI6_bwdkOCHqBl4nqArbajz9ETwiUKpKLCtiqRiVrIBVA7FfNonCJmZFf53Z8wAsCF537lozxWEE/s1600-h/tornado.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 216px; height: 191px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCdXyqWHqKugZVBVGTQvOy9HDN4nhfmvgIPp608Fh2D_Ki2ykE3s0Am3UU7Wc7nZzWI6_bwdkOCHqBl4nqArbajz9ETwiUKpKLCtiqRiVrIBVA7FfNonCJmZFf53Z8wAsCF537lozxWEE/s320/tornado.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5443868020020994898" /></a><br /><br />Once again it looks like a good walk home pondering, and some thinking about how mother nature does things and an idea just appears.......<br /><br /><h2>Windy maelstrom</h2><br />Working up (or back depending on where you are) it's likely that you are in some kind of structure which resembles the following (in a software place that is); someone with money and an idea or desire, and some people they have hired to get that done.<br /><br />Now if there is enough work (or a wide enough scope), the people in the middle likely end up getting more people to do the actual work.<br /><br />Which brings me to the analogy, of a <span style="font-weight:bold;">tornado</span>. At the top you'll have quite a large influence looking out over the savannah of business with a view granted by elevation (CEO vision, company direction, etc). Now at this top level, there are large ideas and big plans, large slow moving schemes and strategies, slow relative to day to day implementation that is. <br /><br />Ideas of months, quarters and years.<br /><br /><h2>The Mandelbrot Effect</h2><br />Now the next area (middle in a tornado or 1 step scaled in for fractal people) would be where the (sane) ideas from the top layer get filter too (i.e. what can we <span style="font-style:italic;">really</span> build for the boss). Here they percolate, are weighed, discussed and start to become real, plans are made, dependencies thought about, architectures considered and resource consulted.<br /><br />Weeks and months.<br /><br /><h2>Touching down</h2><br />At the <span style="font-weight:bold;">correct time and after planning</span> and once packaged up into a bite sized chunk, the idea touches ground and becomes real. <br /><br />While it's being created (coded) the next chunk is being filtered and refined, the tornado starts to follow a path and the foundations are laid.<br /><br />Days and weeks.<br /><br /><h2>Filter</h2><br />What is good to remember, is that ensuring that the correct ideas are in the relevant areas at the correct time is <span style="font-weight:bold;">vital</span>. Attempting to move across a savannah with the middle or the top of a tornado makes less than no sense, or the middle attempting to tell the centre what it needs to do or attempting to change it's direction on an hourly basis.<br /><br />Also attempting to get the base spinning at 500mph to get some real damage ...... errr work done, without the momentum and direction being observed it's futile.<br /><br />Such things start small and slow by necessity, they need to form, then they speed up .... and take out all things in their path.<br /><br /><h2>Patterns within patterns</h2><br />From the slow overarching path of the top of the tornado to the inner core spinning, the cycle is the same, feeding in and back out at the correct time, correct place and to give the correct momentum. <br /><br />Even down to the continuous integration of the development, or even the cycle of a http request.<br /><br />Attempting to be in the wrong place at the wrong time will have two effects, for a small or undeveloped development tornado it will stop it, for a large one you'll get blow out (and thrown down the stairs by the development lead).<br /><br />Much as with Mandelbrot, it's all looks the same, just depends on where you stand ...... so best know where that is before doing anything.<br /><br /><h2>Filter and stoke</h2><br />Remember if you're a development lead of some kind you have to ensure the correct amount is allowed though at the correct time relative to the speed of the core. Build momentum in development much in the same way as getting a fire going, build it up into the bonfire before throwing houses on it.<br /><br /><span style="font-weight:bold;">Protect it from the wind in the middle</span>. It's your job to be the gate keeper for distracting breezes and hot air .......so the core team don't have to content with it, they are too busy spinning at top speed tearing things up.<br /><br /><br /><h2>Practical</h2><br />1 - Boss decides outcome at a macro level<br />2 - Facilitators filter and put it in order<br />3 - Team members task it up and execute on it<br /><br />While the core at step 3 is biting off and delivering they are left alone by the facilitators at stept 2 till they have delivered.<br /><br />By which time the facilitators have seen the results of the last sprint, and thought about the next one, and left the current one <span style="font-weight:bold;">uninterrupted</span>.<br /><br />All seems simple when you write it down really :)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPFe86u5CHaX3Q4HfngJ3XqwgKcqLnTVHhKnK_h5hemRv_F7dpB3K5CFvetYqTGeHyFmHdvyMpU1uPiPFPKuCoKq6BXBj8zKD2ffWs7cuuuAlBT00SZIxogZV7zSU3bofkOoaFwIALRxM/s1600-h/tier.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 102px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPFe86u5CHaX3Q4HfngJ3XqwgKcqLnTVHhKnK_h5hemRv_F7dpB3K5CFvetYqTGeHyFmHdvyMpU1uPiPFPKuCoKq6BXBj8zKD2ffWs7cuuuAlBT00SZIxogZV7zSU3bofkOoaFwIALRxM/s320/tier.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443888822457082690" /></a>Unknownnoreply@blogger.com0