My playbook for when starting a new role as an engineer. If you're new to the industry or new to changing jobs, there's some helpful information and a game plan for how to be successful for your first week. You can find more information about this presentation at https://blog.thesoftwarementor.com/presentations
10. @pcameronpresley
What Does Success Look Like?
Are you fitting in with your team?
Do you feel like you can do your best work ?
Are you able to take on work solo?
10
11. @pcameronpresley
Working Solo, Workin Alone?
When an engineer can own a story or
feature independently
Does not mean work alone, but has the
tools, skills, and knowledge to self-serve
and accomplish tasks
11
12. @pcameronpresley
How Do We Get Here?
Problem - What are we trying to solve?
Technology Stack – What tools do we use to solve the
problem?
Processes – How do we work together to solve the
problem?
People – Who am I working with to solve the problem?
12
19. @pcameronpresley
How Do Notes Help?
You’re going to learn a lot of things
Notes help be helping you retain
information and giving a way to find this
information later
19
21. @pcameronpresley
Format and Medium Doesn’t Matter
It doesn’t matter the tool or the format of
the notes that you take, as long as you can
find the information you’re looking for
21
25. @pcameronpresley
Using a Mental List Is Not Great…
You need a system to know what tasks need
to be done, their priority, and to know when
the task is done
25
26. @pcameronpresley
How Do I Do It?
A general process for
capturing tasks, prioritizing
work, and getting things
done
Does not use any one tool
26
37. @pcameronpresley
What Are Possible Domains?
37
Wholesale Mortgage Industry
Helping our partners close
their client’s loans quickly
and efficiently
SQL Server Database
Monitoring
Helping database admins
discover performance
problems before their users do
to prevent loss of reputation
Government Project
Management
Helping planners manage
resources and dependencies
for when plans change
42. @pcameronpresley
Learning the Domain
Domains are complex and can take months
(or years) to fully understand
There is a core amount of knowledge that
can handle the majority of the problem
Focus on common workflows, not edge
cases
42
45. @pcameronpresley
Leveling Up Domain Knowledge
Remember your ABCs
Ask questions and ask them how they knew
that
Blog posts, wikis, books, articles, other
industry resources?
45
47. @pcameronpresley
Learning Domain Terms
If the meeting is smaller (team level or
smaller), ask the question
“Sorry for the interruption, but I’m not
sure if I know what ___ means, can you
explain it”
47
54. @pcameronpresley
Need a way for someone to enter data that
can be seen by others?
A web application with a database is a way
to solve that problem
54
55. @pcameronpresley
At a high level, we know we will need
Something to display (UI/Front-End)
Something to handle requests (API/Back-End)
Database for storing data (DB)
55
57. @pcameronpresley
Front-End
Example Web Application 2
Back-End
https://www.google.com/url?sa=i&url=https%3A%2F%2Fgithub.com%2Fe
xercism%2Fmeta%2Fissues%2F27&psig=AOvVaw00FuZ_E-hzZMt-
xokgmWA9&ust=1648410801832000&source=images&cd=vfe&ved=0CA
sQjRxqFwoTCJjTv_rG5PYCFQAAAAAdAAAAABAD
But What Are Some Example Technologies?
57
Front-End
Example Web Application 1
Back-End
Database
Database
61. @pcameronpresley
Putting Things In Context
While learning about the domain, you
should be learning how your piece
(component) relates to the problem
61
62. @pcameronpresley
Putting Things In Context
Once you understand that, you can start
building knowledge of what other
components your component interacts with
62
63. @pcameronpresley
What’s In a component?
A component is written in a language, and it
will use multiple libraries that in turn work
with a framework to solve a problem.
63
64. @pcameronpresley
64
Angular is a web application framework
Various pieces are written in the TypeScript
language
One or more libraries are used for testing, making
API calls, and more
https://www.google.com/url?sa=i&url=https%3A%2F%2Fgithub.com
%2Fexercism%2Fmeta%2Fissues%2F27&psig=AOvVaw00FuZ_E-
hzZMt-
xokgmWA9&ust=1648410801832000&source=images&cd=vfe&ved
=0CAsQjRxqFwoTCJjTv_rG5PYCFQAAAAAdAAAAABAD
Front-End
Example Web Application 1
Back-End Database
65. @pcameronpresley
Learning The Technology Stack
If you already have experience with the
language and frameworks, focus on
learning how they’re being used here
65
66. @pcameronpresley
Learning The Technology Stack
If you don’t have any experience, then you
need to start learning the language and
framework.
Find recommended books, videos, docs, or
posts to help get you started
66
67. @pcameronpresley
Quickest Way To Learn Something?
Go build something with it! Doesn’t have to
be world-changing, just something to get
started with
67
72. @pcameronpresley
Being Selective On What To Learn
Like problem domain, there are certain
things you should learn first as they’re
most likely to be changing.
Learning how we calculate rates is more
important than learning how
authentication works
72
74. @pcameronpresley
Intro to the Software Development Life Cycle (SDLC)
How do we go from idea to our code being
used by others?
No matter the size of the company, there is
some process
74
76. @pcameronpresley
Learning About Development
Development is focused on writing the code
needed for new functionality or bug fix.
76
How do I get the code on my machine?
How do I build/run the application?
How do I share my changes with others?
How do I deploy my changes to production?
How does work get assigned?
How do I know what to work on?
How do we know if the work is “done”?
Technical Knowledge Process Knowledge
77. @pcameronpresley
Example Process
The code is stored in GitHub so when starting
work, we get the latest changes from there.
When ready, we create a feature branch,
commit changes locally, and when work is
done, we create a pull request to merge the
changes back into main.
77
80. @pcameronpresley
Learning About Testing
Testing is making sure that functionality
that’s been written is working as intended.
80
How do I run the automated tests?
What’s the naming convention of tests?
Do we follow BDD or TDD standards?
Where do I store the tests at?
Who’s responsible for testing?
Who’s responsible for creating the tests?
One of the tests fail, what happens next?
If I have a request for testing, who do I
speak to?
Technical Knowledge Process Knowledge
81. @pcameronpresley
Example Process
Engineers are expected to write unit,
integration, and end-to-end tests. However,
we have a separate team that handles both
performance testing and security testing.
Before we release this new feature, we need to
schedule time with them so they can run their
tests
81
84. @pcameronpresley
Learning About Releases
Releasing is the process of deploying our
code to our users
84
What environments are there?
How do I make changes to our deploy steps?
What tools do we use to deploy our code?
What tools do we use to monitor our code?
Who deploys code to an environment?
Who makes the decision to deploy?
Do I need to work with anyone to make a
change to the environment?
Technical Knowledge Process Knowledge
85. @pcameronpresley
Release Example
We have three environments: test, beta, and
production. Code automatically gets deployed
to test once a pull request has been merged in.
The test environment is typically for our
automated end-to-end tests. If all looks good,
the engineer will push their changes to beta
where we have more realistic workloads.
85
86. @pcameronpresley
Release Example
Assuming things look good, product and
engineering decide when to push to
production.
To help keep deployments consistent, we use a
tool called CircleCI that allows us to script our
builds and deployments.
86
90. @pcameronpresley
Reason Behind The Madness
A common metric for how well a company
is onboarding an engineer is how quickly
the new engineer can deliver something to
production
90
91. @pcameronpresley
I’ve Got The Steps, But How Do I Know What To Work ON?
To help organize work, companies typically
use some type of software methodology to
bring in work, break it down, and
communicate it out
91
94. @pcameronpresley
Example Methodology - SCRUM
Our goal is to deliver value in two week
cadences (called sprints).
At the beginning, we meet as a team to talk
about what work we can accomplish this
sprint, called planning.
94
95. @pcameronpresley
Example Methodology - SCRUM
During the sprint, we have a stand-up
meeting where we talk about what we did
yesterday, gameplan for today, and any
blockers.
At the end of the sprint, we have a
retrospective to discuss what’s working,
what’s not working, and possible solutions
95
96. @pcameronpresley
Getting Into The Groove
As time progresses and you get used to the
process, you’ll develop a rhythm and start
contributing to the process instead of
following along
96
107. @pcameronpresley
Building Relationships
Get to know your leader
What are they like outside of work? Any
hobbies or interests?
You don’t have to be their best friend, but
you do need to be friendly
107
110. @pcameronpresley
Meeting With Your Mentor
Who’s helping you onboard?
Schedule an intro conversation with them
Daily sync-up or pairing sessions
110
111. @pcameronpresley
Once You Get Comfortable
Start meeting the other members of your
team
Schedule intro conversations and get to
know your teammates
111
113. @pcameronpresley
Example Intro Conversation
Introducing myself
Have them introduce themselves
Take the conversation based on their intro
Basic Questions
- Role on the team, greatest strength
- What are things that you could help me with?
- What’s a characteristic you appreciate in a teammate?
- What’s a characteristic you despise in a teammate?
113
117. @pcameronpresley
What Does a Team Look Like?
Consist of Software Engineers with various
skill levels (associate to senior)
117
118. @pcameronpresley
What Does a Team Look Like?
Can vary wildly, might also have
Scrum Masters
Business Analysts
Product Owners
Testers
Support Engineers
DevOps Engineers
118
121. @pcameronpresley
Getting To know Teammates In Person
Make small talk when you bump into them
Invite them for a conversation over coffee
or lunch
Pair with them on their work or vice-versa
If possible, attend team activities
121
122. @pcameronpresley
Getting To Know Teammates Virtually
Lots of the same approaches, but more
intentional
Schedule time for catching-up (either
through coffee or lunch)
122
123. @pcameronpresley
My Approach For Learning About People
I create a list of questions for the
conversation, and we’ll cover what we can
My goal of the conversation is to have the
other person talk about 2/3 of the time
123
124. @pcameronpresley
Getting To know The Team
Questions of the Day (QotD) and see how
people respond (it also generates convos)
1. What is your go-to snack?
2. What's one thing you know better than anyone on the
team?
3. If your safety was guaranteed, would you rather
explore deep space or the oceans?
Example questions at https://bit.ly/questions-of-the-day
124
125. @pcameronpresley
As Time Progresses
As you get settled in and attend meetings,
you’re going to pick up who the main
people you’re going to interact with
Next steps is getting to know them.
125
126. 126
Example Progression
Meeting my team lead
Meeting the various members of my
team (all engineers and one product
owner)
Meeting other engineers of a team we’re
currently collaborating with
Meeting support engineers after dealing
with a production issue
Setting up a quarterly skip-level meeting
with my leader’s leader
Your mind is great for problem solving (CLICK), not for retention
Especially if you’re stressed
Not like you started a new job or anything, right?
(i.e. if I’m working on a problem related to mortgages, then I need to learn about the mortgage industry and how it works)
Loan Officer vs Loan Processor
Even though all portions of the life cycle are important, focusing on development, testing, and release
The best way to learn these three phases is take on a work item and work it through to production with another engineer
This provides a built-in mechanism for you to ask questions and start building your understanding of things
Story about Santhosh
Story about Geoff
Small company (entire place was 20 people)
Larger company, I could interact with 20+ people in the morning