Archive for the ‘management’ Category
Developer test – How to interview a developer – Part 1
Have you interviewed any developers for your team?
If you have you will know how incredibly difficult it is to find good people and how insanely difficult it is to find great people. I used to use the traditional method, of asking a few questions about their experiences and asked them to describe how they would break down a complex problem etc … however I found that this method did not always get the people I wanted.
Whilst working with the liberate platform I used the “Show your name on the screen test”. This worked really well I was amazed at how manny people could not do this
<table><tr><td> </td></tr></table>
document.tables.cells(0,0).write("Simon Elliott");
When I came to test OpenTV A good friend of mine developed a very very simple technical test. The candidate had to look at a single 10 fine function and spot the bugs … easy. There were only three, a syntax bug, adding a value instead of a pointer when looping and an incorrect centinal on a loop.
With a rudimentary understabnding of the language anyone could get the answer.
However while these tests were great at finding bad developers,
they were not so good at finding great developers.
My new tests are, better they test language fundamentals, ability to communicate, how to problem solve the works …
“Imagine that you have made a Clock class, and you are writing the functions to draw the big hand and the little hand. You already have member functions to draw the clock face, and to draw the hands all you need to do is write 2 functions
get_big_hand_rotation ( hours, mins)
and
get_little_hand_rotation ( hours, mins)
What would the code for these functions be?“
This test is great, the candidate gets to think his way out of a problem, the things to look for are
- Is the candidate professional in approach, i.e. do they qualify the question with you, do they take care to understand what you want from them.
- Is the code that they make good?
- How quickly do they do the test?
- Are they good communicators?
- Does the candidate teach you something?
Here is a some code that does this … but the important thing is how the candidate answers the question.
class Clock {
public static void main(String argc[]){
System.out.println("Welcome to Clock");
int hour = new Integer(argc[0]);
int minet = new Integer(argc[1]);
System.out.println(” big hand rotation = ” + get_big_hand_rotation( hour, minet ));
System.out.println(” little hand rotation = ” + get_little_hand_rotation( hour, minet ));
}
private static float get_big_hand_rotation( int hour, int minet ){
return minet * 6;
}
private static int get_little_hand_rotation( int hour, int minet ){
return ((hour * 60) + minet) / 2;
}
}
A 360 Degree Viewpoint for the Downturn
This is an article is based on an article written by myself and Stephan Folan.
Background
In 2009 the goal is to keep the business in a condition so that it can revive quickly when the opportunities arise. The business must balance cutting costs, retaining people and providing good service that needs to reflect micro-demand.
What is micro-demand? A micro-climate is where you can travel 1km and experience a completely different set of conditions (hot, rainy, fog, snow) at each point but in each location. Micro-demand will be like a local economic zone (over time) where each economic scenario differs from the surrounding period with little warning. The ability to adapt quickly will determine if the business can survive through to the end. The ability to speed up to take opportunities as well as to reconfigure the business to reflect demand is
essential.
Many businesses are at what Andy Groves of Intel calls a strategic inflection point, the time in the life of a business when its fundamentals are about to change. This inflection is an economic one and only the most
adaptable will survive. Simply adopting new technology or fighting the competition as you used to may be insufficient.
Taking a 360 degree evaluation approach (what to stop doing, start doing, continue doing) is a simple method that will reflect things that could improve the health of the business. The list below is based on technical and project experience that you can find within your organization and it is intended to provoke other areas of business review that could generate similar results.
Stop Doing – ‘Less Is More’
Is the business as lean as it can be? Old habits die hard and there may be customs dressed up as processes, multiple authorizations required for business as usual events and inherited systems that should be discontinued. Any new processes that are designed need to anticipate that they need to
be flexible to accommodate future changes.
Do all businesses need availability of four nines (99.99%)? Each 9 adds an additional 30% to the cost of managing and running operations. Not just hardware and software costs but support, documentation, reviews and the all the regulatory/compliance processes and reporting that goes with it.
A restructured business can get rid of unnecessary hardware and software and reduce the costs. Each process, software application or piece of hardware attracts audit, compliance and regulation costs that increases the overall cost of business.
Renegotiate with your hardware and software support and downgrade all non-client facing activities. Are your Service Level Agreements still relevant for your current level of business and client response? Can you share services with other companies? Reduce regulation costs by eliminating compliance re-work. Consider how many times each project, each person and each piece of hardware gets audited. Establish what it costs in terms of disruption, displacement activities and the distraction from business as usual. This is a street digging metaphor where the same road is dug up monthly for the gas, electric, water and other
inspections. Coordinating these inspections will reduce disruption, time, costs and raise morale.
A prototyping approach will result in cost effective R &D results and identifying more opportunities. Too many template business cases cost almost as much to develop as undertaking the project itself. Reward fast
failure and initiative rather than ‘me too’ decision making. Responding to change takes priority over following a plan and working software over comprehensive documentation.
Allow more downloads, more storage, less firewall policy, more access to external partners and materials. Spend less time policing staff and more time freeing them up by providing resources so that corporate knowledge is built up from a variety of source. Security should prevent bad people and bad software getting in, but too much time is spent asking for additional email storage and access to download legal software, unauthorized by central authority.
Start Doing – Start Small, Stay Small, Move Quickly
Create a culture of collaborative, small projects that have a 3-6 month timeline. Promote customer collaboration over contract negotiation. Train people to start up, complete and kill off projects quickly. ‘Good enough’ technology will be designed to last for 6 months – 1 year maximum before replacement. Longer business cases do not make sense and disguise an inability to change the business.
Smaller motivated teams will always beat large off-shore factories in getting to market. Design and ingenuity cannot be outsourced and getting from the idea to market requires that your design team are able to collaborate effectively (instant messaging, file sharing, peer-to-peer software support this behavior). Once a project is up and running it can be outsourced to a trusted partner to manage and operate.
Open Source technology is still being resisted by some businesses as they believe that it is untried and untested, this is wrong. There are now many technologies that are low cost, fully powered alternatives to the more expensive mainstream technologies. PHP, Java, WordPress, Drupal, Ubuntu, OpenOffice, VirtualBox, BackPack and Alfresco are examples of applications that have been taken up and championed by businesses.
Furthermore there are a large number of our technologists are enthusiastic about pushing and supporting these technologies, if asked.
Continue Doing – embrace technology, more information
Keep using dashboards to monitor business performance but ensure that you are measuring the things that are relevant to predicting client change, business change and market changes in a down turn. Using the same performance indicators that were used when the market was growing will be like driving by looking in the rear-view mirror – except that things will be closer than they appear in your management view.
Google Apps, Virtualisation, Outsourcing, Mobile Computing, Cloud Computing and Social Networking (Search Engines, Blogs, Twitter and Instant Messaging) should be part of your business already. If you have
resisted the urge to use these technologies then this would be a good time to investigate how they can reduce your costs.
Tele-working, flexible hours and increasing employee choice should be encouraged to increase employee retention. It is a way of customising the employer-employee relationship to build loyalty and flexibility from the employee and reduce the amount of command and control required from the business.
Business Review
Regular business reviews should indicate where each business function sits in terms of their responsiveness to internal and external change. By looking at the organisational behaviours you can identify where your business is on the matrix below and what needs to be done to get where you need to be.
In less turbulent times all of the categories will produce a good return on investment with the “Well Prepared” being the most effective. In less certain times its rigidity and lack of responsiveness will make it the most vulnerable as they are unable to adapt as well as the “Inertia” and “Chaotic” categories
that will have learned how to muddle through a different degrees of efficiency.
Recommendations
Identify at a business and operational level where you are on the matrix and identify and manage key indicators that can provide a dashboard on momentum in moving to a more agile approach. Typical measures could include:
- No. of active clients, new clients and renewed business
- Demographics of client base and their key indicators (price,
service…) - Costs of attracting new client
- No. of projects completed on last 3 months;
- Average cost of project;
- Average no. of reviews of each project;
- No. of servers under direct management
These indicators will vary from context to context and need to be easily
captured from the existing systems and processes and capable of being
displayed in a dashboard format that everybody can access and keep score.
Conclusion
The concepts outlined above are continually debated within any company. Such business transformations are inevitable in 2009 and a judicious application of tools and approaches will support an adaptable
business in a changing environment. Technology skills, design expertise,
project management skills and implementation craft will all be needed in
small teams that can hit the ground running and then alter direction to follow
where the client needs to go. The disruption that these changes will cause
must be minimised and managed to advantage of the upturns in demand
when they occur.
4COMMENTS
12:00 pm
by simon
No Comments »
architecture
code
colaboration
enterprise
ideas
management
marketing
PONG is more than just a game … its a way of life
Have you ever wanted to learn a new programming language?
Have you ever had to introduce a student to programming?
Have you ever had to teach a team how to code for a new platform?
Well if you have you will know that all these are difficult jobs, most seasoned professionals will have done them many many times.
Its difficult to learn these things straight from books, infact to get the real experience you neeed to professionally make software quickly when you dont have the skills inplace its downright impossible.
I have a standard approach … and too keep it all fun it involves pong
.
When Im setting up a team using a programming language that they dont know, I ask them to make pong, without using copy and paste.
Pong is a simplistic game that involves very few computing tricks. However it is also very challenging for the platform. You dont need a functional spec before you start codeing as everyone knows pong.
The ball has to travel quite quickly.
The bats have move slowly enough to make it a challenge
The AI of the computer opponent can not be too good.
If they can make a good imitation of the game on the platform then you know that have a good grasp of the programming language. It teaches them how to structure the code, the repository, the build procedure and also how to get the most from the platform. You would be surprised just how many platforms Ive worked on that simply cannot run a good pong game.
If you love pong / programming and working in a team then join my Facebook pong group

0COMMENTS