CEO Ben Elmore’s second installment of his four part series on building a a Flex Team was recently featured in InsideRIA. Read it here!
In our last post, I made the case for building out a Flex team and debunked the current misconceptions surrounding why companies choose not to: that the resources are too scarce, it’s too expensive, and you need a team of experts. With those roadblocks eliminated, the next step is to determine who you need and how to identify them. That’s what we’re going to address here.
Understanding Your Needs
It’s imperative to identify what your requirements are and the number of resources that you’ll need to address them. You must determine what your team needs to accomplish before you begin to assemble it, otherwise you risk redundancy, inefficiency, and slowed or stalled projects. It sounds elementary, but this step can save you a lot of headaches later on. Ask yourself these questions:
What is the size of the application(s) that you need built? You need to know this to decide the size of your team.
Are you building or augmenting your team? If you’re building, a senior resource along with two mid-level resources is ideal. If you’re augmenting, your decision will be based on the amount of work to be done.
Do you have time to train resources? If you do, consider hiring junior resources to pair with a senior resource who can provide mentoring and oversight.
How large and complex is your target application? This question will help you focus the size and needs of your team in direct relation to the duration of the project.
I want to emphasize a couple salient points about building your team. You likely don’t need a huge team (our experience has been that 3-5 resources are sufficient for most projects), nor must that team be comprised of experts with years of experience under their belts. We’ve found that mixed teams of junior and senior level resources are the most productive.
That said, there are times when experience does matter, which returns to my point about clearly delineating the task at hand before you select resources. The key is to realize that while you’ll need an expert to accomplish certain complex tasks like performance profiling an application for scaling or custom visualization, their skill set isn’t typically necessary throughout the entire project.
Here’s a handy categorization:
- Expert: min 2+ years experience with Flex. Built and produced highly available and/or interactive Flex application. Unique understanding of specific part(s) of Flex related to complex domain problem to solve. Not typically someone who will lead or grow a team.
- Senior: min 2+ years experience with Flex. Been on teams before, led a project, solid grasp of MXML and AS. Understands Flex in context of product life cycle. If ‘Designer’ then custom components and look/feel. Min 2 other languages. Performance best practices on Flex. Implemented min 2 Flex projects.
- Mid: 6m – 2yr working with Flex. Been on a team before, good grasp of MXML and AS languages. Has some understanding of performance related issues to actions.
- Junior: 0 – 6 months: One other language, preferably scripting language. Has been through training and/or read and walked through good Flex book.
The Hiring Process
The hiring process has three components: identification, qualification, and on boarding. The first step is to make a list of how many resources you want to hire at which level of experience (expert, senior, mid and junior), and what skill set is needed (architect, designer, developer). The next thing to do is to locate them. You can use personal referrals, Monster, or similar sites, user group manager/lists, or a corporate recruiter.
Once a candidate has applied there are some specific things I look for on the resume. The most important thing for me is that the languages listed on their resume are consistent, complimentary, and parallel to Flex. If I need a Flex designer, I look for Flash, CSS, JavaScript, or other visually expressive languages; if I need a core Flex developer, I look for programming languages like Java, Ruby, .NET, JavaScript or CF. I’m looking for consistency here. Too much variety is often an indication of lack of focus.
I also look at experience with Flex itself: the length of time working with it and whether it was used peripherally or as a project core. I want to ascertain how they became exposed to the language to understand how they’ll think when working with Flex If I am looking for a senior level developer or architect I look at frameworks, patterns, and methodologies listed on their resume.
The last things I look for are soft skills and overall work experience. I look for both variety and stability here. Were past jobs remote, on-site, or both? Also, speaking or writing engagements are a good indication of a potential team mentor.
Once you’ve found an applicant that you believe matches the criteria you’ve established, it’s time to move on to the interview. This is the “qualifying” component of the hiring process and, arguably, the most important. The interview is generally where the decision to hire is made, and this decision is critical. You need to hire the right people at the right time and understand that mistakes made here could potentially doom a project. Although that sounds scary, knowing what skills resources need and how to identify them will help you make the most informed choice and that’s what we’ll discuss in our next post.
Tags:
User Design Expert Will Evans was elected to the Information Architecture Institute today. His term will last three years, and he’ll be responsible for developing and leading initiatives that provide networking opportunities for information architects, education and mentoring, and driving awareness around the evolution of user experience and design.
Will has been a member of the Information Architecture Institute for years, but this is the first time he’s been elected to the board. He’s a frequent guest and popular speaker at IA conferences. Will serves as Twin Technologies’ Director of User Experience, providing visionary creativity and guidance for clients that are interested in redefining how users experience their brand online. Will’s designs explore how people engage on and off-line, which tools act as the right catalysts for online engagement, and what factors contribute to social traction.
The IA Institute is a professional organization dedicated to advancing the state of information architecture through research, education, advocacy and community service. IA Institute sponsors the IDEA conference each year, that explores the convergence of experience design with social and user experiences, and the growing importance of aligning expectations.
Congratulations, Will!
Tags:
Principal, Experience Design Will Evans spoke on Emergent Social Search Experience during a panel discussion at the Enterprise Search Summit in NYC on May 12
The social web is all the rage, but does “social” work for the enterprise? Like water cooler wisdom, social search can help surface information workers might not know exists. Search inside and outside the enterprise is becoming social. Will discussed the evolution of social search, how crowd wisdom is evolving search interfaces, and what the enterprise can learn from these developments.
Will’s expertise helps Twin Technologies clients learn strategies, explore solutions, and build the skill sets you need to make your content not only searchable but findable and actionable. Enterprise search is not just about locating masses of information, it is about enabling employees to more effectively perform their jobs.
You can catch up with Will at the Enterprise Search Summit West in San Jose this November.
Tags: enterprise search·social search·will evans
Building The Next Generation of Online Learning Platforms
A distance learning system is possible that is fundamentally different from other e-learning platforms available today. While most e-learning sites cater to corporate professionals and learning institutions, this platform can provide a means for the general internet user to create and participate in learning activities in a meaningful way. By providing flexible tools such as interactive video streaming and charting, workflow creation for lab exercises and guided self-study, a quiz creation and proctoring module and interactive presentations, instructors can create diverse courseware geared at fellow hobbyists, crafters, home schoolers and study groups. An easy to use online management system can allow quick and easy creation of content, while an online marketplace provides revenue for courseware creators.
A Conduit of Knowledge
In most self-study and homeschooling environments, the chief barrier to success is lack of meaningful instruction. Most available courseware is limited in scope or expensive. Even when appropriate materials can be found, often a lack of mentoring prevents students from getting past difficulties in the learning process. Those who have the ability to provide this mentoring often cannot afford to invest the time or money required, or a channel may not exist for their mentoring to reach those that need it. A conduit of knowledge is needed to bridge the gap and bring mentors and students together.
The new e-learning platform provides this conduit. For a yearly fee and a percentage of revenue, mentors have access to an online toolset that allows the creation of locations, classes and courses. Courses are the overall content unit offered to students as part of a searchable and categorized marketplace where they can shop for mentoring and instruction. Students will be able to reserve space or immediately purchase access to a course depending on whether a course is offered only during certain times, as limited enrollment or on an ongoing basis, . Courses may have prerequisites that can consist of any other course offered in the marketplace as determined by the instructor.
Courses are taught on one or more locations, which are online areas containing a set of tools. Locations are the settings for classes, which are an individual unit of work that a student is led through. Classes may occur only at certain times if live instruction is given or on an ongoing basis if guided self-study is provided. Instructors and students may communicate in forums or privately between classes to provide feedback and preparation for other classes. Instructors may choose which students are aware of or may attend each class according to course level or individual selection.
Students attending a class access a location, a page consisting of a set of tools. A tool may be a presentation or lecture, a video or live video conference, a project workflow, a live chart, chat, or live or recorded audio. Tools in a location connect with each other and interact. Tools also provide an interactive interface according to the settings the instructor chooses.
A Yoga instructor might choose to add a project workflow, live audio, video, live video and chat to a location. Students participating in a class may hear music, general instruction and question/answer sessions via live audio while being led through a series of videos showing correct form using the project workflow. Students that have questions use the chat interface to communicate with the instructor. The instructor can view the student in real-time and provide feedback via audio or chat. This allows each student to work on their form using the instruction provided in the videos while receiving instant interactive feedback.
Students can save the live chat, audio or video if allowed by the instructor, or can take notes that are preserved in the lesson. Instructors can create template web pages, articles, links and downloadable files to be available in the reference library linked to a course, allowing easy access to recommended resources.
Courses or individual classes may be private, group instruction or guided self-study. Guided self-study uses project workflows and self-auditing quizzes to guide students through study of a subject. A programming instructor may design a course that consists of several guided self-study classes interspersed with group instruction. Private instruction could be made available by the instructor as part of a course or on a premium basis.
Students pay for fee-based courses by credit card and can use the card to reserve a place in the class if set by the instructor. Free classes may be reserved by students on a first-come or instructor-chosen basis depending on the settings for a class or course. Courses can be open or closed, so students may or may not be able to take individual classes without taking the complete course. This flexibility creates a conduit through which diverse groups of instructors and students may exchange knowledge.
A Self-enhancing Strategy
Content on the platform will also be aimed at improving instructors’ skills and use of the tools provided. Instructors will receive one hundred percent of revenue for courses offered on courseware creation and site usage, creating an additional source of mentoring and revenue for instructors. The modular design of the tools allows instructors to create customized tools and locations that can be offered free or at a premium to other instructors.
Courses may be offered by one or more instructors and are rated by students on completion. Instructors can use this rating to offer guest instructor services for courses, as well as attract other instructors to offer classes in a course. By choosing a highly rated course as a prerequisite, students taking the high-rated course will see information about other courses they may wish to participate in. Students may also make their course lists public and receive credits for each referral that may be used toward other courses. The marketplace becomes a collaborative space that helps new students navigate the selection of courses while helping instructors find students and revenue sources.
Tags: digital media·homeschooling·remote instruction·remote learning·video streaming·workflow
Running an agile project with a distributed (remote) team can be challenging at times. The root of all evil for any agile project is communication breakdown. At Twin Technologies, we employ technology to help improve communication which in turn keeps these projects running smoothly.
We employ a few tools on our Agile projects when working with a remote team:
- Online task board (i.e. Rally, Version One, etc) (free to 10 users)
- 24/7 Conference Bridge (free)
- Jabber for constant communication (free)
- Subversion Repository for code (free)
- Trac Wiki for documentation (free)
- Adobe Connect Room (free to three users)
Each team member on an agile project is sure to have a preferred method of communication. The tools above allow each member to communicate however they feel most comfortable, or however they feel the current situation deems most effective (IM, phone, screen sharing, etc).
The tools listed above also ensure that team members are able to efficiently work from any location since all information is stored securely within the cloud and not tied to a specific location.
Stand-up meetings, a must for any agile project, also become more difficult in a distributed environment. These issues are easy to overcome with proper training.
Pre Meeting:
- Log current status on the online task board (in progress, done)
- Log current done % on the online task board
- Minimize all other windows, aside from the task board view
- Disable alerts for IM, Twitter, Email, etc (c’mon, it’s only 15 minutes!)
Basic Stand-up:
- Have the online task board open in front of you
- Follow an established order for team members (I like reverse alphabetical)
- Keep on topic:
- What did you do yesterday?
- What are you doing today?
- What are your current roadblocks?
By providing some freely available tools to your distributed team, you too can ensure a successful agile project rooted in solid communication.
Tags: Agile
To support its growing list of clients, Twin Technologies has increased its software engineering team to include Senior Consultants Nicholas Tunney, Scott Sayles, and Chris Turner, and build out the marketing team with the addition of Julie Colwell.
Previously the Vice President of Software Architecture at AboutWeb, Nic Tunney brings executive level experience leading teams in public, private, and federal sector engagements, building brand awareness, and developing partnerships. A sought after speaker and author, Nic is an Adobe Certified Instructor, Adobe Community Expert, and founder of the Capital Area Adobe LiveCycle user group, sponsored by AboutWeb.
Scott and Chris bring versatile backgrounds in object-oriented programming with extensive experience in the full lifecycle of software development including requirements gathering and definition, interface design, testing, and maintenance. Scott’s track record in Java development, troubleshooting, and creative web applications along with experience building solutions for federal agencies make him a resourceful addition to both Twin Technologies’ commercial and government projects. Chris’ experience in building customer facing web applications and solutions using an impressive list of best-breed technical tools make him an asset for the Twin Technologies’ team.
Julie has multiple years experience developing and implementing marketing communications and public relations programs for companies in high tech including SEO, SaaS, networking, enterprise software, servers and storage, and advertising optimization. At Twin, she is responsible for building strategic marketing plans and driving the tactical components of these plans from conception and vision to implementation.
“We are thrilled to introduce these new members of our team,” says Ben Elmore, founder and CEO of Twin Technologies. “And we’re excited about what this growth means for the services and solutions we can offer more customers.”
About Twin Technologies
Twin Technologies builds mission critical RIA software solutions. We’ve leveraged our decades of experience, extensive domain expertise, and RIA capacity to bring an elegant interface and enterprise usability to the web. Our applications increase your ability to share information, collaborate, and manage content online. Built with the rich, flexible, powerful technology that is the bedrock of today’s online business, Twin Technologies creatively links the intuitive, social, and collaborative interfaces of Web 2.0 with enterprise technology. We have advanced technical proficiency in Adobe Flex, LiveCycle, AIR, Java, AJAX and System Architecture.
Tags: Adobe·Adobe LiveCycle·Chris Turner·growth·Julie Colwell·Nic Tunney·RIA·Scott Sayles
Introduction
This blog post will be the first in a series about Continuous Integration and how it relates to Flex. In this post we will just talk about how to create a project using Antennae to help automate the build and test of our Flex code. If you are using the stand alone version of Flex Builder 3 you may need to install Ant. Here are some good directions on how.
Setting up the Project
First create a new ‘General’ Eclipse project called SampleTestProject in Eclipse.
Now download Antennae and unpack it to a temporary directory which we will refer to as temp/.
Now go to tmp\Antennae-1.2.0\Antennae and look into templates directory for the SampleTestApplication template and just copy the build.xml and the src directory to your new project (note do not copy the SampleTestApplication directory just the files and directory underneath it).
Also copy over the Antennae lib/ and tools/ directories to your new project.
Next copy over the files build-user.properties, build-assets.xml, and build-imports.xml.
Next set the flex.dir property in build-user.properties file to the path of your Flex 3.0 SDK. For example:
Flex.dir=C:/flex_sdk_3.0.0.477
Next you need to edit the build.xml to point to your root as well as add some new tasks and in Listing 1.
Listing 1 – build.xml
<project name=”SampleTestApplication” default=”test”>
<!– Project specific overrides –>
<property name=”root.dir” location=”.”/>
<!– Shared properties –>
<property file=”${root.dir}/build-user.properties” />
<!– Common properties and targets –>
<import file=”${root.dir}/tools/build-common-imports.xml” />
<import file=”${root.dir}/lib/build-assets.xml” />
<!– Build path –>
<path id=”flex.lib.path”>
<pathelement location=”${flexunit.swc}”/>
<pathelement location=”${arc-flexunit.swc}”/>
</path>
<!– Project specific targets –>
<target name=”clean” description=”Clean the project”>
<delete dir=”bin” />
</target>
<target name=”build” depends=”init,flex-test-application” description=”Build the test application”/>
<target name=”test” depends=”clean,build,test-flexunit” description=”Run the test application”/>
</project>
Now let us add a new file called SampleTestProject.mxml to the src/ directory under the root. The file looks like listing 2.
Listing 2 – SampleTestProject.mxml
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute”>
</mx:Application>
After you have completed listing 2 save the file. Now we let us add a test in the same place in the src/ directory like listing 3.
Listing 3 – SampleTest.as
package
{
import flexunit.framework.TestCase;
public class SampleTest extends TestCase
{
public function testTrue():void
{
assertEquals(true, true);
}
}
}
If you now save these files and run the build.xml by simply right clicking on the build file, selecting Run As> Ant Build then then Ant will start, delete the bin director, then build the files, then call the FlexUnit package in the lib directory, run the Flex unit test, and return the results in the Eclipse editor. That should look something like figure 1.

Figure 1: Out put of Antennae build file with three tests.
Summary
As you can see nothing terribly exciting but Antennae provides us several things that make our life easier. The first of these is a pretty well thought out framework for building complex Flex based application. The second is solid integration of the FlexUnit project which is GUI based. While having a GUI based unit test tool is valuable it is not very good for Agile development practices based around the concepts of continuous integration and continuous production. Antennae allows us to call FlexUnit from Ant, having it run as part of our build cycle, and push the test results to something like a log file. This is will become especially useful in later articles when we integrate our project with our Continous Integration server.
Also if you would just like to download the Eclipse version of this project you can find it here SampleTestProject.
Tags: CI·FLEX