non-technical skills for developers

39
Non-technical skills for developers

Upload: alexander-sukhanov

Post on 11-Feb-2017

320 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Non-technical skills for developers

Non-technical skills for developers

Page 2: Non-technical skills for developers

[email protected]@alex_sukhanov

Alexander Sukhanov

Page 3: Non-technical skills for developers

Disclaimer:

All of the following is the result of my personal experience and some stuff I’ve read over the time

Page 4: Non-technical skills for developers

Intro

Page 5: Non-technical skills for developers

We do our work in projects

• Projects have deadlines. We need to have a skillset to meet them.

• Most projects are done in teams. We need soft skills to efficiently work with other people.

• If your projects are done solo and don’t have any internal or external deadlines – Yay, you don’t need any skills at all!

Page 6: Non-technical skills for developers

Non-technical skills

Page 7: Non-technical skills for developers

I. Personal productivity

Page 8: Non-technical skills for developers

Personal productivity

Read my other presentation on productivity: http://bit.ly/1U9ROdg

In short:1. Remember about death2. Set macro and micro goals for your roles3. Learn to set and prioritize every-day tasks4. Consider physiological and psychological

factors

Page 9: Non-technical skills for developers

Personal productivity

5. Build useful habits6. Learn mechanics of working on computer7. Find the right tools8. Apply extra effort9. Remember to balance!

Page 10: Non-technical skills for developers

II. Responsibility

Page 11: Non-technical skills for developers

Responsibility

• Always keep your word– Think before giving your word– Do everything in your power to keep it– If you are failing – ask the person you gave your

word to to remove the obligation.• Learn the difference between doing a task and

having a task done– ‘Done’ is when your result is accepted– So start early. You may have to redo the task

within the deadline

Page 12: Non-technical skills for developers

III. Juggling multiple tasks

Page 13: Non-technical skills for developers

Juggling multiple tasks

• It’s not a skill you either born with or not. It’s developed.

• To do juggling efficiently– Keep track of multiple active tasks. Use tools,

write them down!– Switch from one to another with minimal time

loss. Zoom out, think.– Set priorities well– Learn to not care about something while you are

unable to work on it

Page 14: Non-technical skills for developers

IV. Understanding business context of work

Page 15: Non-technical skills for developers

• Business context of work is as important as a technical part

• Four levels of understanding business context:– Low. Having faint business context of a task. It's

not clear what it means and why it's important– Medium. Knowing business goals that this project

will accomplish.– High. Knowing not only business goals, but also

understanding overall organizational strategy and stakeholders' perspective

– Awesome. Full awareness. Additional knowledge of the market and competitors

Page 16: Non-technical skills for developers

V. Forging compromises between business and technology

Page 17: Non-technical skills for developers

Compromising between business and technology

• Goal of your work is to bring value to the organization/customer

• So you need to understand goals and problems of your clients and customers.

• Don't just execute. Ask others "why" a lot• Learn how to explain technical necessities

such as refactoring. Read: http://bit.ly/1WtyoP4

Page 18: Non-technical skills for developers

VI. Managing relations with other people

Page 19: Non-technical skills for developers

Managing relations with other people

• Management =! Manipulation• Learn their values. Work with those who share

yours• Give to others. They will help you back. In

most of areas they are much more productive then you

• Control your emotions. – If you are angry let those chemicals leave your

system. Drink a glass of water

Page 20: Non-technical skills for developers

Managing relations with other people

• You could make mistakes. Own that!• Talk about ideas, not things and people• Win win game is better then zero sum game

Page 21: Non-technical skills for developers

VII. Efficient communication & Positive politics

Page 22: Non-technical skills for developers

Politics – a process by which a group makes a decision

Page 23: Non-technical skills for developers

Efficient communication & positive politics

• Talk about ideas, not things and people• Understand team and organizational goals• While solving problem in a group the only

thing that you are looking for is the best idea– Doesn’t matter whose it is– If you have other goals – skip that discussion– Learn about 6 hats of thinking. Make others wear

the same hat and change it through the conversation. http://bit.ly/1SBkxbe

Page 24: Non-technical skills for developers

Efficient communication & positive politics

• Control your emotions. – If you are angry let those chemicals leave your

system. Drink a glass of water• If intentions of others are not clear – assume

positive intent and then clear them up.• Learn how to critique and not to criticize: http

://bit.ly/1SUdawa

Page 25: Non-technical skills for developers

VIII. Managing technical teams

Page 26: Non-technical skills for developers

Managing technical teams

• Build trust (trust others first)• Lead by example• Protect your teammates• It could be stressful at times. It’s ok. • Focus on the product and the process. – But only on one thing at a time. – Have retrospective that targets the process

• Balance learning, teaching and doing the work

Page 27: Non-technical skills for developers

Managing / being part of technical teams

• Learn how to delegate– State your goal (what, not how)– Set boundaries– Set rules (as minimum as you can). Think about

fail safe– State recourses other person have in his/her

disposal– Clarify the reporting– State Reward / Punishment (not money,

something from inner motivation)

Page 28: Non-technical skills for developers

IX. Managing ambiguity

Page 29: Non-technical skills for developers

Managing ambiguity

• Find and reduce accidental complication• Make things simple not complex: http://bit.ly

/19t9CLZ• Separate focus on the product and on the process• Iterate• Open information flow• Gather information in one place• Make decisions and reasons transparent to others

Page 30: Non-technical skills for developers

X. Expanding client relationships

Page 31: Non-technical skills for developers

Expanding client relationships

Trust is the main factor

1. Identify client needs2. Craft a solution in your head3. Can you or your team accomplish this?

Should the client seek help elsewhere?4. Match client's needs and your capabilities5. Negotiate a consensus

Page 32: Non-technical skills for developers

XI. Learning

Page 33: Non-technical skills for developers

Learning

• You're eager to learn. You'll dive right in to new technologies, new approaches, and new concepts and apply them to your work.

• Read a lot• Find a mentor• Build habits• It’s okay to make mistakes– It’s not important whether or not you make mistakes.

It's how do you react to them.• Read: http://bit.ly/1U9ROdg (slide 36)

Page 34: Non-technical skills for developers

Trends

Page 35: Non-technical skills for developers

1. Vertical structure -> Horizontal structure

• Reason: reducing accidental complication and communication overhead

• #1 Consequence: You are responsible not for a single task but for a whole project or technical part of it (e.g. front-end)

• #2 Consequence: You could influence a product. Valve, Uber.

Page 36: Non-technical skills for developers

2. Office job -> remote job

• Reason: wide range of talent to hire from and more efficient work

• Consequence: Less control over you. A requirement to manage yourself. More: http://bit.ly/1R9ZTvJ

Page 37: Non-technical skills for developers

What do you want to talk about next week?

Page 38: Non-technical skills for developers

Questions?

Page 39: Non-technical skills for developers

Thank you