Skip to content

Instantly share code, notes, and snippets.

@scastillo
Created September 21, 2018 23:14
Show Gist options
  • Select an option

  • Save scastillo/af7a6bdb146659d1e49da6e37ec2175f to your computer and use it in GitHub Desktop.

Select an option

Save scastillo/af7a6bdb146659d1e49da6e37ec2175f to your computer and use it in GitHub Desktop.

How to Become a Better Software Developer: A Handbook on Personal Performance

Mindset

10k hours => 1 year-ish

Passion

Performance distribution

.

8 characteristics

.

Measure

No single way to measure performance (points?)

subjective and relative

The best way to assess a developer’s performance is to measure their growth over time

“If your continuously evaluating your progress and making changes, then your performance will improve.”

Runner example

The process:

  1. Define a way to measure your performance
  2. Measure your performance
  3. Set a goal
  4. Continue to measure and compare performance over time
  5. Identify and test new strategies for improving performance
  6. Once you’ve reached your goal, repeat

Personal time tracking

A lot of opinions

Time for mesaure performance is not always right

Pick one KPI (points?, time?, user stories acepted?, pomodoros?) and measure it => is personal

Mastering fundamentals

I can build a pendulum in my garage. But, that doesn’t mean that I understand the physics.

  1. Engineering fundamentals
    • Algorithms
    • Abstraction
    • Isolation
    • Databases
  2. Language/framework fundamentals

complexity growth

e.g. Machine Learning

**

Exercises for Improvement

fundamentals vs practice-learn

Fundamentals are–well–fundamental.

But, knowing the underlying components of programming != being a good engineer.

“I think we are in an industry of continuous learning and if you are not learning then you’re not going to be performant,”

“I think if they can genuinely say they learnt something (not superficially) then they should be happy about it.”

“Learn, learn, learn. Read books, try new things, fail and try again. Stay abreast of the latest technology, watch conference videos (they are free). I can’t stress enough how things change so fast in our industry if you are not learning you’ll be left behind.”

said Etienne Tremblay.

Focused thinking

we concentrate on a particular problem or question and actively try to come to a solution

Diffuse thinking

we let the idea incubate in sort of a latent or passive thinking mode–we’re not actively concentrating on it, but it remains somewhere in the back of our minds and we continue to look for solutions or patterns

Side projects

  1. Teaches you to add value (not just write code)
  2. Pushes you to take action
  3. Improves focus
  4. Rewards perseverance
  5. Makes you more empathetic

Read other people’s code

Solidifying Knowledge

Use interleaving to learn new concepts

  • Dont study a topic for too long
  • Mix topics
  • Start again from other perspective or order

Teach what you’ve learned to others

.

Teamwork

“We don’t want heroes on the team”, wrote Hundhausen, “unless those heroes are sharing their knowledge, pairing up, being respectful to others, and not command- and-controlling the work.”

Successfull team (MIT 2012)

  1. Equal contribution from every member of the team
  2. The team shares a lot of energy
  3. Team members communicate directly with each other
  4. The team conducts back-channel conversations
  5. The members explore the outside world and report their findings back to the team

Understanding your strengths (and weaknesses)

Understand and communicate your strengths Understand and communicate your weaknesses Understand the strengths and weaknesses of others on your team

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment