Top Banner
Why other people don’t get it @sandromancuso
35

Why other ppl_dont_get_it

May 12, 2015

Download

Technology

Presented at JAX London 2013.

Software craftsman and co-founder of the London Software Craftsmanship Community (LSCC). Sandro has been coding since a very young age but just started his professional career in 1996. He has worked for startups, software houses, product companies and international consultancy companies. Having worked as a consultant for the majority of his career, he had the opportunity to work in a good variety of projects, with different languages and technologies, and across many industries. Currently he is a director at UBS Investment Bank, where he works as a hands-on mentor, giving technical directions, looking after the quality of the systems and pair-programming with developers in the UK and abroad. His main objective is to help developers to become real software craftsmen.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Why other ppl_dont_get_it

Why other people don’t get it

@sandromancuso

Page 2: Why other ppl_dont_get_it

The Technical Assessment

Page 3: Why other ppl_dont_get_it

Which ones are the good developers?

Page 4: Why other ppl_dont_get_it

You tell me You fucking hired them

Page 5: Why other ppl_dont_get_it

Sandro Mancuso@sandromancuso

Page 6: Why other ppl_dont_get_it

Manager: Why developers…?

Page 7: Why other ppl_dont_get_it

Managers complain about developers, but:

Do they know what a good developer looks like?Do they know how to hire good ones?

Page 8: Why other ppl_dont_get_it

Developer: How do I convince … ?

Page 9: Why other ppl_dont_get_it

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.

Page 10: Why other ppl_dont_get_it

Changing the recruitment processLook for passion

Page 11: Why other ppl_dont_get_it

job descriptions are bad

Page 12: Why other ppl_dont_get_it

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

Page 13: Why other ppl_dont_get_it

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.

Page 14: Why other ppl_dont_get_it

[Ideal candidate] … will possess a passion for technology

Page 15: Why other ppl_dont_get_it

What if a job description is needed?

Page 16: Why other ppl_dont_get_it

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!

Page 17: Why other ppl_dont_get_it

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.

Page 18: Why other ppl_dont_get_it

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

Page 19: Why other ppl_dont_get_it

Culture & Values

Page 20: Why other ppl_dont_get_it

You can’t be serious about building a great team if you don’t have time to interview

Page 21: Why other ppl_dont_get_it

filtering developers by passion

Page 22: Why other ppl_dont_get_it

The interview process

code submissiontechnical conversation

pair programming sessionfinal conversation

Page 23: Why other ppl_dont_get_it

Don’t blame the developers Ask yourself how they were hired

Ask yourself how they were nurtured

Page 24: Why other ppl_dont_get_it

The longest and hardest recruitment process in history

Page 25: Why other ppl_dont_get_it

culture of learning

Page 26: Why other ppl_dont_get_it

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

Page 27: Why other ppl_dont_get_it

It’s better to ask forgiveness than to beg for permission

Page 28: Why other ppl_dont_get_it

What if others don’t join in?

Page 29: Why other ppl_dont_get_it

fear and incompetence

Page 30: Why other ppl_dont_get_it

responsibility vs. accountability

Page 31: Why other ppl_dont_get_it

autonomy, mastery, and purpose

Page 32: Why other ppl_dont_get_it

hire, nurture, empower

Page 33: Why other ppl_dont_get_it

The reason why people don’t give a shit is because that’s the behaviour

you unwittingly nurtured.

Dear Manager,

Yours sincerely,Sandro

Page 34: Why other ppl_dont_get_it

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

Page 35: Why other ppl_dont_get_it

Thank You

http://leanpub.com/socra

@sandromancuso

[email protected]