SlideShare a Scribd company logo
1 of 69
Beyond the Grey
Exploring the Properties of a Senior Software Engineer
THANK YOU TO OUR SPONSOR
FOR PROVIDING THE SPACE, FOOD, DRINKS AND GIVEAWAYS!
CONGRATULATIONS NEW
GRADUATES!
JOIN US on #SLACK at CLTDEVS.com
Beyond the Grey
Exploring the Properties of a Senior Software Engineer
About Me
Senior Software Engineer at
22 Years as a Software Developer
Launched a Startup; sold to Ecolab
Technology Consultant at
Digital Media
Married to Awaisha 19 years
Kids: Brailen & Ryder
@awaisha_art
What is a Senior
Software Engineer?
What is a Senior
Software Engineer?
PERCEPTION
REALITY
LIFELONG
STUDENTS
Regardless of our status, we are
always in the process of learning
something new.
class Student {
constructor() {
this.isPresent = true;
this.isEngaged = true;
this.isReceptive = true;
this.isAware = true;
this.isInquisitive = true;
this.isResponsible = true;
this.isGoalOriented = true;
this.isFlexible = true;
this.isPassionate = true;
this.isLearning = true;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
github.com/cltdevs/developer-survival-kit
LEARN MORE
PERFECTING
OUR CRAFT
Our career is one that requires
constant practice in order to
improve and grow.
THE ART OF
REPETITION:
AN ANECDOTE
REPETITION
YIELDS
PROFICIENCY
REPETITION
SURFACES
EFFICIENCIES
REPETITION
ENCOURAGES
TEAMWORK
REPETITION
INFORMS
DIALOG
REPETITION
ENFORCES
PROCESS
class Engineer extends Student {
constructor() {
super();
this.isPracticing = true;
this.isTeamPlayer = true;
this.isHelpful = true;
this.givesFeedback = true;
this.isConstructive = true;
this.isFluent = true;
this.isArticulate = true;
this.isQualityFocused = true;
this.producesResults = true;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
github.com/cltdevs/developer-survival-kit
LEARN MORE
What is a Senior
Software Engineer?
PERCEPTION
CASE STUDY
REALITY
What a Senior
Software Engineer is
NOT
CS DEGREE !== SENIOR
BEST CODER !== SENIOR
FULL STACK !== SENIOR
SENIOR !== LEAD
3 YEARS EXPERIENCE !== SENIOR
3 YEARS EXPERIENCE !== SENIOR
5 YEARS EXPERIENCE !== SENIOR
3 YEARS EXPERIENCE !== SENIOR
5 YEARS EXPERIENCE !== SENIOR
10 YEARS EXPERIENCE !== SENIOR
NO AMOUNT OF EXPERIENCE
AUTOMATICALLY MAKES YOU A
SENIOR ENGINEER
NO AMOUNT OF EXPERIENCE
AUTOMATICALLY MAKES YOU A
SENIOR ENGINEER
Our career is a thirty to
forty year journey.
Do we achieve mastery
5-10% of the way
through?
So what is a Senior
Software Engineer?
Seniors can
Self-Manage
Prioritization and Workload
Management Skills
Can identify the most critical tasks
Can set accurate expectations with
team and clients
Understands the Value / Effort
Matrix and apply it to their work
Frequently communicate current
status, projected status and any
barriers to success
LOW EFFORT
LOW VALUE
HIGH EFFORT
HIGH VALUE
HIGH EFFORT
LOW VALUE
V A L U E
COST/EFFORT
LOW EFFORT
HIGH VALUE
Seniors can
Estimate
Analyze problems and
determine accurate level of
effort estimates
Can mentally break down tasks into
smaller, time-boxed chunks
Is conservative when estimating to
account for unknown challenges
Considers full lifecycle of a task, not
just time to code
Can estimate the work of others on
the team based on past experience
with that team member
Seniors can
Tune / Harden
Create production-ready
applications that are both stable
and performant
Understand how to tune various
parts of an application for improved
performance
Has experience with caching
methodologies, indexing and
refactoring
Has knowledge of hardening
techniques such as encryption,
obfuscation, surface limiting,
patching, port limiting, etc.
class SeniorEngineer extends Engineer {
constructor() {
super();
this.canSelfManage = true;
this.canEstimate = true;
this.canTuneAndHarden = true;
...
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Seniors are
Multilingual
Real-world experience with
multiple technology stacks
Two or more general purpose
programming languages
Multiple secondary technologies
Multiple ancillary technologies
Familiarity with a variety of
technology stacks aside from their
primary environment
#salt
Seniors are Fad-
Resistant
Have experienced multiple
technology cycles and know
what tech has longevity
Puts the needs of the project and/or
client ahead of their desire to work
with the latest technology
Understands the impermanence of
technology and can recommend
solutions that meet customer needs
Understands the longevity
requirement of their project and the
available current and future
workforce
Latest Framework Client Needs
Developer
class SeniorEngineer extends Engineer {
constructor() {
super();
this.canSelfManage = true;
this.canEstimate = true;
this.canTuneAndHarden = true;
this.isMultiLingual = true;
this.isFadResistant = true;
...
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Seniors know
the full SDLC
Understand the Software
Development Life-Cycle and can
manage all aspects
Understand the full lifecycle of
projects from concept to delivery to
maintenance and support
Knows the roles of the various team
members involved in the lifecycle
Has experience working in multiple
roles within the cycle
Can educate and inform team
members on the roles they play
Seniors know
the cost of Tech
Long term ownership,
maintenance and support costs
are understood
Personnel & Development cost
Total Cost of Ownership over time
Upkeep and Maintenance cost
End User Support cost
Hosting and Infrastructure cost
Seniors can
Identify Debt
Surface, document and
communicate debt-creating
code and tasks
Understand what Technical Debt is
and how it impacts projects
Understand how to reduce and/or
eliminate debt
Understand when it’s appropriate to
create technical debt
Document and track debt-creating
tasks for later mitigation
Seniors can
Identify Risk
Understand the impact of
change, poor requirements,
missed delivery, etc.
Identify and quantify Risks when
they are presented
Understands the Risk to Reward
value of a given task
Doesn’t introduce Risk into projects
that are already behind, late or at
risk
Tracks Risk throughout the project
to be able to accurately gauge the
chance of success or failure
class SeniorEngineer extends Engineer {
constructor() {
super();
this.canSelfManage = true;
this.canEstimate = true;
this.canTuneAndHarden = true;
this.isMultiLingual = true;
this.isFadResistant = true;
...
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class SeniorEngineer extends Engineer {
constructor() {
super();
this.canSelfManage = true;
this.canEstimate = true;
this.canTuneAndHarden = true;
this.isMultiLingual = true;
this.isFadResistant = true;
this.grokSDLC = true;
this.grokOwnershipCost = true;
this.grokTechDebt = true;
this.grokTechRisk = true;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
How do we get from
here to there?
KNOWLEDGE
Mastery of your chosen technology
is a key ingredient in your
professional development.
Learning
Immersion
Focused and continuous
learning can help accelerate
your career.
CONFIDENCE
Being confident in your skills and
being willing and able to voice and
defend your opinions is important.
Community
Involvement
Getting involved in
collaborative projects helps
build our confidence and
teaches us how to
collaborate with others
EXPERIENCE
Your successes and failures make
you a stronger and more valuable
team member.
Open Source
Participation
Learn to work with distributed
teams on a variety of
projects across many tech
stacks
Professional
Experience
On the job experience
exposes us to a variety of
different ways to approach
technical projects
How long does it
take to get there?
KC
TIME
In the early phase, our
knowledge is growing at a
rapid pace.
Our confidence is starting
to build, but we don’t yet
have any experience.
As we continue on our
path our knowledge
continues to grow
K
C
TIMEE
Our confidence continues
to grow and we start to
gain some experience
As we continue on our
path our knowledge
continues to grow
K
C TIMEE
S
Our confidence continues
to grow with each new
experience
After getting a hand full of
projects under our belt
our knowledge deepens
and matures
Our confidence continues
to grow with each new
experience
S
S
S
TIME
As we continue on our path,
our knowledge continues to
grow and we start to develop
subject matter expertise
TIME
S
S
S
S
S
S
Our confidence continues
to grow with each new
experience
At some point our attributes
reach peak maturity and we
grow steadily with each new
experience
We have established
subject-matter expertise
in multiple areas
S
TIME
S
S
S
S
S
S
TIME
S
S
S
S
S
Peaks and valleys in our
projects will influence and
stimulate our growth
TIME
Our knowledge, experience and
confidence combine with the subject
areas in which we work, and the
successes and failures we have been a
part of to define our persona as an
engineer.
TIME
All of this is to say that the definition of
a Senior Software Engineer is far more
complex than a number of years, or a
proficiency level with code.
Contact
Josh Miller
josh.miller@skookum.com
CLTDevs.com
CLTDevs Meetup
@jo5h

More Related Content

What's hot

Leading Software Development Teams
Leading Software Development TeamsLeading Software Development Teams
Leading Software Development TeamsArno Huetter
 
Governance Model PowerPoint Presentation Slides
Governance Model PowerPoint Presentation SlidesGovernance Model PowerPoint Presentation Slides
Governance Model PowerPoint Presentation SlidesSlideTeam
 
I sense prowareness 7 star development methodology
I sense prowareness   7 star development methodologyI sense prowareness   7 star development methodology
I sense prowareness 7 star development methodologyISense Bv
 
Getting the most out of your project resources
Getting the most out of your project resourcesGetting the most out of your project resources
Getting the most out of your project resourcesRamanjit Dhillon
 

What's hot (8)

Developing our Project Management Careers webinar
Developing our Project Management Careers webinarDeveloping our Project Management Careers webinar
Developing our Project Management Careers webinar
 
Openhelp11
Openhelp11Openhelp11
Openhelp11
 
Leading Software Development Teams
Leading Software Development TeamsLeading Software Development Teams
Leading Software Development Teams
 
Ipmp corporate presentation
Ipmp corporate presentationIpmp corporate presentation
Ipmp corporate presentation
 
whitepaper-apprenticeship-final
whitepaper-apprenticeship-finalwhitepaper-apprenticeship-final
whitepaper-apprenticeship-final
 
Governance Model PowerPoint Presentation Slides
Governance Model PowerPoint Presentation SlidesGovernance Model PowerPoint Presentation Slides
Governance Model PowerPoint Presentation Slides
 
I sense prowareness 7 star development methodology
I sense prowareness   7 star development methodologyI sense prowareness   7 star development methodology
I sense prowareness 7 star development methodology
 
Getting the most out of your project resources
Getting the most out of your project resourcesGetting the most out of your project resources
Getting the most out of your project resources
 

Similar to Beyond the Grey: Properties of a senior software engineer

Inductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaInductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaRuchi
 
Productive Developer - Synergetics India
Productive Developer - Synergetics IndiaProductive Developer - Synergetics India
Productive Developer - Synergetics IndiaSynergetics India
 
Induction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaInduction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaSynergetics India
 
Senior level job openings in symantec
Senior level job openings in symantecSenior level job openings in symantec
Senior level job openings in symantecShyam Vaidyanathan
 
A/E Project Management Optimization-Part Three
A/E Project Management Optimization-Part ThreeA/E Project Management Optimization-Part Three
A/E Project Management Optimization-Part ThreeZweigWhite
 
Speak Like a Test Manager
Speak Like a Test ManagerSpeak Like a Test Manager
Speak Like a Test ManagerTechWell
 
Are You Cut Out For Consulting
Are You Cut Out For ConsultingAre You Cut Out For Consulting
Are You Cut Out For Consultingjacobs5628
 
CURRICULUM VITAE. Saravana Jothi.Updated
CURRICULUM VITAE. Saravana Jothi.UpdatedCURRICULUM VITAE. Saravana Jothi.Updated
CURRICULUM VITAE. Saravana Jothi.UpdatedSaravana Jothi
 
How to build killer teams | Chetana Mehta
How to build killer teams | Chetana MehtaHow to build killer teams | Chetana Mehta
How to build killer teams | Chetana MehtaPune OpenCoffee Club
 
Hydrogen USA: Technology proposition
Hydrogen USA: Technology propositionHydrogen USA: Technology proposition
Hydrogen USA: Technology propositionHydrogen Group
 
Fatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile PracticesFatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile PracticesFatma Ürek Uludağ
 
reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...
reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...
reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...Ken Fuller
 
Space Operations Software Engineer.docx
Space Operations Software Engineer.docxSpace Operations Software Engineer.docx
Space Operations Software Engineer.docxEvaBernat6
 
Are you cut out for consulting
Are you cut out for consultingAre you cut out for consulting
Are you cut out for consultingjacobs5628
 
Kevin's Software Success Equation
Kevin's Software Success EquationKevin's Software Success Equation
Kevin's Software Success Equationkevinjmireles
 

Similar to Beyond the Grey: Properties of a senior software engineer (20)

Inductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaInductionproposal - Synergetics India
Inductionproposal - Synergetics India
 
Induction Plan - Synergetics India
Induction Plan - Synergetics IndiaInduction Plan - Synergetics India
Induction Plan - Synergetics India
 
Productive Developer - Synergetics India
Productive Developer - Synergetics IndiaProductive Developer - Synergetics India
Productive Developer - Synergetics India
 
Induction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaInduction Proposal - Synergetics India
Induction Proposal - Synergetics India
 
Senior level job openings in symantec
Senior level job openings in symantecSenior level job openings in symantec
Senior level job openings in symantec
 
A/E Project Management Optimization-Part Three
A/E Project Management Optimization-Part ThreeA/E Project Management Optimization-Part Three
A/E Project Management Optimization-Part Three
 
Draft - Graduate Attribute Workbook
Draft - Graduate Attribute WorkbookDraft - Graduate Attribute Workbook
Draft - Graduate Attribute Workbook
 
Integration Test Engineer
Integration Test EngineerIntegration Test Engineer
Integration Test Engineer
 
Integration Test Engineer
Integration Test EngineerIntegration Test Engineer
Integration Test Engineer
 
Sreenivasan.L
Sreenivasan.LSreenivasan.L
Sreenivasan.L
 
Speak Like a Test Manager
Speak Like a Test ManagerSpeak Like a Test Manager
Speak Like a Test Manager
 
Are You Cut Out For Consulting
Are You Cut Out For ConsultingAre You Cut Out For Consulting
Are You Cut Out For Consulting
 
CURRICULUM VITAE. Saravana Jothi.Updated
CURRICULUM VITAE. Saravana Jothi.UpdatedCURRICULUM VITAE. Saravana Jothi.Updated
CURRICULUM VITAE. Saravana Jothi.Updated
 
How to build killer teams | Chetana Mehta
How to build killer teams | Chetana MehtaHow to build killer teams | Chetana Mehta
How to build killer teams | Chetana Mehta
 
Hydrogen USA: Technology proposition
Hydrogen USA: Technology propositionHydrogen USA: Technology proposition
Hydrogen USA: Technology proposition
 
Fatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile PracticesFatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile Practices
 
reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...
reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...
reStartEvents DC metro & Beyond Cleared Virtual Career Fair Employer Director...
 
Space Operations Software Engineer.docx
Space Operations Software Engineer.docxSpace Operations Software Engineer.docx
Space Operations Software Engineer.docx
 
Are you cut out for consulting
Are you cut out for consultingAre you cut out for consulting
Are you cut out for consulting
 
Kevin's Software Success Equation
Kevin's Software Success EquationKevin's Software Success Equation
Kevin's Software Success Equation
 

Recently uploaded

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Beyond the Grey: Properties of a senior software engineer

  • 1. Beyond the Grey Exploring the Properties of a Senior Software Engineer
  • 2. THANK YOU TO OUR SPONSOR FOR PROVIDING THE SPACE, FOOD, DRINKS AND GIVEAWAYS!
  • 4. JOIN US on #SLACK at CLTDEVS.com
  • 5. Beyond the Grey Exploring the Properties of a Senior Software Engineer
  • 6. About Me Senior Software Engineer at 22 Years as a Software Developer Launched a Startup; sold to Ecolab Technology Consultant at Digital Media Married to Awaisha 19 years Kids: Brailen & Ryder
  • 8.
  • 9. What is a Senior Software Engineer?
  • 10. What is a Senior Software Engineer?
  • 13. LIFELONG STUDENTS Regardless of our status, we are always in the process of learning something new.
  • 14. class Student { constructor() { this.isPresent = true; this.isEngaged = true; this.isReceptive = true; this.isAware = true; this.isInquisitive = true; this.isResponsible = true; this.isGoalOriented = true; this.isFlexible = true; this.isPassionate = true; this.isLearning = true; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 github.com/cltdevs/developer-survival-kit LEARN MORE
  • 15. PERFECTING OUR CRAFT Our career is one that requires constant practice in order to improve and grow.
  • 22. class Engineer extends Student { constructor() { super(); this.isPracticing = true; this.isTeamPlayer = true; this.isHelpful = true; this.givesFeedback = true; this.isConstructive = true; this.isFluent = true; this.isArticulate = true; this.isQualityFocused = true; this.producesResults = true; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 github.com/cltdevs/developer-survival-kit LEARN MORE
  • 23. What is a Senior Software Engineer?
  • 27. What a Senior Software Engineer is NOT
  • 28. CS DEGREE !== SENIOR BEST CODER !== SENIOR FULL STACK !== SENIOR SENIOR !== LEAD
  • 29. 3 YEARS EXPERIENCE !== SENIOR
  • 30. 3 YEARS EXPERIENCE !== SENIOR 5 YEARS EXPERIENCE !== SENIOR
  • 31. 3 YEARS EXPERIENCE !== SENIOR 5 YEARS EXPERIENCE !== SENIOR 10 YEARS EXPERIENCE !== SENIOR
  • 32. NO AMOUNT OF EXPERIENCE AUTOMATICALLY MAKES YOU A SENIOR ENGINEER
  • 33. NO AMOUNT OF EXPERIENCE AUTOMATICALLY MAKES YOU A SENIOR ENGINEER Our career is a thirty to forty year journey. Do we achieve mastery 5-10% of the way through?
  • 34. So what is a Senior Software Engineer?
  • 35. Seniors can Self-Manage Prioritization and Workload Management Skills Can identify the most critical tasks Can set accurate expectations with team and clients Understands the Value / Effort Matrix and apply it to their work Frequently communicate current status, projected status and any barriers to success
  • 36. LOW EFFORT LOW VALUE HIGH EFFORT HIGH VALUE HIGH EFFORT LOW VALUE V A L U E COST/EFFORT LOW EFFORT HIGH VALUE
  • 37. Seniors can Estimate Analyze problems and determine accurate level of effort estimates Can mentally break down tasks into smaller, time-boxed chunks Is conservative when estimating to account for unknown challenges Considers full lifecycle of a task, not just time to code Can estimate the work of others on the team based on past experience with that team member
  • 38. Seniors can Tune / Harden Create production-ready applications that are both stable and performant Understand how to tune various parts of an application for improved performance Has experience with caching methodologies, indexing and refactoring Has knowledge of hardening techniques such as encryption, obfuscation, surface limiting, patching, port limiting, etc.
  • 39. class SeniorEngineer extends Engineer { constructor() { super(); this.canSelfManage = true; this.canEstimate = true; this.canTuneAndHarden = true; ... } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 40. Seniors are Multilingual Real-world experience with multiple technology stacks Two or more general purpose programming languages Multiple secondary technologies Multiple ancillary technologies Familiarity with a variety of technology stacks aside from their primary environment
  • 41. #salt
  • 42. Seniors are Fad- Resistant Have experienced multiple technology cycles and know what tech has longevity Puts the needs of the project and/or client ahead of their desire to work with the latest technology Understands the impermanence of technology and can recommend solutions that meet customer needs Understands the longevity requirement of their project and the available current and future workforce
  • 43. Latest Framework Client Needs Developer
  • 44. class SeniorEngineer extends Engineer { constructor() { super(); this.canSelfManage = true; this.canEstimate = true; this.canTuneAndHarden = true; this.isMultiLingual = true; this.isFadResistant = true; ... } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 45. Seniors know the full SDLC Understand the Software Development Life-Cycle and can manage all aspects Understand the full lifecycle of projects from concept to delivery to maintenance and support Knows the roles of the various team members involved in the lifecycle Has experience working in multiple roles within the cycle Can educate and inform team members on the roles they play
  • 46. Seniors know the cost of Tech Long term ownership, maintenance and support costs are understood Personnel & Development cost Total Cost of Ownership over time Upkeep and Maintenance cost End User Support cost Hosting and Infrastructure cost
  • 47. Seniors can Identify Debt Surface, document and communicate debt-creating code and tasks Understand what Technical Debt is and how it impacts projects Understand how to reduce and/or eliminate debt Understand when it’s appropriate to create technical debt Document and track debt-creating tasks for later mitigation
  • 48. Seniors can Identify Risk Understand the impact of change, poor requirements, missed delivery, etc. Identify and quantify Risks when they are presented Understands the Risk to Reward value of a given task Doesn’t introduce Risk into projects that are already behind, late or at risk Tracks Risk throughout the project to be able to accurately gauge the chance of success or failure
  • 49. class SeniorEngineer extends Engineer { constructor() { super(); this.canSelfManage = true; this.canEstimate = true; this.canTuneAndHarden = true; this.isMultiLingual = true; this.isFadResistant = true; ... } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 50. class SeniorEngineer extends Engineer { constructor() { super(); this.canSelfManage = true; this.canEstimate = true; this.canTuneAndHarden = true; this.isMultiLingual = true; this.isFadResistant = true; this.grokSDLC = true; this.grokOwnershipCost = true; this.grokTechDebt = true; this.grokTechRisk = true; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 51. How do we get from here to there?
  • 52. KNOWLEDGE Mastery of your chosen technology is a key ingredient in your professional development.
  • 53. Learning Immersion Focused and continuous learning can help accelerate your career.
  • 54. CONFIDENCE Being confident in your skills and being willing and able to voice and defend your opinions is important.
  • 55. Community Involvement Getting involved in collaborative projects helps build our confidence and teaches us how to collaborate with others
  • 56. EXPERIENCE Your successes and failures make you a stronger and more valuable team member.
  • 57. Open Source Participation Learn to work with distributed teams on a variety of projects across many tech stacks
  • 58. Professional Experience On the job experience exposes us to a variety of different ways to approach technical projects
  • 59. How long does it take to get there?
  • 60. KC TIME In the early phase, our knowledge is growing at a rapid pace. Our confidence is starting to build, but we don’t yet have any experience.
  • 61. As we continue on our path our knowledge continues to grow K C TIMEE Our confidence continues to grow and we start to gain some experience
  • 62. As we continue on our path our knowledge continues to grow K C TIMEE S Our confidence continues to grow with each new experience
  • 63. After getting a hand full of projects under our belt our knowledge deepens and matures Our confidence continues to grow with each new experience S S S TIME
  • 64. As we continue on our path, our knowledge continues to grow and we start to develop subject matter expertise TIME S S S S S S Our confidence continues to grow with each new experience
  • 65. At some point our attributes reach peak maturity and we grow steadily with each new experience We have established subject-matter expertise in multiple areas S TIME S S S S S
  • 66. S TIME S S S S S Peaks and valleys in our projects will influence and stimulate our growth
  • 67. TIME Our knowledge, experience and confidence combine with the subject areas in which we work, and the successes and failures we have been a part of to define our persona as an engineer.
  • 68. TIME All of this is to say that the definition of a Senior Software Engineer is far more complex than a number of years, or a proficiency level with code.

Editor's Notes

  1. Abstract In this talk, we’ll explore the properties and traits of a Senior Developer, and attempt to demystify what that phrase means. We will focus on how our knowledge, confidence, experiences and relationships combine to create the complete picture of us as developers, and will talk about ways to strengthen each of those attributes. We’ll discuss learning immersion, community involvement, and open source participation and how they can help us grow our skills, and shorten the path from Junior to Senior and beyond. Finally, we’ll discuss the intermediate steps along that path, and learn how to market ourselves to prospective clients and employers during our journey.
  2. Good evening everyone! Before we get started I’d like to say a quick thank you to our sponsor, Signature Consultants, for providing this space, the food and drinks and giveaways for tonight’s Meetup.
  3. Congratulations to all of the recent graduates, the final cohort to graduate from The Iron Yard Charlotte. Also a quick shout out to The Iron Yard for all of their contributions to the Charlotte Tech Community over the last several years.
  4. If you’re not already doing so, join us on #Slack at CLTDevs.com. There are discussions for every interest including channels just for Junior Developers, JavaScript Developers, Job Postings, Tips and Tricks and much more.
  5. Explore the properties of a Senior Software Engineer Demystify what the phrase means Focus on how Knowledge, Confidence and Experience combine to create a complete picture of us How to strengthen those attributes Learning Immersion Community Involvement Open Source Participation Intermediate steps along the path Learn how to market ourselves to prospective clients and employers
  6. About Me: Senior Software Engineer @ Skookum 22 Years as Software Developer Launched a Startup; sold to Ecolab in 2011 Technology consultant at Imperatives NASCAR.com (Digital Media) for 3 years Married to Awaisha (painter) for 19 years Two kids: Brailen (16) and Ryder (7)
  7. My wife is a painter, you should check her out on Instagram @awaisha_art. #shamelesspromotion
  8. Here are some of the companies I’ve had the pleasure to do business with over the years in a number of different capacities.
  9. We’re here to figure out what a “Senior Software Engineer” is. There are lots of definitions, there are lots of opinions and there are lots of things already written on this topic. We’re here to add to this discussion, explore the traits of a Senior Engineer and figure out how to get there from where we are right now.
  10. Before we can define what a Senior Software Engineer is, we first have to know what a Software Engineer is.
  11. Perception: We’re some super connected techno-nerd who lives and breathes all aspects of technology. This is partly true, but it’s not nearly as cool as this cyberpunk image ...
  12. In reality we’re just normal people who happen to enjoy the art of creating things through code. We don’t necessarily look any different than anyone else and we don’t all look like one another. We don’t all have the same background, nor do we have the same interests outside of work. There used to exist a stereotype of the developer as a Star Wars (or Trek) loving nerd who is super into fantasy books, sci-fi, video games, dungeons and dragons, who struggled to get a date and was the outcast in school. While some of those things might be true for some of us, they’re by no means true for all of us. However, there is one thing that we all have in common, at least those of us who really love this profession ...
  13. We are almost all without exception, people who love to learn. This is critical, because no matter how far we go in our respective careers, we will always be learning. Having a passion for learning, for problem solving and a high level of comfort with change is critical to our success as software engineers. This is a profession where you learn your craft and then spend years honing your skills using a constantly changing set of tools. The things that make a successful Software Engineer aren’t necessarily the things you would immediately expect. It’s not knowing a certain language, or being able to write a for loop with conditional logic without reference. It’s not being able to write a beautiful and performant SQL query or knowing how to use ActiveRecord like a boss. While those things are the output of Software Engineers, the things that make us good Engineers are more behavioral and less rote. We’re mostly all coders here, so let’s talk about this in a language we all can understand. That’s right, we’re going to build an Engineer in code. To do that, we have to start with a base class from which we can inherit properties. Now that we’ve established that we all have some commonality (that doesn’t include Star Wars and Dr. Who), let’s use our known common traits to get started:
  14. Class Student The Student is the very essence of a Software Engineer; the traits of a good Student are the same traits of a good Engineer. Let’s quickly explore some of these basic properties. We won’t spend a lot of time here, but note that these traits are expounded on a bit in the CLTDevs GitHub repository: https://github.com/cltdevs/developer-survival-kit Present Engaged Receptive Aware of what’s going on around us Inquisitive Responsible Goal-Oriented Flexible Passionate Learning This is a phase where we are accepting input. We are receiving information and processing it, but not providing much feedback or output. In this phase, we are actively accumulating knowledge and starting to build some confidence.
  15. Once we have graduated from the “Student” phase of our career, we enter into the phase where we begin to hone and perfect our skills. We’ve changed from our role of simply accepting input, to starting to create output. We’re now generating real things, no matter how trivial or insignificant they might seem. What’s important to us now isn’t necessarily creating things, but rather learning how to create things in our given environment. We now have to start thinking outside ourselves and consider the bigger world around us. We have a team to merge with. We have a shared codebase. We have standards and procedures to follow and we have to learn how to apply the things we have learned to the things we’re being asked to produce. We also now have to start commenting on and providing feedback to our teammates who are in their own phase of learning and honing their skills.
  16. I’m reminded of a quote by a famous man: “I have a real interesting story, well it's not so much interesting as it is long.” - Abe Simpson Prior to my career as an engineer, I embarked on a career in the lucrative field of fine arts. In particular, I studied sculpture in bronze, stone, wood and clay. My instructor was an eccentric man who wore the same outfit every day: black t-shirt, blue jeans, black tennis shoes and, when it was bitter cold, a blue flannel shirt. (Later suspenders were added by two female classmates after a couple of unfortunate incidents while bending over to assist with lifting.) I digress, getting back to the story, it’s Ceramics 201 and we’re learning to use the pottery wheel. Everyone was excited for this day, and particularly excited to start creating things and taking them out into the world to share with our families. We all had visions of taking home that first rough bowl or cup to show the parents that they really hadn’t wasted thousands of dollars on an Arts Education: WE ARE MAKING REAL THINGS PEOPLE WILL BUY! However, those dreams dashed and we all looked at one another in collective horror when our instructor announced he wouldn’t let us walk out of the studio with one single creation, nor were we even allowed to consider finishing, firing or glazing a single piece until we had produced 100 instances of that piece. Mom and Dad will have to wait a little longer to recoup that investment ...
  17. Repetition Yields Proficiency I’m not sure how many of you have ever used a potter’s wheel, or know what a “kick wheel” is, but suffice it to say, it’s not a trivial process. Using a wheel requires a surprising amount of dexterity and hand and arm strength; the kick wheel added a one-sided lower body workout that makes me wince to recall even today. To throw 100 cups or bowls takes weeks and weeks of work, not only because you have to wrestle the clay into submission on the wheel as wet slip flies everywhere, but also because first you have to go through the monotony of kneading and preparing a 5-10 pound batch of clay each time you start working. It wasn’t fun. In fact, it sucked pretty hard. However, what I gained from that experience wasn’t just the ability to create a consistent, well formed and properly structured product, but more importantly the ability to transcend the monotony of the preparation and an understanding of the importance of that process to the final product. In the end I learned that throwing the piece, forming it and giving it shape were the most trivial aspects of success. I also learned that getting the preparation right made the act of creation far more enjoyable.
  18. Repetition Surfaces Efficiencies In repeating these time and labor intensive tasks over and over, I began to find ways to work more efficiently and cut down on the time it took to prepare my medium. I found that having adequate water nearby when mixing the clay was helpful. I found that keeping a couple of extra cheesecloths around for separating the prepared balls was useful and I found that pre-measuring the water led to more consistent and predictable results. I was able to cut down the time it took to prepare the clay and yield a better end-product through pre-planning and measurement.
  19. Repetition Encourages Teamwork Then, several of us discovered that there were parts of the process that we were better at than others. I watched as a woman in our team expertly kneaded a ball in about half the time it took me. As it turns out, she was also an avid baker and kneading was second nature to her. However, she was older and less physically capable of lifting and mixing, so we decided to work together. I mixed the clay, got the measurements right and prepared the raw material, she broke out the segments, kneaded them to make sure there were no air bubbles and to maximize platelet alignment. I covered and stashed the prepared balls in a cool, damp area and another classmate picked up scraps and mixed slip to use later when throwing. Our repetitive tasks encouraged us to work together to make the work go faster and we learned to take advantage of working at scale. In the process, we all learned how to accomplish each task more efficiently by observing our peers who were more capable in one way or another.
  20. The Critique One thing I haven’t mentioned here yet, and many of you who I talk with on a regular basis have probably heard me say this, so I apologize for the repetition (sic) … but part of the “Art of Repetition” included a group critique after every session. By repeating this process every day, we began to learn how to communicate with one another in the language of our craft. We developed the ability to have a deeper and more meaningful dialog as we learned more and more about how to prepare and to create. Initially our critique would start off with lots of benign platitudes: “It’s good”, “Nice job”, “Nice form”, etc. but eventually we began to recognize flaws that were invisible to us before. The act of repeating the process of analyzing and critiquing, coupled with a deeper understanding of our medium led to meaningful peer review and feedback: “The shape is nice, but there are some fissures near the apex of your curve. It’s probably an incomplete mix or a dry patch in the clay” or “Your glazing is nice, but the two starbursts in the finish mean there was an air bubble - it could have caused the piece to crack in the kiln”. Learning to critique, to speak the language of our craft and to accept input and give feedback in constructive and helpful ways is integral to our success as software engineers. It’s something that you rarely learn as a student in the technology field, but instead learn during the first formative years of your career. This is one of those less tangible benefits of an Arts or Liberal Arts education, and it’s why I don’t differentiate between a CS major and a Fine Arts major when it comes time to hire for a position. Both students have something to learn. One of those things is a rote task (syntax) and the other is behavioral (giving and accepting feedback). It’s arguably easier to teach the first than it is the second.
  21. Repetition Enforces Process That’s a lot of slides about Fine Arts education and about working in clay, but the medium is irrelevant to the message. All of these same principles hold true with learning to be a musician, a poet, a physician or software developer. Actually coding a solution is rarely the most critical or the most difficult part of a software development project. This is something Senior Engineers know, and it’s why you rarely see them immediately open a code editor when a problem arises. Jumping in with both hands ready to hack out code seems like the most direct path forward, but in reality every minute you spend preparing yourself to code is more important to your success than the time you spend coding. Speaking of coding, let’s get back now to our Engineer in progress ...
  22. So now we have some additional properties to help define our new role. We’re going to build on top of our Student skills and add some new behaviors, primarily the things we talked about in my anecdote: Is practicing the art of software engineering on a daily basis Is a Team Player Helpful to our teammates, our leads and our clients Give Feedback as needed on projects, processes, etc. Constructive in how we provide feedback to others Achieving fluency in our chosen technologies Able to articulate our capabilities, our projects and our work and can speak in the vernacular of our craft Is Quality Focused Produces Results
  23. We’re here to figure out what a “Senior Software Engineer” is. There are lots of definitions, there are lots of opinions and there are lots of things already written on this topic. We’re here to add to this discussion, explore the traits of a Senior Engineer and figure out how to get there from where we are right now.
  24. This is my favorite meme. I use it to talk about myself all the time. I recently got salty in the Slack channel about React, Angular and all things “framework-y”; I’m known to do that on a variety of topics including TypeScript, NoSQL (both of which I actually adore) and virtually every other piece of tech I come in contact with.
  25. This is basically the same meme, but from Thomas Fuchs (did I pronounce that right?) who created things such as scrip.taculo.us, Zepto, Freckle and some other interesting, JavaScript-y things. I’m a big fan of Thomas and his Twitter-self.
  26. Senior software engineers are just regular engineers who have some additional attributes and properties.
  27. So, we’ve learned what a “Software Engineer” is, it’s someone who is in the act of perfecting the craft of building software. It’s someone who is producing results, and working in symbiosis with their team. It’s someone who is actively accepting input, producing output and providing feedback to their peers and leads. A Software Engineer is a creator who is engaged in learning. So what is a Senior Software Engineer NOT?
  28. First, let’s figure out what a “Senior Developer” is not. A CS Degree doesn’t make you Senior Being the best coder in your organization … Being a “full stack” developer doesn’t make you Senior And lastly, being Senior does not make you a Lead … that’s an entirely different talk.
  29. Other things that don’t make you a “Senior”: 3 Years of Experience
  30. Other things that don’t make you a “Senior”: 5 Years of Experience
  31. Other things that don’t make you a “Senior”: 10 Years of Experience
  32. That’s right, there is no amount of experience that automatically qualifies you as a Senior Engineer. Becoming a “Senior” is more than years, it’s more than age and it’s more than just time spent coding. What separates a Junior or Mid-Level from a Senior isn’t just their coding ability, but rather a specific set of traits and properties that a Senior exhibits.
  33. I was talking with one of my colleagues this morning about what it means to be a Senior, and he provided some great feedback In our personal lives, many of our goals are roughly 2-5 years away: Grade School, Middle School, Teenager, High School, Driving, Voting Age, Drinking Age, College, Marriage, Kids, etc. When we start our careers, our horizons become much further off. Our careers last 20, 30, 40+ years Why would our expectation of reaching the pinnacle of our profession, or achieving seniority be in that same 2-5 year time horizon? Perspective is important.
  34. So, seriously now, we’re 30 slides in and we still haven’t defined this thing yet. Let’s get moving and talk about what Senior Engineers DO.
  35. Can identify the most critical tasks. Can set accurate expectations with team and clients Understands the Value / Effort Matrix and apply it to their work Frequently communicates current status, projected status and any barriers to success
  36. (Cost) Effort / Value Matrix
  37. Can mentally break down tasks into smaller, time-boxed chunks Is conservative when estimating to account for unknown challenges Considers full lifecycle of a task, not just time to code Can estimate the work of others on the team based on past experience with that team member
  38. Understand how to tune various parts of an application for improved performance Has experience with caching methodologies, indexing and refactoring Has knowledge of hardening techniques such as encryption, obfuscation, surface limiting, patching, port limiting, etc.
  39. Let’s go ahead and add these first things to our new SeniorEngineer class, which is an extension of Engineer (of course); remember, we’re also still inheriting the properties of our Student class as well. We’re now starting to develop a pretty rich hierarchy of skills, but there’s still more to add ...
  40. Two or more general purpose programming languages (JS, Java, Python, Ruby, Go, PHP, etc.) Multiple secondary technologies (SQL, NoSQL, MapReduce, Redis, XML, CSS, SASS/SCSS, LESS, etc.) Multiple ancillary technology concepts (REST, SOAP, VoiceXML, Sequelize, ActiveRecord, etc.) Familiar with a variety of tech stacks and environments aside from their current (LAMP, MEAN, LNPR; Heroku, AWS, Azure, self-hosting, etc.)
  41. WARNING! HIGH SALT CONTENT AHEAD!
  42. Technologies come and go, as do practices, methodologies and the latest ideas for how to approach our work. Adopting the latest-and-greatest is always the most fun and exciting part of a new project, but often it can lead to problems down the road for us and/or our clients. Case in point, a team who made the decision to work in CoffeeScript in 2011 or 2012 is now facing the very real possibility of not being able to recruit new developers. Likewise, groups that are bound to frameworks that have become passe or that are no longer popular will have similar problems. Choosing something new and shiny now might seem fun, but if your client plans to own their technology for 3, 5, 10 or 15+ years, choosing platforms and technologies that are more likely to have longevity is wise. Has experienced multiple technical cycles (Flash, XML, NoSQL, ASP vs. ASP.NET, J2EE, etc.) Puts the needs of the project and/or client ahead of their desire to work with the latest technology Understands the impermanence of technology and can recommend solutions that meet customer needs Understands the longevity requirement of their project and the available current and future workforce Understands the risk involved in choosing the latest-and-greatest new technology for mission critical apps
  43. I wanted to share this meme last week on #Slack when (again) I was being all salty about React or Redux or some such framework-du-jour, but I refrained. It seemed troll-y at the time, so I saved it for tonight when it could be next-level troll-y. You’re welcome. Also I’m sorry, because this meme is pretty sexist and I’m not super comfortable with it. Women receive enough harassment without us making memes out of it. I sincerely hope none of us here are this guy. Let’s just move on, ok?
  44. Let’s go ahead and add these first things to our new SeniorEngineer class, which is an extension of Engineer (of course); remember, we’re also still inheriting the properties of our Student class as well. We’re now starting to develop a pretty rich hierarchy of skills, but there’s still more to add ...
  45. Source Code Management Branching and Merging Strategies CI / CD (Continuous Integration / Continuous Development) Design Process User Story Creation Agile Processes (SCRUM/Stand-Up, Sprint Grooming, Sprint Planning, Sprint Retro, etc.) Code Authoring across one or more Environments Unit and Behavioral Testing using code, libraries or browser automation QA Testing and Bug-Triage Process Backlog Grooming and Review, etc.
  46. Technical Debt is the term for hidden work or future work we create for ourselves throughout the lifecycle of a project. Things like hard-coding values, working with mock API’s, leaving Unit Tests incomplete or building incomplete or stub features for a demo deadline are all debt-creating tasks. Projects often suffer when these tasks begin to create a mountain of undocumented and untracked work for future us. Seniors understand the impact of this debt, work to minimize it and the impact it has, and track and surface debt-creating tasks to project teams to be addressed in future cycles.
  47. Risk identification and quantification are important roles for Senior Developers. When stories are brought into a Sprint late in the process, when requirements are incomplete at the onset of a Sprint, or when Scope changes after commitments are made, Senior Engineers identify and call-out these risks. This information is then tracked throughout the life of the project to be able to accurately predict the likelihood of success or failure. Factoring in Risk, Debt, Scope, Cost, Priority and other factors is an important role of the Senior Engineer. Senior Engineers view the introduction of new technologies, untried/untested processes and/or new and unknown frameworks as “Risk-Generating Decisions” as these decisions have the ability to impact the success of a project in a significant way.
  48. Going back to our code sample, let’s add these new properties to our SeniorEngineer class.
  49. Going back to our code sample, let’s add these new properties to our SeniorEngineer class. Has experienced multiple technical cycles (Flash, XML, NoSQL, ASP vs. ASP.NET, J2EE, etc.) Understands the full SDLC Understands maintenance and cost of ownership Understands technical debt, how to avoid and how to clear Understands technical risk, how to avoid and how to plan for an eliminate At this point in our career, we have gained additional skills through experience and continued learning and we have grown in confidence. We’re now not only accepting input and producing output, we’re now informing how output is created and guiding the process of creation.
  50. So, we’ve learned what a “Software Engineer” is, it’s someone who is in the act of perfecting the craft of building software. It’s someone who is producing results, and working in symbiosis with their team. It’s someone who is actively accepting input, producing output and providing feedback to their peers and leads. A Software Engineer is a creator who is engaged in learning. So what is a Senior Software Engineer?
  51. Gaining a deep understanding and mastery of our craft is one of the main drivers of our career. Aside from knowing how to assemble the bits and pixels in the right order, we have to know alternate ways to achieve the same end result and understand the processes by which we can achieve those results in the most efficient and effective way possible. Of the three main components of our professional self, knowledge is the one we have the most control over. Knowledge is not necessarily limited by age, by years of experience or by the type of education you pursued. We can put in extra effort to compensate for deficiencies in any of those areas. We live in an age where more knowledge than we could ever hope to consume is literally at our fingertips.
  52. Spending time immersed in technical learning can speed up the acquisition of knowledge. Whether you’re in a traditional university setting, a code bootcamp or self-learning using online tools, staying immersed in learning is important to your career. If you’re looking to shorten the road from Junior to Senior, immersive learning is a great vehicle
  53. Being confident in our skills, in our presentation of information and in the way we interact with our peers is as important as our knowledge. Having the confidence in yourself to accept challenges - even those outside of our comfort zone - can be a catalyst to growth. Our confidence will naturally grow over time as we engage in different projects and as we interact with others. Hacking your confidence can be a great way to shorten the path to a Senior position: a big part of becoming a Senior is trusting yourself to succeed in the role.
  54. Involvement in community-based projects, groups and initiatives is a great way to boost your confidence, particularly when you are job-hunting or portfolio building. Interacting with those more senior and those more junior helps to solidify your own understanding of your skills and your place in the community. Supportive and nurturing communities can help our confidence grow exponentially as we begin to realize that many others are in the same place as we are.
  55. Experience is the hardest road to shorten on the path from Junior to Senior. Unless you’re taking on projects left-and-right, working all hours of the day and night, there are only so many hours in the day in which you can work. Again though, keep things in perspective. You have a long career ahead of you. There are a few ways to gain more experience than you would traditionally, but it involves a lot of extra work. There are people who finish school more quickly than others, were you one of those people? For most of us the answer is no, we’re bound by the constraints of time.
  56. One way you can gain additional experience over and above your classroom or workplace projects is by contributing to Open Source projects. Regardless of your skill set, there is a role for just about everyone to play in the Open Source world. Whether you’re documenting features, fixing bugs, writing i18n content or translating to another language, or whether you’re contributing to the main feature set in code, there is always a job to be done. Participating in Open Source projects helps to expose you to a number of new ideas, ways of working and different technology stacks that you otherwise may not get exposed to. If you want to hack time, Open Source participation may be your best path.
  57. Of course the best and most natural way to gain experience is to get hired and throw yourself into your work projects. Regardless of the way the company you work for works, there is something to be learned from each engagement. Even if your takeaway is to absolutely never do what this company does, you’ve learned something valuable and have an experience to look back on for guidance on future engagements. In fact, I would argue that it’s important to have some bad jobs throughout your career (don’t worry, they’ll find you) to be able to better appreciate good opportunities that present themselves.
  58. As long as you need. It’s not fast, but it’s also not a race. Let’s take a look at a timeline of our career and layer in Knowledge, Confidence and Experience along that timeline.
  59. When you start, basically all you have is knowledge and a little confidence
  60. As you learn more, your confidence grows and you begin to have more experience
  61. At some point, knowledge reaches a bit of a plateau as you enter the confidence-building, experience-building phase of your career
  62. Eventually your confidence and your experience grow to match your knowledge. However along the way you’ve started picking up new, secondary or industry-focused skills that make you an SME in some area.
  63. As we continue on our path, our knowledge continues to grow and we start to develop subject matter expertise. Our confidence continues to grow with each new experience.
  64. Eventually your confidence and your experience grow to match your knowledge. However along the way you’ve started picking up new, secondary or industry-focused skills that make you an SME in some area.
  65. Eventually your confidence and your experience grow to match your knowledge. However along the way you’ve started picking up new, secondary or industry-focused skills that make you an SME in some area.
  66. Our knowledge, experience and confidence combine with the subject areas in which we work, and the successes and failures we have been a part of to define our persona as an engineer.
  67. All of this is to say that the definition of a Senior Software Engineer is far more complex than a number of years or a proficiency level with code.