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!