Why other people don’t get it @sandromancuso
May 12, 2015
Why other people don’t get it
@sandromancuso
The Technical Assessment
Which ones are the good developers?
You tell me You fucking hired them
Sandro Mancuso@sandromancuso
Manager: Why developers…?
Managers complain about developers, but:
Do they know what a good developer looks like?Do they know how to hire good ones?
Developer: How do I convince … ?
1. Define the culture you want to have in your company.
2. Don’t make your problem bigger. Hire allies.
3. Help people to help you.
Changing the recruitment processLook for passion
job descriptions are bad
Java Developer - J2SE / J2EE - Financial Software
Java Developer (J2SE or J2EE) with SQL experience required for a permanent role with a growing and extremely successful Financial Software organisation.
The ideal candidate for this java development role will possess a passion for technology and a desire to have exposure to, and learn more about the Financial Services arena.
Salary: £50,000 - £60,000 plus benefits and bonus
Skills and Experience
Applicants must have strong core Java skills gained in a commercial environment along with the following technical skills and experience:
• 5+ years intensive Java Development (J2SE or J2EE)• 3+ years intensive SQL (some knowledge of SQL Server and Oracle)• Experience with web technologies (ideally HTML 5, CSS 3, jQuery, Spring
MVC)• Strong OO analysis and design experience• Experience of the full software development lifecycle (SDLC)• Ability to clearly communicate with peers, business analysts and subject
matter experts
Java Developer - J2SE / J2EE - Financial Software (cont.)
The following skills would be beneficial but not essential:
• Development on high performance distributed systems (in java)• Experience with both real time and batch systems• Experience with distributed technologies such as Oracle Coherence• Experience with Spring , Hibernate• Experience in an agile environment (including TDD, JUnit, etc.)
The java developer role will involve close interaction with the Systems Architect, Java Team Leaders and other members of the development team and will demand a high level of design and coding to implement and deliver enhancements.
There will be ample opportunities for the successful java candidate to quickly expand on their banking and funds management experience, with plenty of business exposure.
[Ideal candidate] … will possess a passion for technology
What if a job description is needed?
Developer (senior) - Development Team
We are looking for smart, self-motivated software developers to join our truly exceptional development team. Good working TDD experience is essential for this role.
About you
• You care about software; you have a passion for what you do which you can clearly convey by your actions rather than just waffly personal statements on your CV.
• You have an eye for software design and can talk eloquently on a range of topics due to your experiences and also from reading and experimentation.
• For you it’s more than a job.
TDD
Among other things we’re strong advocates of TDD. We think it represents such a particular mindset we’d only consider you for a senior position if you have significant working experience with it. If you do have working experience with TDD, great! We want to know more. How much? How did you do TDD? How have you used TDD on a recent project? What problems have you faced? The more the better!
Developer (senior) - Development Team
The role
Our teams are cross-functional, self-organising and highly autonomous. No architects, project managers or middle management, you’ll be working directly with our Product Managers and stakeholders in a highly collaborative manner. This approach requires a huge amount of teamwork and maturity and is not right for everyone, but we believe it’s the best way to create great software.
Among other things, Pair Programming, TDD/BDD, Refactoring, and Continuous Delivery are deeply embedded and we’re constantly striving to improve the way we work. We know typing is not the bottleneck, so among other things:
• Have around two sessions a week spending time doing things like Katas, Dojos and discussing practices and technologies.
• Each get up to two days “innovation time” a month we can use to play with new toys or product ideas.
• Regularly attend conferences and community events, both as participants and contributors (we’ve recently ran sessions at QCon, SCUK and SPA).
• However, we’re not perfect and not afraid to say so. We recognise we have many problems which need solving and a long way to go on our journey of continuous improvement.
Developer (senior) - Development Team
Technologies we use
Most of our stack is C#/.Net but we’re using and investigating many other languages and technologies (e.g. Ruby, server side JavaScript, C++, Python). We’d be interested in candidates from any background as long as you have a keen understanding of Object Oriented languages. Here’s a (not exclusive) list of technologies we currently use:
• C#, Ruby, JavaScript• ASP.Net MVC, OpenRasta, Nancy, ServiceStack, Nhibernate, Windsor,
StructureMap, NUnit, RhinoMocks, ReSharper, NDepend• Cucumber, Rails, RSpec, Rake, Capybara, Selenium, Watir• REST, Oauth• MS SQL, ElasticSearch, Solr• Mono, Windows, IIS, Nginx• RabbitMQ• Git, TeamCity
We’re also very keen on open source. We contribute to some of the technologies listed above as well as maintaining our own forks (+ publishing other things we’d like to share) on our GitHub account
Culture & Values
You can’t be serious about building a great team if you don’t have time to interview
filtering developers by passion
The interview process
code submissiontechnical conversation
pair programming sessionfinal conversation
Don’t blame the developers Ask yourself how they were hired
Ask yourself how they were nurtured
The longest and hardest recruitment process in history
culture of learning
book club
tech lunch
roundtables
switching projects for an iteration
switching projects for a few hours
group code reviews
hands-on sessions
communities of practice
pet project time
It’s better to ask forgiveness than to beg for permission
What if others don’t join in?
fear and incompetence
responsibility vs. accountability
autonomy, mastery, and purpose
hire, nurture, empower
The reason why people don’t give a shit is because that’s the behaviour
you unwittingly nurtured.
Dear Manager,
Yours sincerely,Sandro
The reason you have to put up with a lot of shit is because you haven’t done
enough to change the situation.
Dear Developer,
Yours sincerely,Sandro