This document provides an overview of non-technical skills that are important for developers to have. It discusses 11 key skills: 1) personal productivity, 2) responsibility, 3) juggling multiple tasks, 4) understanding business context, 5) forging compromises between business and technology, 6) managing relations with other people, 7) efficient communication and positive politics, 8) managing technical teams, 9) managing ambiguity, and 10) expanding client relationships. For each skill, it provides brief explanations and recommendations on how to develop that skill. It also discusses two trends in work structures: moving from vertical to horizontal structures, and from office jobs to more remote work.
5. 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!
8. Personal productivity
Read my other presentation on productivity:
http://bit.ly/1U9ROdg
In short:
1. Remember about death
2. Set macro and micro goals for your roles
3. Learn to set and prioritize every-day tasks
4. Consider physiological and psychological
factors
9. Personal productivity
5. Build useful habits
6. Learn mechanics of working on computer
7. Find the right tools
8. Apply extra effort
9. Remember to balance!
11. 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
13. 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
15. • 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
17. 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
19. 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
20. 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
22. Politics – a process by which a group
makes a decision
23. 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
24. 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
26. 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
27. 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)
29. 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
31. Expanding client relationships
Trust is the main factor
1. Identify client needs
2. Craft a solution in your head
3. Can you or your team accomplish this?
Should the client seek help elsewhere?
4. Match client's needs and your capabilities
5. Negotiate a consensus
33. 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)
35. 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.
36. 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