The Developer`s Cookbook

Transcription

The Developer`s Cookbook
TheDeveloper’sCookbook
ScalingandExcellingasaDeveloper
TJBaxter
Introduction
TJ Baxter
Software Developer at PerfectServe
Android | .NET
Tabs
vs Spaces
What is a soft skill?
•  Skills that are demonstrated as side effects
•  Communication
•  Teamwork
•  Adaptability
•  Learning ability
•  These can be more important than technical
skills!
What We’ll Cover
Productivity
Networking
Learning
Career Growth
Productivity
Becoming a 10x developer
Becoming a 10x Developer
•  Doesn’t mean working more hours
•  Helping others
•  Teammates
•  Junior Developers
•  Making other developers more productive
•  Improve processes
Distractions
•  Knowledge workers work best when they’re “in
the zone”
•  On average, takes around 15 minutes to get
back into a productive flow after being
interrupted
•  Sometimes interruptions are self-inflicted
•  Phone
•  Email
•  Slack
Distractions
•  Silence cell phone
•  Turn off email alerts
•  Customize Slack notifications
•  Keep a list of small tasks for those times when
you have a small time box (in between
meetings, waiting on a build, etc.)
•  Quick Code Reviews
•  Email replies
•  Minor refactors
Distractions
•  Focus on hard or creative work at the
beginning or end of your day
•  Push back on meetings
•  Some meetings are necessary, most are not
•  Put up a sign…
Distractions
Pomodoro Technique
•  Set a timer (typically 30 minutes, but can be
varied)
•  Work uninterrupted for 25 minutes
•  No Email
•  No Web Browsing
•  Relax the last 5 minutes
•  Reply to emails
•  Use the restroom
•  Take a walk
•  Repeat
Avoiding Interruptions
•  Work Remotely
•  Home
•  Coffee Shop
•  Coworking Space
•  Headphones
•  Blocks out office noise
•  Discourage non-critical chatter
•  Quiet Room
•  Unused conference room
Podcasts
•  Short sessions (30 minutes to 2 hours)
•  RabbitMQ, Socket.IO, Domain Driven Design, etc.
•  Interviews with accomplished developers
•  Google Source Control, Docker Containers, etc.
•  Convenient
•  Listen while driving, mowing, running, etc.
Additional Resources
• 
• 
• 
• 
TED Radio Hour
.NET Rocks
HanselMinutes
Software Engineering Daily
•  SE Radio
Audio Books
•  Longer reads
•  Audible
•  Buy accompanying audio book with physical book
•  Avoid purely technical books
•  Hard to follow code through audio
•  Try non-technical books
•  Soft Skills
•  Entrepreneurship
•  Leadership
Additional Resources
•  Rework – Jason Fried & David Hansson
•  Good to Great – Jim Collins
•  The Seven Habits of Highly Effective People –
Stephen R. Covey
•  How to Win Friends and Influence People –
Dale Carnegie
•  Soft Skills – John Somnez
•  The Mythical Man Month – Frederick P. Brooks Jr.
Networking
Conferences
•  Developers in your session share interests with
you
•  Use lunch time to meet other developers and
discuss shared interests
•  Especially useful for certain people
•  Freelancers & Contractors – Meet others that may need
work you specialize in
•  Hiring Managers – Meet potential candidates
•  Job Seekers – Meet other developers that could serve as
a reference
Additional Resources
•  CodeStock
Blog
•  Great way to share your knowledge with a
large audience
•  Can be used as a sort of “resume” to
demonstrate your expertise on a subject
•  Good practice for non-verbal communication,
writing is important in any profession
•  Great way to market yourself to potential
employers
•  Best way to learn, is to teach
Coworkers
•  “If you’re the smartest person in the room, you’re
in the wrong room – Richard Tirendi”
– TJ Baxter
Coworkers
•  Colleagues and coworkers are some of your
best networking resources…get to know them
•  Each coworker has worked somewhere you
haven’t
•  This variety of collective workplaces gives way
to a variety of processes and procedures, each
of which can provide new insights
•  Being smart is contagious*. Spending time
around smart people will force you to learn
* Depending on attitude, your mileage may vary
Imposter Syndrome
•  An inability to internalize accomplishments and
fear of being a “fraud”
LinkedIn
Treat it as a resume and keep it up to date!
Pros
•  Great way to stay connected with previous
colleagues
•  Easy way for recruiters to find you
Cons
•  Easy way for recruiters to find you
Speaking
•  Great way to practice verbal communication
•  Once again, the best way to learn is to teach
•  Opportunity to network with other speakers,
audience members
•  Demonstrate expertise (or lack thereof) on a
subject
Additional Resources
•  Cory House's Speaker Starter Kit
•  11 Tips for a Successful Tech Presentation Scott Hanselman
•  How To Prepare For a Tech Presentation
•  Writing a Good Session Abstract
Volunteering
•  Knoxville Entrepreneur Center
•  CodeWorks
•  Hackathons
•  Contribute to open source projects
•  Great practice contributing to a foreign code base
•  Attractive to employers
Learning
Learning
“Anyone who stops learning is old, whether at
twenty or eighty. Anyone who keeps learning stays
young.”
- Henry Ford
Books
•  Great resource for learning
•  Fundamentals
•  Best Practices
•  New Technologies
•  New Frameworks
•  Good to have an IDE open to experiment
Additional Resources
•  Code Complete – Steve McConnell
•  The Pragmatic Programmer – Andrew Hunt
•  Soft Skills – John Somnez
•  Cracking the Coding Interview – Gayle McDowell
•  Game Development Patterns – Robert Nystrom
Online Training
•  PluralSight
•  Leading online training resource for professional
developers
•  Find informative videos and training courses on nearly
every technology
•  Udacity
•  Nanodegree Program
•  Paying for a course is the best motivator for completing
it
Side Projects
“Never be afraid to try something new. Remember,
amateurs built the ark. Professionals built the
Titanic.”
- Unknown
Side Projects
•  Win-Win-Win
•  Experience trying out new libraries,
technologies, methodologies
•  Great addition to personal portfolio or sample
code for future potential employers
•  Potential to be profitable
COP
•  Community of Practice
•  Working groups dedicated to certain subjects
they’re passionate about
•  Architecture
•  Mobile
•  Great way to learn from coworkers and build
professional relationships in the workplace
Career Growth
Skill Sets
•  Specialist vs. Generalist
•  Jack of all trades, master of none some
•  Experts are more valuable
•  Generalists are more flexible
•  “Full Stack Developer”
•  Previously meant CSS, HTML, JQuery, PHP, SQL, FTP
•  Now could mean architecture, content delivery, CSS
preprocessors, encryption, scalability, cloud hosting,
monitoring, continuous integration, and testing in
addition to standard 3 tier web development
Skill Sets
Bad Skill Set
10
Back-EndWeb
8
Front-EndWeb
Mobile
6
TesGng
4
CI
2
Architecture
DevOps
0
Category1
WebDesign
Skill Sets
Good Skill Set
10
Back-EndWeb
8
Mobile
TesGng
6
Front-EndWeb
4
WebDesign
2
Architecture
DevOps
0
Category1
CI
Interviewing
•  Why is it important?
•  Get better job
•  Command higher market rate
•  Present your knowledge accurately
•  Ensure a good culture fit
Interviewing
•  Software interview process is broken!
•  Test under pressure
•  Make decision after one or two interviews
•  Ask unrealistic questions
•  Write code without IDE
•  No perfect process
Interviewing
•  Write a good resume
•  Less than 10 years experience – 1 page resume max
•  More than 10 years experience – 2 page resume max
•  Hire a professional to review it if necessary
•  Be prepared to back up any claim you make
•  Get an inside referral
•  Twice as likely to get interviewed, 40% more likely to get
hired
•  Networking before the interview pays dividends
Interviewing
•  Research your interviewer
•  Look them up on LinkedIn, follow their blog, or at least
research their title
•  Show a genuine interest in them during the interview
•  Prepare personality question responses early
•  What is your greatest strength/weakness?
•  Why are you looking for a new opportunity?
•  How do you handle disagreements with others?
•  What is the biggest challenge you’ve encountered?
Interviewing
•  Get very good with fundamentals
•  Data Structures – Linked Lists, Hash Tables, Stacks,
Queues, Trees, Graphs
•  Algorithms – Complexity (Big O), Tree Traversal, Sorting,
Searching
•  Think out loud
•  Practice, practice, practice!
•  Get a whiteboard
•  Online coding challenges
Additional Resources
•  CareerCup
•  Cracking the Coding Interview
•  LeetCode
•  TopCoder
•  HackerRank
Questions?
Thank you!