Shove It, FizzBuzz How to Find and Land a .NET Development Job Dave Haynes
Shove It, FizzBuzz: How to Find and Land a ...
295 downloads
2475 Views
2MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Shove It, FizzBuzz How to Find and Land a .NET Development Job Dave Haynes
Shove It, FizzBuzz: How to Find and Land a .NET Development Job by Dave Haynes Copyright © 2010 Dave Haynes. All rights reserved. Product and company names mentioned herein may be the trademarks of their respective owners. Example companies, organizations, products, domain names, email addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred. This book represents the author’s views and opinions. The information contained in this book is provided without any express, statutory, or implied warranties. Neither the author, nor its resellers or distributors will be held liable for any damages caused or alleged to be caused either directly or indirectly by this book.
Table of Contents Introduction ............................................................................................... xi This Book Is Dangerous .................................................................... xi Some People Shouldn’t Read This Book .................................. xiii Bit.ly? ..................................................................................................... xiii What Does “FizzBuzz” Mean Anyway? ..................................... xiv Interview Simulation Software ................................................... xvi Companion Website ........................................................................ xvi Chapter 1 The Five Traits....................................................................... 1 Intelligence.............................................................................................. 3 I don’t think I’m smart enough. What can I do? ................... 5 Ability to Get Things Done ................................................................ 7 Likeability ............................................................................................. 10 What is likeability? ....................................................................... 10 How can you improve your overall likeability? ................ 12 Passion ................................................................................................... 15 Determination..................................................................................... 16 Chapter 2 How to Find a Job .............................................................. 19 The Big Job Sites................................................................................. 19 Other Places and Ways to Find Jobs ........................................... 21 What If There Are Just No Jobs In My Area? ........................... 27 Move where the jobs are ............................................................ 27 Find a telecommuting job .......................................................... 28 Start your own business ............................................................ 29
Chapter 3 All About Resumes ............................................................ 31 Writing the Resume .......................................................................... 32 A Few Notes Before You Begin ................................................ 33 Identification .................................................................................. 34 Summary/Objective ..................................................................... 34 Professional Skills ......................................................................... 36 Education/Certifications............................................................ 38 Achievements ................................................................................. 39 Employment/Professional Experience ................................ 40 References ....................................................................................... 42 The Secret Techniques For Getting More Interviews .......... 43 Check for Errors ............................................................................ 43 Create a Cover Letter ................................................................... 44 HR Doesn’t Want You To Do This, So Do It Anyway! ...... 46 Use a Resume Review Service .................................................. 47 Complete Sample Resume .............................................................. 49 Chapter 4 Preparing for the Interview........................................... 53 Identify Key Areas to Study ........................................................... 53 Generic Interview Questions......................................................... 57 Puzzle Questions ........................................................................... 60 The Art of Persuasion ...................................................................... 62 You = Awesome ............................................................................. 62 Interview Dos and Don’ts ............................................................... 64 Do ........................................................................................................ 64 Don’t ................................................................................................... 65
Chapter 5 It’s Your Turn – Interviewing the Interviewer ..... 67 The Questions You Should Ask ..................................................... 67 The Joel Test ........................................................................................ 71 Employer Reviews and Ratings ................................................... 72 Chapter 6 Learning Resources .......................................................... 73 General Development ...................................................................... 73 Object-Oriented Programming (OOP) .................................. 73 .NET .................................................................................................... 77 C# ........................................................................................................ 84 VB.NET .............................................................................................. 88 LINQ ................................................................................................... 92 SQL...................................................................................................... 96 XML ..................................................................................................100 Design Patterns ...........................................................................108 Agile/Scrum Methodologies ...................................................118 Version Control Systems ..........................................................128 Other Popular Terms, Phrases, and Acronyms You Should Know ................................................................................................131 Web Development ...........................................................................133 ASP.NET ..........................................................................................133 CSS ....................................................................................................139 HTML/XHTML .............................................................................144 JavaScript .......................................................................................147 Advanced Development ................................................................156 SOLID Principles .........................................................................156 Dependency Injection (DI) ......................................................158
Modular Programming/Composite Applications .......... 162 Unit Testing and Test Driven Development (TDD) ...... 166 Object Relational Mapping (ORM) ...................................... 172 SharePoint Development (WSS, MOSS) ............................ 174 Windows Communication Foundation (WCF) ............... 177 Windows Workflow Foundation (WF) .............................. 179 WPF/Silverlight .......................................................................... 183 Chapter 7 Developer Websites and Tools .................................. 193 General .NET Development Tools ............................................ 193 Web Development Tools.............................................................. 195 Regular Expression Helpers ....................................................... 196 Password Managers....................................................................... 197 Issue Tracking .................................................................................. 198 Chapter 8 People to Know ............................................................... 201 You should know about these guys ......................................... 201 These guys are cool too ................................................................ 204 Chapter 9 Final Remarks .................................................................. 213 This is not the end .......................................................................... 213 Index ......................................................................................................... 215
About the Author I have over 13 years of professional experience (unlucky, I know; next year will be better), but I’ve been programming much longer than that. When I was a kid, my grandpa bought me a TRS-80 at a yard sale, and my mom bought me a BASIC programming book. I’d spend all day typing in a program just to play “Yankee Doodle Dandee” in computer beeps. As I grew up, I started getting into bulletin board systems. I even ran my own BBS for awhile (TriBBS rules!), but because we only had one phone line at my house, it was almost never up, so it wasn’t very popular. I became a Co-SysOp of another local BBS (Gat’s Tavern) instead. Good times. I started my professional development career as a lowly web page designer at a local ISP. A good friend of mine helped me get the job, telling me what I needed to study, and I’ve never forgotten how helpful that was. That same spirit is what has driven me to compile the information contained within this book. (That same friend recently laughed at me at my daughter’s birthday party when I pulled out my Prodigy beach towel – and no, I don’t mean the musical group.) Over the years, as I switched to more programming-centric jobs, my development skills improved, and these days I’m spending most of my time with WPF, although web development and design are still near and dear to my heart. Even with all my years of experience, only recently did I feel confident enough to label myself a Senior Developer. I suspect that after a few more conversations with my smarter friends
and colleagues, I’ll lose that confidence, but for today, at least, I’m a Senior Developer. I’m married to a beautiful woman (Tanya) and have two wonderful children (Julia, 4, and Avery, 1) who were kind enough to be very quiet and leave me in peace to write this book. (Yeah, right. I had to write it when they were sleeping.) As I write this, my desk is covered with computer books, stacking blocks, a Light Brite, the body of a Potato Head, a pink Dell Inspiron 1721 (it’s my mother-in-law’s! I swear!), a princess tiara (ok, that’s mine), and a Microsoft wireless notebook mouse. On a shelf to my left is my Battle Armor Skeletor. To my right is my disc golf trophy that proudly states “Losers Have Boy Arms”. I hope this book can help you in the same way my friend helped me all those years ago.
Special Thanks I’d like to thank my friends for helping me review and edit this book, and my family for putting up with me while I wrote it. I’d also like to thank the community at StackOverflow for being so helpful, and I admit that I borrowed a few great interview questions from there. Also, Wikipedia is awesome1.
Really, really awesome… Not sure if that counts as an attribution exactly, but it was definitely helpful to me while writing this book, and can be found at http://www.wikipedia.org/. And yes, I did just learn how to insert footnotes. Thanks for noticing. 1
Introduction “This is the sort of bloody nonsense up with which I will not put.” – Winston Churchill, to an editor who rearranged one of his sentences to avoid ending with a preposition
I’m going to write this book the only way I know how, in my own voice, rather than the typical computer books that are emotionless and bland2. If there is a misplaced word here or there, please forgive me.
This Book Is Dangerous I want to clear up something right away. This book is not meant to be a cheat sheet to enable an incompetent programmer to fumble his way through an interview in order to get a position he is not qualified to have. The intent of this book is to help a .NET developer:
Find a job (sometimes in unusual ways) Write a more effective resume Prepare for the technical questions that will be asked in an interview Learn which questions to ask the interviewer to determine if the job would be a good fit Boost his confidence and improve his overall marketability when applying for any job
2 I hope I didn’t hurt your feelings, Microsoft .NET Framework 2.0 Application
Development Foundation Self-Paced Training Kit.
xii | Introduction This book can help these three types of developers: 1. Developers who have not been exposed to all that .NET has to offer, or haven’t had a chance to play with any of the new stuff in .NET because their current project isn’t using it. Because of this, these programmers are now a little bit worried when they see unfamiliar terms in job descriptions. “The ad mentioned Entity Framework, and I don’t know what that is, so I won’t be applying for that job, even though I had everything else they were asking for.” 2. Developers who are straight out of college, full of theoretical knowledge about object oriented programming and design patterns, but have no idea what to expect from a real .NET development job. “What should I be studying? What are the common things I should know before any interview?” 3. Developers who do stay on top of the latest technologies but can’t sell themselves well. These guys are excellent developers, but can’t find a job, or fail miserably in interviews. “I know everything there is to know about jQuery; I’m basically John Resig’s twin, but in an interview, I just can’t sell myself very well. If they would give me a chance, I could be such a valuable member of their team.”
xiii
Some People Shouldn’t Read This Book There are a few people who shouldn’t read this book, and I don’t mean that in a nasty way. It’s just that for some people, this is the wrong book.
Don’t read this book if you just want to learn the basics of programming. There are much better books out there for teaching the basics. Come back and read this book after you’ve written a few programs and want to know what to study in order to get a job doing .NET development.
Don’t use the techniques in this book to weasel your way into a job for which you are totally unqualified. You’ll be fired, or at least disrespected, when your co-workers and boss find out you aren’t the expert you claimed to be.
Don’t read any further if you don’t know anything about the Internet. You don’t have to use Facebook and Twitter, but if you’ve never heard of them, that could be signs of a more serious problem.
Bit.ly? Throughout this book you’ll see links to websites. They almost always have an arrow beside them to denote that they are website addresses. For URLs that were too long to fit on a single line, I used a URL shortening service called bit.ly to shorten them.
xiv | Introduction Before: http://msdn.microsoft.com/enus/magazine/cc188707.aspx#S4 After: http://bit.ly/adapterpattern Going to the bit.ly link simply redirects you to the appropriate website.
What Does “FizzBuzz” Mean Anyway? FizzBuzz is the common name for a popular programming test given to developers interviewing for a job. Write a program that prints the numbers from 1 to 100 with the following exceptions:
For multiples of three print "Fizz" instead of the number For multiples of five print "Buzz" instead of the number For multiples of both three and five print "FizzBuzz" instead of the number
Before you look at the example answers, try to do this yourself using either pseudocode, C#, or VB.NET.
xv Solving FizzBuzz is easy. You just need to know how to do a for loop and how to use the modulus operator to get the remainder after dividing two integers. C# FizzBuzz for (var i = 1; i