10x devs

Focusing on efficiency, effectiveness, and productivity Enabling others to succeed and being a valuable team member Continuously learning and growing in both technical and soft skills Creating an environment that fosters the growth and development of all team members Being a master craftsman, careful in their work and always looking for ways to improve. Being a problem solver and thinking out of the box Being humble and not just focusing on individual success but also team success. Being a good communicator and understanding the importance of communication in the team and organization. Being productive by connecting their work with everything else. Being a continuous learner and a lifelong learner. Focusing on understanding the problem and the goals of the project, rather than just writing code Being adaptable and able to work with different technologies and tools Being organized and able to manage time and tasks effectively Being open to feedback and continuously seeking ways to improve Being proactive and taking initiative to identify and solve problems Being a good listener and understanding the needs of the team and the stakeholders Being able to think strategically and understand the bigger picture Being able to work well under pressure and handle multiple tasks and priorities Being a mentor and helping others to improve Being able to work in a collaborative and open environment. Embracing new technologies and frameworks and being open to learning new skills Automating repetitive tasks to save time and increase efficiency Building a strong understanding of the business domain to make better decisions Documenting their work and sharing their knowledge with others Continuously testing and monitoring their code to ensure high quality Being proactive in identifying and addressing potential issues before they become problems Being a good leader, who can lead by example and guide the team Being a good team player, who can work well with others and help to build a cohesive team Being a good communicator, who can explain complex technical concepts to non-technical stakeholders Being a good problem solver, who can think critically and creatively to find solutions Being a good time manager, who can balance multiple tasks and meet deadlines.

Notes from Can Everyone Be a 10x Developer? • Steve Poole • Devoxx Poland 2022

  • https://www.youtube.com/watch?v=eDLFyS2AJyg

  • A role model

  • someone who is efficient, effective, enables others to do the right thing, communicates well, and is a master craftsman

  • more humble and less visible than what we may imagine.

  • Get stuff done, at higher quality, fixes bugs, prevent bugs, more pr

  • Understand the tools that they use, use the for the correct purpose, use them well

  • not necessarily people with "superpowers" and that the idea of a 10x developer is somewhat fluffy and not well defined.

    • or someone who can write 10 times more code or fix 10 times more bugs than others

    • this idea harms recruitment, for this is the bar for hiring devs

  • who help the team achieve success and bring the whole team up.

    • enables others to do the right thing (teaching, implementing stuff to make it easier to do the right thing or prevent the wrong thing)

  • have "second thoughts" and are able to look at things from a different perspective.

    • Will step back, will think about it differently, will remember a time this has occurred and had issues

    • thinks about problems differently, not up all night

  • Continually learning

    • learn from others ie books, speakers, blogs, conferences, meetups, other developers, codebase

    • learn from experience

    • learn about the environment, the apis, libraries, tools, processes, systems, the standards/conventions, the code base, the deployments, the monitoring, the people and what they bring/do,

    • Dont code straight away, understand what is going on, then formulate a plan

      • find the facts before starting

    • Use feedback and evidence, rather than guess work

      • write test or debug, instead of guess what happens

      • scientific approach

    • Figure things out and explore

      • create POCs, try it out with a project

      • learnign tests

      • find pros and cons, it's limitations

      • read documentation, find gotchas

      • break it, find out how it goes wrong, what it looks like, how to find info to fix it, how to fix it

    • In new environment, learn enough to get things done

      • How to deliver something

  • understands context/problem, what is the need/constraints and applies knowledge

  • Focuses on the task

    • not multitasking

    • Know why this is the next thing to do

    • Dont add unneccessary features for just in case scenario

    • prioritises what to do, necessary/nice to have

    • preventing time wasting on things that could be spent on productive work, if find this implement something to avoid it next time

      • using correct tool for correct job

      • Common task either automate it or put in wiki (Easy to find)

      • ie use live templates in ide, use shortcuts in ide, create script to start app

      • Common problems either fix, or put in readme/wiki

      • ie issues in production, add logs next time

    • removing barriers from coding

    • Dealing with issues

      • remove issues/stories that are nice to have or never goign to fix to another place

      • Bugs or problems, need to get evidence, ask for evidence (when, where, flow, logs, what expectations not met)

  • Use git

    • Everything goes in there

    • ie Code, notes, deployments, config

    • history, can roll back

    • infrastructure as code

  • Use CICD

    • for a lot of things

    • to get fast feedback

  • prototype or mvp

    • Writing code and tests

    • keep tests, as this defines the behaviours, can refactor

  • Define what they should do and what others should do

    • testing - what should be automated, what should be manual (QA), what should only run in CI

      • devs calling running tests on machine can block -> should be done in CI (aysnc)

      • devs should do easy to automate with short execution time and with little domain knowledge

      • QA should do hard to automate with short excution time but require more domain knowledge

      • 10X will make it easier for those QA and CI to setup, run and get feedback

  • Dont be the only one to solve the issue

    • reduce bus factor

    • help others be able to solve it

    • Have documentation

  • Manage upwards

    • you become trusted and respected

    • trust your estimates and worries

    • you provide evidence for your reasoning

    • tell them what needs to be worked on now and why

    • show them that what they ask for maybe unrealistic within constraints

  • Acts as an engineer

    • wants to create value

      • value that comes from working software that only does what is necessary delivered on time

    • understands and works with the constraints

    • knows late(time/functional) software reduces values, buggy

    • Value delivered only lasts certain period of time

      • needs to be maintained to maintain it's value

    • Understand the code that is written is not the main value, it is what it does, that value it gives

      • code is ephemeral, it changes, not stuck to it, the solutions are long term

    • Value is delivered as a team

  • Thinks in terms of risk

    • How to reduce it

    • All changes are risky, how to get fast feedback

      • tests

      • if goes to production want to reduce the risk as much as possible, but always a risk (should be able prevent ie testing or cure ie toggles)

    • The aim, if after every code saved, run all tests would be brilliant

      • but impossible, so run tests are different stages, which increase feedback loop and cost

  • Use dashboards to get feedback

    • build monitors, alerts etc

    • need metrics defined, what is good what is bad

    • Tells you when something broke, why and find out as quick as possible

    • Can automate now (if possible or worth it)

    • not just for the working code in prod

      • but for his own productivity, the teams, code standards, processes Used

  • Tooling

    • There are lots of tooling

      • will learn the right tools then everything

    • master them

    • 10X will know a subset that will do the job

    • if in new environment, will use their knowledge of their tooling and learn new tooling

      • may suggest tooling that can help for new use case or replacement

  • Have opinion backed by evidence

    • willing to change mind in face of evidence

more

  • 10x engineers do not exist as a person who is 10 times faster at writing software.

  • The limiting factor in software development is not typing speed, but the ability to write code correctly on the first try.

  • A 10x engineer can be defined as someone whose work is so exceptional that it empowers others or replaces the need for multiple other developers to do the same job.

  • Examples of 10x engineers are those who have created solutions that have changed the workflow for everyone else, like those who created web frameworks like React or Angular.

  • A 10x engineer may also have excellent technical skills, domain knowledge, and the ability to effectively communicate and align with stakeholders.

  • 10x engineers can be seen as a valuable asset in a company as they are often highly sought after for their expertise and ability to unblock team members and make decisions quickly.

  • https://www.simplethread.com/the-10x-programmer-myth/

Last updated