soft skills

506
www.it-ebooks.info

Upload: arturoherrero

Post on 25-Sep-2015

67 views

Category:

Documents


1 download

DESCRIPTION

The Software Developer's Life Manual.

TRANSCRIPT

  • www.it-ebooks.info

    http://www.it-ebooks.info/
  • Soft SkillsThe software developer's life manual

    John Z. Sonmez

    M A N N I N GSHELTER ISLAND

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact:

    Special Sales DepartmentManning Publications Co.20 Baldwin RoadPO Box 761Shelter Island, NY 11964Email: [email protected]

    2015 by Manning Publications Co. All rights reserved.

    No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher.

    Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps.

    Recognizing the importance of preserving what has been written, it is Mannings policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without elemental chlorine.

    Manning Publications Co. Development editor: Cynthia Kane20 Baldwin Road Copyeditor: Jodie AllenPO Box 761 Proofreader: Melody DolabShelter Island, NY 11964 Illustrator: Vieslav Radovic'

    Typesetter: Marija TudorCover designer: Leslie Haimes

    ISBN: 9781617292392

    Printed in the United States of America1 2 3 4 5 6 7 8 9 10 EBM 19 18 17 16 15 14

    www.it-ebooks.info

    www.manning.comhttp://www.it-ebooks.info/
  • To all developers who strive for continuous self-improvement

    Who are not satisfied with good enough

    Who always seek every opportunity to expand their horizons and explore the unknown

    Whose thirst for knowledge is never fully quenched

    Who believe that software development means more than just writing code

    Who know that failure is not the end, but merely a step in the journey

    Who struggle at times, and sometimes fall, but always get back up again

    Who have the will and determination to seek the harder path in life

    And, most importantly, who are willing to help others along the way

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • www.it-ebooks.info

    http://www.it-ebooks.info/
  • Brief contents

    1 Why this book is unlike any book youve ever read 1

    SECTION 1 CAREER 72 Getting started with a BANG!: Dont do what everyone else does 93 Thinking about the future: What are your goals? 134 People skills: You need them more than you think 185 Hacking the interview 236 Employment options: Enumerate your choices 297 What kind of software developer are you? 368 Not all companies are equal 439 Climbing the corporate ladder 49

    10 Being a professional 5511 Freedom: How to quit your job 6112 Freelancing: Going out on your own 6913 Creating your first product 7714 Do you want to start a startup? 8315 Working remotely survival strategies 8916 Fake it till you make it 9417 Resumes are BORINGLets fix that 9818 Dont get religious about technology 103

    SECTION 2 MARKETING YOURSELF 10719 Marketing basics for code monkeys 10920 Building a brand that gets you noticed 11521 Creating a wildly successful blog 12122 Your primary goal: Add value to others 13023 #UsingSocialNetworks 13424 Speaking, presenting, and training: Speak geek 14025 Writing books and articles that attract a following 14626 Dont be afraid to look like an idiot 151

    SECTION 3 LEARNING 15727 Learning how to learn: How to teach yourself 15928 My 10-step process 16329 Steps 16: Do these once 167

    v

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • vi Brief contents

    30 Steps 710: Repeat these 17631 Looking for mentors: Finding your Yoda 18232 Taking on an apprentice: Being Yoda 18733 Teaching: Learn you want? Teach you must. 19134 Do you need a degree or can you wing it? 19635 Finding gaps in your knowledge 201

    SECTION 4 PRODUCTIVITY 20736 It all starts with focus 20937 My personal productivity plan 21438 Pomodoro Technique 22139 My quota system: How I get way more done than I should 22840 Holding yourself accountable 23341 Multitasking dos and donts 23842 Burnout: Ive got the cure! 24343 How youre wasting your time 24944 The importance of having a routine 25545 Developing habits: Brushing your code 26046 Breaking things down: How to eat an elephant 26647 The value of hard work and why you keep avoiding it 27248 Any action is better than no action 277

    SECTION 5 FINANCIAL 28349 What are you going to do with your paycheck? 28550 How to negotiate your salary 29251 Options: Where all the fun is 30152 Bits and bytes of real estate investing 30953 Do you really understand your retirement plan? 31754 The danger of debt: SSDs are expensive 32655 Bonus: How I retired at 33 332

    SECTION 6 FITNESS 34756 Why you need to hack your health 34957 Setting your fitness criteria 35458 Thermodynamics, calories, and you 35959 Motivation: Getting your butt out of the chair 36460 How to gain muscle: Nerds can have bulging biceps 36961 How to get hash-table abs 37762 Starting RunningProgram.exe 38163 Standing desks and other hacks 38564 Tech gear for fitness: Geeking out 390

    SECTION 7 SPIRIT 39565 How the mind influences the body 39766 Having the right mental attitude: Rebooting 40267 Building a positive self-image: Programming your brain 40868 Love and relationships: Computers cant hold your hand 41469 My personal success book list 41970 Facing failure head-on 42471 Parting words 430

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Contents

    Foreword xxiForeword xxiiiPreface xxviAcknowledgments xxviiiAbout This Book xxxiAbout the Author xxxiv

    1 Why this book is unlike any book youve ever read 1

    SECTION 1 CAREER 7

    2 Getting started with a BANG!: Dont do what everyone else does 9

    Having a business mindset 9How to think like a business 10

    3 Thinking about the future: What are your goals? 13How to set goals 14Tracking your goals 16

    4 People skills: You need them more than you think 18Leave me alone, I just want to write code! 18Learning how to deal with people 19

    Everyone wants to feel important 19 Never criticize 20Think about what the other person wants 20 Avoiding arguments 21

    vii

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • viii Contents

    5 Hacking the interview 23The quickest way to pass an interview 23How I got my last job 24Thinking outside of the box and building rapport 25But what about the actual interview itself? 27What can you do right now? 27

    6 Employment options: Enumerate your choices 29Option 1: The employee 29Option 2: The independent consultant 31Option 3: The entrepreneur 32Which should you pick? 34

    7 What kind of software developer are you? 36Specialization is important 36Getting specific about specialties 37Kinds of specialties for software developers 39Picking your specialty 40What about the Polyglot programmer? 41

    8 Not all companies are equal 43Small companies and startups 43Medium-size companies 45Large companies 45Software development companies versus companies with software developers 47Choose carefully 48

    9 Climbing the corporate ladder 49Taking responsibility 49Becoming visible 50Educate yourself 52Be the problem solver 53What about politics? 53

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Contents ix

    10 Being a professional 55What is a professional? 56Being a professional (forming good habits) 57Doing what is right 58Seeking quality and self-improvement 59

    11 Freedom: How to quit your job 61Going about things the smart way 61Preparing to work for yourself 63How much do you really work? 64Cutting the cord 67

    12 Freelancing: Going out on your own 69Getting started 69Ask someone you know 70Best way to get clients 71Setting your rate 72

    13 Creating your first product 77Finding an audience 77Testing the market 80Start small 81Getting started 82

    14 Do you want to start a startup? 83Startup basics 83Go big or go home 84A typical startup lifecycle 85Accelerators 86Getting funded 86

    15 Working remotely survival strategies 89The challenges of being a hermit 89

    Challenge 1: Time management 89 Challenge 2: Self-motivation 90 Challenge 3: Loneliness 92

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • x Contents

    16 Fake it till you make it 94What it means to fake it until you make it 94Putting it into practice 95

    17 Resumes are BORINGLets fix that 98You arent a professional resume writer 99Hiring a resume writer 99Going the extra mile 101What if you dont want to hire a professional? 102

    18 Dont get religious about technology 103We are all religious about technology 103Everything is good 104My conversion 105Dont limit your options 106

    SECTION 2 MARKETING YOURSELF 107

    19 Marketing basics for code monkeys 109What marketing yourself means 109Why marketing yourself is important 110How to market yourself 112

    20 Building a brand that gets you noticed 115What is a brand? 115What makes up a brand? 116Creating your own brand 118

    21 Creating a wildly successful blog 121Why are blogs so important? 121Creating a blog 123Keys to success 125Getting more traffic 127I cant guarantee you success 128

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Contents xi

    22 Your primary goal: Add value to others 130Give people what they want 130Give away 90% of what you do for free 131The fast track to success 132Offering more of yourself 133

    23 #UsingSocialNetworks 134Growing your network 134Using social media effectively 135Staying active 136Networks and accounts 137

    24 Speaking, presenting, and training: Speak geek 140Why speaking live is so impactful 141Getting started speaking 142What about training? 143

    25 Writing books and articles that attract a following 146Why books and articles are important 146Books and magazines dont pay 147Getting published 148Self-publishing 149

    26 Dont be afraid to look like an idiot 151Everything is uncomfortable at first 151Its okay to look like an idiot 152Take small steps (or dive right in) 153

    SECTION 3 LEARNING 157

    27 Learning how to learn: How to teach yourself 159Dissecting the learning process 159Teaching yourself 160

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • xii Contents

    28 My 10-step process 163The idea behind the system 163The 10-step system 165

    29 Steps 16: Do these once 167Step 1: Get the big picture 167Step 2: Determine scope 168Step 3: Define success 170Step 4: Find resources 171Step 5: Create a learning plan 172Step 6: Filter resources 174

    30 Steps 710: Repeat these 176Step 7: Learn enough to get started 176Step 8: Play around 177Step 9: Learn enough to do something useful 178Step 10: Teach 180Final thoughts 181

    31 Looking for mentors: Finding your Yoda 182Mentor qualities 182Where to find a mentor 184Virtual mentors 185Recruiting a mentor 186

    32 Taking on an apprentice: Being Yoda 187Being a mentor 187The benefits of mentorship 188Picking a worthy apprentice 189

    33 Teaching: Learn you want? Teach you must. 191Im not a teacher 191What happens when you teach? 192Getting started 193

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Contents xiii

    34 Do you need a degree or can you wing it? 196Do you need a degree to succeed? 196Advantages to having a degree 198What if you dont have a degree? 199

    35 Finding gaps in your knowledge 201Why we leave the gaps 201Finding your gaps 202Filling the gaps 204

    SECTION 4 PRODUCTIVITY 207

    36 It all starts with focus 209What is focus? 209The magic of focus 210Getting more focus 211Its not as easy as it sounds 212

    37 My personal productivity plan 214Overview 214Quarterly planning 215Monthly planning 215Weekly planning 215Daily planning and execution 218Dealing with interruptions 218Breaks and vacations 219

    38 Pomodoro Technique 221Pomodoro Technique overview 221Using the Pomodoro Technique effectively 222The mental game 224How much work can you get done? 226

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • xiv Contents

    39 My quota system: How I get way more done than I should 228

    The problem 228Enter quotas 229How the quota system works 230Why the quota system works 231

    40 Holding yourself accountable 233Accountability 233Becoming accountable to yourself 234External accountability 236

    41 Multitasking dos and donts 238Why multitasking is generally bad 238Batching is much more productive 239What about true multitasking? 240

    42 Burnout: Ive got the cure! 243How you burn out 243In reality, youre just hitting a wall 244On the other side of the wall 245Pushing past the wall 246

    43 How youre wasting your time 249The biggest time waster of all 249Giving up the TV 250Other time wasters 251Tracking your time 253

    44 The importance of having a routine 255Routines make you 255Creating a routine 256Getting more detailed 257

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Contents xv

    45 Developing habits: Brushing your code 260Understanding habits 260Recognizing bad habits and altering them 262Forming new habits 264

    46 Breaking down things: How to eat an elephant 266Why bigger isnt always better 266Breaking down things 268How to break down things 269Breaking down problems 271

    47 The value of hard work and why you keep avoiding it 272

    Why is hard work so darnhard? 272Ill just work smarter 273Hard work is boring 274The reality 274Working hard: How to do it 275

    48 Any action is better than no action 277Why we refuse to take action 277What happens when you dont take action 278What is the worst that could happen? 279Its easier to steer a moving car 280What can you do now? 281

    SECTION 5 FINANCIAL 283

    49 What are you going to do with your paycheck? 285

    Stop thinking short term 285Assets and liabilities 287Back to your paycheck 290

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • xvi Contents

    50 How to negotiate your salary 292Negotiations begin before you even apply for the job 292How you get the job is extremely important 293First person to name a number loses 295What about when youre asked to name a number first? 296What if youre asked about your current salary? 297When you have an offer 298Some final advice 299

    51 Options: Where all the fun is 301Option basics 301Digging a little deeper 303Selling options 306More complex options 307

    52 Bits and bytes of real estate investing 309Why real estate investment? 310Okay, so how do I do it? 313First step: Education 313Taking action 315Use property management 316

    53 Do you really understand your retirement plan? 317Retirement is all about working backwards 318Calculating your retirement goal 319Path 1: 401(k), IRAs, or other retirement accounts 320Path 2: Setting up an early retirement or aiming to get rich 322What if I am stuck in the middle or close to retirement? 324

    54 The danger of debt: SSDs are expensive 326Why debt is generally bad 326Some common debt follies 328Not all debt is bad 330

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Contents xvii

    55 Bonus: How I retired at 33 332What it means to be retired 332How I got started 333Rental woes 335Gaining traction 336Grinding it out 337Short circuit? 338More grinding it out 338Turning a corner 341The lucky break 342Hard work mode 343Multiple passive income streams 344A quick analysis 344

    SECTION 6 FITNESS 347

    56 Why you need to hack your health 349Confidence 350Brain power 351Fear 352

    57 Setting your fitness criteria 354Picking a specific goal 354Creating milestones 355Measuring your progress 357Living a healthy lifestyle 357

    58 Thermodynamics, calories, and you 359What is a calorie? 359Losing weight is simple 360How many calories are you consuming? 361How many calories are you burning? 361Utilizing calories to achieve your goal 362

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • xviii Contents

    59 Motivation: Getting your butt out of the chair 364What motivates you? 364Rewarding yourself too early 365Motivation ideas 366Just get it done! 367

    60 How to gain muscle: Nerds can have bulging biceps 369

    How muscles grow 370Weightlifting basics 370Different goals 371

    Strength 371 Size 371 Endurance 372

    Getting started 372What lifts should you do? 373What to eat 375

    61 How to get hash-table abs 377Abs are made in the kitchen 377Your body doesnt want you to have abs 378What can you do about it? 379

    62 Starting RunningProgram.exe 381Why you might want to run 381Getting started running 382Advice for getting started 383

    63 Standing desks and other hacks 385Standing desks and treadmills 385Food hacks 386

    Eggs in the microwave 387 Plain nonfat Greek yogurt 388 Frozen meats 388

    64 Tech gear for fitness: Geeking out 390Step counters and pedometers 390Wireless scales 391

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Contents xix

    Combo devices 392PUSH strength 392Headphones 393Apps 394

    SECTION 7 SPIRIT 395

    65 How the mind influences the body 397It starts with the mind 398The mind and body connection 399

    66 Having the right mental attitude: Rebooting 402What is positivity? 402The positive effects of positivity 405How to reboot your attitude 405

    Change your thoughts 406 Meditation 406 Play more 407 Books 407

    67 Building a positive self-image: Programming your brain 408

    What is self-image? 408Your self-image is difficult to change 410Reprogramming your brain 411

    68 Love and relationships: Computers cant hold your hand 414

    Why software developers sometimes have a hard time finding love 414Understanding the game 415So, all I have to do is be confident, right? 417Its a numbers game 417

    69 My personal success book list 419Self-help and inspirational books 419

    The War of Art 419 How to Win Friends and Influence People 420 Think and Grow Rich 420

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • xx Contents

    Psycho-Cybernetics 421 The Power of Positive Thinking 421 Atlas Shrugged 421

    Software development books 422Code Complete 422 Clean Code: A Handbook of Agile Software Craftmanship 422 Head First Design Patterns 422

    Investing 423The Millionaire Real Estate Investor 423 Rich Dad, Poor Dad 423 No-Hype Options Trading: Myths, Realities, and Strategies That Really Work 423

    70 Facing failure head-on 424Why are we so afraid of failure, anyway? 424Failure isnt defeat 426Failure is the road to success 426Learn to embrace failure 427

    71 Parting words 430

    Appendix A If you can write code, you can understand finances 433Appendix B How the stock market works: Rules of the system 441Appendix C Garbage in, garbage out: Diet and nutrition basics 448Appendix D How to eat healthy: Pizza is not a food group 453

    Index 459

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Foreword

    Ive long been an advocate for soft skills. Coding is so harsh and cold.Everything is so easily measured in the hard world of code. How manylines of code can you write? How productive can you be? Did those testspass? Its easy to get caught up in the measurement of it all and lose sightof the human aspect of technology.

    Are you liked? Are you appreciated? Are you kind and welcoming? Doyou inspire with your positivity and supportive demeanor, or just withyour ruthless competence? Are you taking care of yourself, your back,your buns, and your brain? Ive been coding for well over 25 years and,let me tell you, things break down if you dont take care of them.

    Perhaps youre a consultant, as many of us are. Are you taking care ofyour finances? Money doesnt compile quite the same way as code, asmuch as youd wish it did. All of these skills and so many more make upthe so-called soft skills. What John has done for us with this book is tocompile all of the things one needs to know to form, well, a well-roundedsoftware professional! After many years of fail-fast, fail-often, Johnspeaks from vast experience about what works and what doesnt. SoftSkills is a near complete brain dump from a successful engineer and itgives you useful, practical, and actionable advice on a wide array of topics.

    Id also recommend you check out my free video documentary, GetInvolved in Tech at http://www.getinvolvedintech.com for a video dis-cussion of what it means to be a social developer, just like John talksabout in Section 2 of this very book! John and I think similarly aboutthese things which is why Im thrilled to be writing this foreword.

    xxi

    www.it-ebooks.info

    http://www.getinvolvedintech.comhttp://www.it-ebooks.info/
  • xxii Foreword

    Enjoy this book. Take it a little at a time, jump around, absorb, andreturn to it. Continuous integration and continuous improvement workin wetware as well as software!

    SCOTT HANSELMANSOFTWARE ARCHITECT, ENGINEER, AUTHOR, TEACHER

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Foreword

    Late in the evening of Friday, December 5, 2014 (my 62nd birthday), Ireceived an email from John Sonmez, the author of this book. He wrote,asking me to write a foreword by Monday, December 8. In Johns emailwas a zip file with several dozen Word filesI found this presentation ofthe manuscript to be inconvenient and annoying, and I didnt have time togenerate a PDF of the whole book.

    I wasnt pleased to get such a request. My wife had just had double kneereplacements and was in rehab. I had a flying lesson Saturday morningand planned to spend the rest of the day with my wife. I was scheduled toboard a plane to London Saturday evening and teach courses Mondaythrough Friday. So there was no way, not by Monday. John hadnt givenme enough time, and I told him so.

    Just before driving to the airport, I found John had sent me a Christmaspackage of cheeses and ham. It included a card, thanking me for consider-ing writing the foreword. Also, I received another email from John inwhich he said he had begged his publisher for another day, so he could giveme until Tuesday. He sent me several other imploring emails, but I toldhim that there was no reasonable chance, and that he should expect noth-ing from me.

    I drove to the airport, boarded the plane, slept through the flight, andtook a taxi to my favorite London hotel. I was wiped out by the travel andplayed Minecraft in a stupor until I finally crashed. On Monday I taughta full day, and then had to do some work on the SMC Compiler for Epi-sode 30 of my Clean Code video series on http://cleancoders.com.

    xxiii

    www.it-ebooks.info

    http://cleancoders.comhttp://www.it-ebooks.info/
  • xxiv Foreword

    Today is Tuesday, December 9. Its the second day of my class, and Ijust started the students working on a two-hour exercise. I checked myemail and found that John had sent me another message with a simplePDF of the whole book. Okay, that would make things easier. I couldjust open that file and scroll up and down the book. Nice.

    Note what Im telling you: John did what was necessary. He thoughtabout what I might need and want. He followed his original requestwith inducements and helpful aids. He clearly spent a lot of time andeffort working to make my job easier, on the off-chance that it wouldmake it possible for me to write this foreword. Even after Id declinedand told him it was almost certainly impossible, he continued to findways to induce and aid me. He didnt give up. He didnt back down. Aslong as there was a chance, he continued to search for a way.

    And that is what this book is about. Its about getting to success. Itsabout the habits and strategies, procedures and mindsets, and tricksand hacks that you can use to push yourself ever closer to success.Johns actions toward me, after his original request, are an example,and he is an exemplar, of what he has written in this book.

    So, with two hours to kill while the students did their exercise, Icracked the PDF open and began to read. Whoa! Look at the topics!He talks about physical fitness. He talks about options trading. Hetalks about real estate. He talks about spiritual balance. He talks aboutquitting your job, starting a consulting business, joining a startup,building a product, climbing the corporate ladder, marketing yourself,and the list goes on

    Knowing Id never be able to read the entire book in two hours, andthat I wasnt going to write the foreword anyway, I read and skimmed,and read and skimmed again. But as I did, I started to get the feelingthat John had a message and that it was a good one! It was a holisticmessage, one that every software developer (and everybody else, forthat matter) ought to hear.

    Do you know how to write a resume? Do you know how to negotiateyour salary? Do you know how to set your rates as an independentconsultant? Do you know how to weigh the risks of quitting your job

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Foreword xxv

    to become a contractor? Do you understand how to get funding for astartup? Do you understand the cost of watching TV? (Yes, you readthat right.)

    These are the things this book talks about, and can teach you. Theyrethings you need to know. I havent read the whole book, but Ive readin the book and skimmed a lot of it, and that was enough, because hereI am, writing this foreword, after all. My conclusion is that if youre ayoung software developer trying to find your way in this complexindustry, then youre holding a book that will give you a lot of insightand good advice.

    John figured out a way to get me to write this foreword, despite abumpy beginning, an impossible schedule, and the overall difficulty ofthe situation. He applied the principles that he writes about in thisbook, and, once again, gained success!

    ROBERT C. MARTIN (UNCLE BOB)UNCLE BOB CONSULTING LLC

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Preface

    Id love to be able to give you a fantastic story about how I came to writethis book. Id like to tell you that I was meditating in the desert when aneagle flew down, landed on my shoulder, and whispered in my ear, Youmust write a book about soft skills for software developers. Id like to tellyou that the book came to me in a dream; that I was awakened by a visionof the outline of the book in the middle of the night and that I startedfrantically writing chapters, trying to capture what I had seen.

    But the truth is that I wrote the book because I felt that I had to.

    Throughout my life as a software developer, Ive been on many differentjourneys. Ive taken some right paths, some wrong paths, and some pathsthat Im still not sure about. Along the way, I havent had much help orguidance. Ive never felt like there was someone who had cut a trail forme that I could follow. Ive never felt like there was someone who couldshow me how to be the most successful software developer I could benot just in writing codebut in life in general.

    Sure, there have been plenty of people who have influenced my life, andplenty of people whove taught me all kinds of things about softwaredevelopment and more. I certainly owe what Ive accomplished in life, inpart, to those people. But Ive never found a single person or guide thatcondensed all this information into one place. Things like

    Not only how to manage my career, but how to make the right choicesabout my career

    xxvi

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Preface xxvii

    How to learn in a better and more efficient way and how to be asproductive as possible, and what to do when I feel unmotivated anddiscouraged

    The basics of finance, physical and mental health, and how all thosethings affect me in my role as a software developer and as a personliving on this planet.

    I wrote this book because I wanted to provide that guideor at least todo the best job I could of providing it with what Ive learned from mypersonal experience and from the experiences of other successful soft-ware developers, financial experts, fitness gurus, and motivationalspeakers that Ive had the pleasure of meeting and interacting with. Iwrote this book because I felt that it would be a waste to not sharewhat I have learned and what I have experienced.

    I wrote this book, for you

    to make your journey a little easier

    to help you become a better version of yourself

    and, most importantly, to help you not feel so alone in your journeythrough life as a software developer.

    Did reading this make you feel inspired?

    Good. Lets begin the journey!

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Acknowledgments

    If I have seen further than others, it is by standing uponthe shoulders of giants.

    Isaac Newton

    Few books are written without the help of many people. Certainly, nobooks are published and distributed without the help of a whole lot ofpeople. This book is no different, so Id like to take a moment to thank thegiants in my life.

    First, I want to thank all the people whove positively impacted my lifeand have helped me become the person I am todayand who havehelped me realize that I still have a long way to go.

    Id like to thank my coworkers and bosses, throughout my career, whovechallenged me, mentored me, given me enough rope to hang myself, andhave helped me cut down the rope before something truly bad happened.There are too many of you to name, but you know who you are.

    Id like to thank the authors of the many books Ive read who have mademe a better person and given me new perspectives in life. Again, toomany to name, but if I was hard pressed to name a few, Robert C. Martin(Uncle Bob), Steven Pressfield, and Dale Carnegie come to mind as someof the most influential authors Ive read.

    So I am especially grateful and honored that Robert C. Martin found thetime in his busy schedule to contribute a foreword to my book, eventhough I asked him way too late. I am also thrilled that Scott Hanselmanpenned a second foreword, also at the last minute, and that he shares

    xxviii

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Acknowledgments xxix

    many of my views on the soft skills developers need. My sincere thanksto both of them for endorsing my book.

    Id like to give a special thanks to my familyespecially my wifeHeather and my daughter Sophiawho had to deal with my moodswings, my over-commitment of time, and the overall craziness of writ-ing a book. My wife was also my proofreader who read every chapterand corrected it before it was sent to the editormaking me look a lotsmarter than I am.

    Id also like to thank my dad, Sahin, who taught me the value of hardwork, without which this book would have never been written in thefirst place, and thered be nothing to write about anyway!

    And I cant forget my mom, Laura, who, more than anyone else, taughtme to believe in myself, regardless of what anyone else saysan indis-pensable quality for an entrepreneur.

    Id also like to thank Derick Bailey, Josh Earl, and Charles Max Wood,also known as the Entreprogrammers (http://entreprogrammers.com),who are part of my weekly mastermind group and have encouraged,motivated, inspired, and challenged me at every step of writing this book.

    Of course, I need to thank everyone at Manning Publications, withoutwhom this book wouldnt have been publishedor perhaps it wouldhave been published in some completely unrecognizable form.

    First, Marjan Bace, the publisher of Manning, who had the foresight torealize that a book of this kind was exactly what software developersneeded.

    Next, Id like to thank my editor, Robin de Jongh, who brought meinto the Manning fold, helped me come up with the concept for SoftSkills, and provided support and encouragement during the process ofwriting the book.

    Id like also like to thank my development editor, Cynthia Kane, whoreviewed the earliest versions of the manuscript and provided invalu-able feedback and advice in a way that made me feel more inspired tokeep writing, rather than discouraged.

    www.it-ebooks.info

    http://entreprogrammers.comhttp://www.it-ebooks.info/
  • xxx Acknowledgments

    Thanks to Candace Gillhoolley, who did an excellent job of marketingthe book and who taught me a few tricks about marketing that Ill beusing in the future.

    A big thanks to Jodie Allen and Mary Piergies, who had the difficultjob of coordinating everything that went along with getting this bookthrough production, and again to Jodie for copyediting the entiremanuscript.

    Another big thanks to Rebecca Rinehart for coordinating the MEAP(Manning Early Access Program) release of Soft Skills and for dealingwith my extreme pickiness regarding the cover of the book, although inthe end Manning conducted a survey of customers who had pre-ordered the book and let them choose the final cover, which featuresone of the historical figures typical of so many Manning books.

    Thanks also to graphic artist Vieslav Radovic' , who perfectly illus-trated the visuals I tried to convey in the book. And a thank you to allthe other staff at Manning who made this book possible.

    Special thanks to the reviewers who read the manuscript in its earlydrafts and whose comments helped to improve the book: HeatherCampbell, Ionel Condor, Luke Greenleaf, Robert Hanson, RebeccaJones, Anita Lugomer, Matthew Margolis, Javier Muoz Mellid,Edward G. Prentice, Alvin Scudder, Craig Smith, David Stanek, Lou-rens Steyn, and Jerry Tan.

    Finally, Id like to thank the Simple Programmer audience. Many ofyou have contributed by asking questions, providing feedback, andinspiring and encouraging me in everything I do.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • About This Book

    Hey, Im glad you picked up this book, but youre probably wonderingwhat its about. What the heck is a software developers life manual any-way? Thats an excellent question, and Ill try to answer it herebriefly.

    Think of it this way: there are a lot of good books out there that will teachyou how to write better code, learn a new technology, or do things likework on a team or run a software project. You might even find some booksthat talk about your career and how to improve it, or simply how to passinterview questions. But have you ever found a book that told you how tobecome a better version of the software developer you already are?

    Have you ever found a book that told you not only how to get a better joband make more money, but what to do with that money and how to even-tually leave that job to become an entrepreneurif you so desire?

    Have you ever found a book that told you the steps to successfully build areputation for yourself in the software development industry and at thesame time taught you how to become stronger and healthier physically,mentally, and spiritually?

    I havent either, so thats why I decided to write a book about all thatand more.

    Regardless of who you are, this book is written for you. And I dont saythat lightly. There are chapters in this book that cover everything fromhacking the interview process and crafting a killer resume, to creating awildly successful blog and building your own personal brand, to beingextremely productive and learning how to deal with burnout, and eveninvesting in real estate and losing weight.

    xxxi

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • xxxii About This Book

    And youll also find an entire section dedicated to my special techniquefor learning things quicklythe same one I used to create over 55online courses in less than two years for the online training companyPluralsight.

    Seriously, no matter who you are, or where you are in your softwaredevelopment career, theres something in this book for you. There iseven a chapter devoted to meeting that special personyou know whatI mean!

    Chapter 1 will tell you more about what youll find in the book andhow its organized, but before you get into it, I want to point to a fewonline resources that might be helpful to you as you read the book.Youll find links to useful websites sprinkled throughout the chapters,but below are a few staples youre sure to find useful.

    Online Resources The Simple Programmer Blog: http://simpleprogrammer.com

    Here youll find a huge collection of blog posts that have to do withmany of the topics in this book. Its also the best way to get in contactwith me and find other valuable information that I post for free on aweekly basis. (While youre there, make sure you sign up for my emaillist and youll get all kinds of freebies and other good stuff that I pro-duce each week.)

    My YouTube channel: http://youtube.com/jsonmez

    Here I post videos about many of the topics youll find in this bookand its all for free. If youre interested in learning about a topic I coverin this book, try doing a search on my YouTube channeltheres agood chance youll find a video I did on it.

    How to Market Yourself as a Software Developer Course: http://devcareerboost.com/m

    If youre interested in the section in this book on marketing yourself, goto this site to buy the full course that goes into detail about building apersonal brand and making a name for yourself in the software develop-ment industry. This is the most popular thing Ive ever produced, by far.

    www.it-ebooks.info

    http://simpleprogrammer.comhttp://youtube.com/jsonmezhttp://devcareerboost.com/mhttp://devcareerboost.com/mhttp://www.it-ebooks.info/
  • About This Book xxxiii

    Ill even give you a special discount because you purchased this book.Use the code SOFTSKILLS to get $100 off the complete package.

    10 Steps to Learn Anything Quickly Course: http://simpleprogrammer.com/ss-10steps

    This is another in-depth course that goes into detail about what I teachyou in the Learning section of this book. If you enjoy that section andwant a little more in-depth treatment of the subject, check out thecourse to find out more.

    Entreprogrammers: http://entreprogrammers.com

    If youre interested in becoming an entrepreneur or starting your ownbusiness, check out this free, weekly podcast that I prepare with threeother developers/entrepreneurs (developerneurs).

    Get Up and CODE: http://getupandcode.com

    Finally, if the Fitness section appeals to you, youll probably enjoy thisfree podcast I produced about fitness for software developers and ITprofessionals.

    Author OnlinePurchase of Soft Skills includes free access to a private web forum runby Manning Publications where you can make comments about thebook, ask questions, and receive help and feedback from the authorand other users. To access the forum and subscribe to it, point yourweb browser to www.manning.com/SoftSkills.

    This page provides information on how to get on the forum once youreregistered, what kind of help is available, and the rules of conduct onthe forum. The Author Online forum and the archives of previous dis-cussions will be accessible from the publishers website as long as thebook is in print.

    www.it-ebooks.info

    http://simpleprogrammer.com/ss-10stepshttp://simpleprogrammer.com/ss-10stepshttp://entreprogrammers.comhttp://getupandcode.comhttp://www.it-ebooks.info/
  • About the Author

    John Sonmez is the founder of Simple Programmer(http://simpleprogrammer.com), where he tirelesslypursues his vision of transforming complex issues intosimple solutions. He has published over 50 courses ontopics such as iOS, Android, .NET, Java, and gamedevelopment for the online developer trainingresource Pluralsight. He also hosts the Get Up andCODE podcast, where he talks about fitness for pro-grammers (http://getupandcode.com), and the Entre-programmers podcast, where he and three other developers/entrepre-neurs share their real stories of building their online businesses (http://entreprogrammers.com).

    John is a life coach for software developers, and helps software engi-neers, programmers, and other technical professionals boost their careersand live a more fulfilled life. He empowers them to accomplish their goalsby making the complex simple.

    xxxiv

    www.it-ebooks.info

    http://simpleprogrammer.comhttp://getupandcode.comhttp://entreprogrammers.comhttp://entreprogrammers.comhttp://www.it-ebooks.info/
  • 1

    Why this book is unlike any book youve ever read

    Most software development books are aboutsoftware developmentthis one isnt. There are plenty of books out there about writing goodcode and using various technologies, but Ive been hard-pressed to find abook that told me how to be a good software developer.

    When I say good software developer, Im not talking about being goodat writing code, solving problems, or hacking out unit tests. Instead, Imtalking about being a good software developer in terms of managing yourcareer, reaching your goals, and enjoying your life. Sure, all those otherskills are important, but Im going to assume that you can go elsewhere tofigure out how to implement a good sorting algorithm in C++ or write thekind of code that doesnt make the next person who maintains it want torun you over with their car.

    This book isnt about what you can do. This book is aboutyou. Thatsright. Its about your career, your life, your body, your mind, andif youbelieve there is such a thingyour soul. Now, I dont want you to thinkIm some kind of lunatic. Im not a transcendentalist monk sitting on thefloor meditating while smoking Peyote leaves, trying to help you ascendto a higher state of consciousness. On the contrary, I think youll find Ima pretty down-to-earth kind of guy who just happens to think that being asoftware developer is about a whole lot more than writing code.

    I embrace a holistic approach to software development. This means that Ithink that if you want to be a better software developera better

    1

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 2 CHAPTER 1 Why this book is unlike any book youve ever read

    anything, reallyyou need to focus on the entire person, not just oneor two areas of your life.

    Thats both where this book came from and what its designed to do.Now, obviously I cant cover everything there is to cover about life inthis short booknor would I have the experience or wisdom to tacklesuch a broad subjectbut what I can do with this book is focus on themain areas of a software developers life that I have some experienceand expertise in and that will probably benefit you the most.

    In the pages of this book youll find quite a few seemingly unrelatedtopics strung together, but there is some semblance of reasoning behindthis madness. This book is divided into seven sections, each focusing ona different aspect of your life as a software developer. If you wanted tocategorize and group these sections it would be easiest to look at themas career, mind, body, and spirit.

    Well start off by talking about your career, because I feel that this isone of the most important areas to focus on for most software develop-ers. Ive found that very few software developers really give muchthought to actively managing their career. In section 1, Career, Imgoing to help remedy that problemat least in your caseas I teachyou exactly how you can actively manage your career to reach the out-come youre looking for, whether that may be climbing the corporateladder, starting your own consulting business, or even becoming anentrepreneur and creating your own product. Ive done all three, andIve interviewed countless software developers who have as well, soyoull learn from our collective mistakes and avoiding some of the blackeyes we got along the way. Ill also cover some important skills youneed to have regardless of your career goal, like creating an eye-catching resume, mastering interviews, working remotely, and gettingthose good ol people skills everyone is talking about these days.

    In section 2, Marketing yourself, well touch on a topic thats nearand dear to my own heartselling yourself. Marketinghow doesthat word make you feel? Most software developers get uncomfortableand possibly a bit queasy when I mention the word, but by the end ofthis section, youll get a whole new appreciation for the word and

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 3

    understand why its so important. Everyone is a salesperson; some ofus just do a lousy job of selling. In this section, Ill help you learn howto become a better salesperson and to know exactly what it is youreselling. This wont involve any slimy tactic or sending spam mail offer-ing get-rich-quick schemes. Instead, it will contain practical adviceabout how to build a personal brand, how to create a successful blog,and how to get your name out there by speaking, teaching, writing,and a whole bunch of other ways youve probably never even consid-ered. With these skills in place, youll be able to take what you learnedfrom section 1 and multiply it to achieve an even greater result.

    With the career stuff out of the way, it will be time to transition into therealm of your mind, when we get to section 3, Learning. Learning is acritical part of any software developers life. I probably dont need totell you that one of the most common things a software developer orany IT professional does is learn. Learning how to learn, or rather howto teach yourself, is one of the most valuable skills you can acquire,because the skill of self-teaching is a skill that literally enables you todo just about anything you can imagine. Unfortunately, most of theeducational systems weve had forced upon us while growing up arebroken, because they rely on a false premise that says you must have ateacher to learn and that learning only flows in one direction. Im notsaying teachers or mentors arent important, but in this section, Illshow you how to first rely on your own abilities and common sensemixed with a little courage and curiosity to achieve a greater resultthan you can by listening to a boring lecture and furiously scribblingdown notes. Ill take you through the 10-step self-learning process Ideveloped over my career and the same process that helped me learneverything I needed to know in record time to produce over 50 com-plete online developer training courses in just over two years for anonline training company, Pluralsight. Ill also cover some critical topicslike finding a good mentor, being a mentor, and whether or not youneed a traditional education and degree to be successful.

    Continuing with the theme of mind, section 4, Productivity, is allaboutyou guessed itbeing more productive. This section is designedto kick you in the behind and put your butt in gear. Productivity is a

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 4 CHAPTER 1 Why this book is unlike any book youve ever read

    great struggle for many software developers and its one of the singlebiggest things that hold you back from being as successful as you canbe. You can have everything else fine-tuned in your life, but if you dontknow how to overcome the hurdles of procrastination, disorganization,and just plain laziness, youll have a hard time getting out of first gear.Ive done my fair share of gear-grinding, but I eventually figured out asystem that has me cruising down the highway at top speed. In this sec-tion, Ill share that system with you. Ill also tackle some difficult topicslike burnout, watching too much TV, and finding motivation to dig inand do some plain old-fashioned hard work.

    In section 5, Financial, well handle one more mental topic that oftengets completely ignored, personal finance. You can be the most suc-cessful software developer in the world, but if you cant effectivelymanage all that money youre making, some day you might end up on astreet corner holding up a sign that says Will code for food. In thissection, Ill take you on a wild ride through the world of economics andpersonal finance and give you the basics you need to know to be able tomake smart financial decisions and actually start planning out yourfinancial future. Im not a financial planner or professional stock trader,but in addition to being a software developer, Ive been a professionalreal estate investor since I was 18, so I have a pretty good idea of whatIm talking about. We wont go too far into this topic, because the topicis deep enough to fill volumes of books, but Ill teach you the basics ofmanaging your income, how the stock market really works, how to doreal estate investing, and avoiding debt. As an additional bonus, Illshare with you my story and how I used these principles to effectivelyretire at the age of 33 without hitting it big selling a startup. (Its reallynot that hard and just about anyone can do it.)

    Now we get to the fun part and work on your body. Are you ready forboot camp? In section 6, Fitness, Ill teach you everything you needto know about how to lose fat, gain muscle, and get in shape. Most soft-ware developers I know are overweight, have poor health, and feelpowerless to do anything about it. Well, knowledge is power, and as asoftware developer who has competed in bodybuilding competitionsand hosted a podcast about fitness for programmers, Im excited to

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 5

    share what Ive learned to equip you with the knowledge you need tofinally take control of your life. In this section, Ill take you through thebasics of diet and nutrition and explain how what you eat affects yourbody. Ill also show you how to set up a successful fitness plan and dietto lose weight, gain muscle, or do both. Ill even cover some tech-spe-cific topics like standing desks and fitness gear for geeks.

    Finally, in section 7, Spirit, well head into the metaphysical worldand look for the illusive ghost in the machine. Even though the title isSpirit, dont let this section fool you; Ill give you some real, practicaladvice about topics that affect your emotional state and attitude. I sup-pose you could call this the self-help section of the bookalthough Imnot particularly fond of that phrase. In this section, Ill focus mainly onhelping you rewire your brain to create the positive attitude necessaryfor success. Well also briefly cover love and relationships, because thisarea is a difficult one for many of those who excel in technology. Illalso give you my personal success book list: a list of books Ive com-piled over the years by simply asking every famous or hypersuccessfulperson Ive ever met to tell me the one book theyd recommend every-one read.

    So go ahead and make yourself comfortable, give your analytical mindthe day off for a change, and get ready to dive into a quite differentbook about software development.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 6 CHAPTER 1 Why this book is unlike any book youve ever read

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Section 1

    Career

    The biggest mistake that you can make is to believe thatyou are working for somebody else. Job security isgone. The driving force of a career must come from theindividual. Remember: Jobs are owned by the company,you own your career!

    Earl Nightingale

    ew software developers actively manage their careers. But the mostsuccessful developers dont arrive at success by chance. They have agoal in mind and they create a solid and well-thought-out plan toachieve that goal. If you really want to succeed in the competitiveworld of software development, you need to do more than just polishyour resume and take whatever job you happen to get. You need tothink things through and decide what actions you should take, whenyou should take them, and how you should go forward with them.

    In this section, Ill take you through the process of deciding what youwant to get out of your software development career and out how toget it.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 8 CHAPTER

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 2

    Getting started with a BANG!: Dont do what everyone else does

    Imagine sitting in a field in the middle of summer enjoying a nice fire-works show. All around you screaming rockets burst into explosions ofblue, red, purple, and yellow. You watch as one particular rocket soarshigh up into the sky and thennothing. No bang, no explosion, just a fiz-zle. Which firework do you want your software development career to belike? The one that explodes high in the air with a loud bang, or the onethat reaches altitude and then quietly falls back to the ground?

    Having a business mindsetMost software developers starting out in their careers make a few hugemistakes. The biggest of those mistakes, by far, is not treating their soft-ware development career as a business. Dont be fooled; when you set outinto the world to write code for a living, youre no different than the black-smith of old times setting up shop in a medieval town. Times may havechanged, and most of us work for a company, but our skills and our tradebelong to us and we can always choose to set up shop somewhere else.

    This kind of mindset is crucial to managing your career, because when youstart to think of yourself as a business, you start to make good businessdecisions. When youre used to getting a regular paycheck that isnt reallydependent on your performance, it can be easy to develop a mindset that

    9

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 10 CHAPTER 2 Getting started with a BANG!: Dont do what everyone else does

    youre just an employee of a company. While its true that you may bean employee of a particular company at any given time in your career,its important to not let that particular role define you and your career.

    Its better to think of an employer as a customer for your business ofdeveloping software. Sure, you might only have a single customer, andall of your revenue may be coming from that single customer, but view-ing the relationship this way moves you from a position of powerless-ness and dependency to one of autonomy and self-direction. (In fact,many real companies have one big client that makes up a majority oftheir revenue.)

    TIP This is the first thing you must do in your career: switch yourmindset from that of an indentured servant to a business person whois running their own business. Just having this mindset at the startwill change the way you think about your career and cause you to bemindful and present in the active management of it.

    How to think like a businessNow, just thinking of yourself as a business doesnt really do you muchgood. You have to understand what it is to think in this fashion if youwant to get any benefit from it. Lets talk about how to think aboutyourself as a business and what exactly that means.

    We can start off by thinking about what makes up a business. Mostbusinesses need a few things to be successful. First, you need to have aproduct or a service. A business without something to offer doesnthave a way to make money, because they have nothing to sell. What doyou have to sell? What is your product or service?

    You may very well have an actual digital product to sell as a softwaredeveloperwell talk about that in chapter 13but most softwaredevelopers are selling the service of developing software. Developingsoftware is a wide term that can cover a variety of different activitiesand individual services, but in general, software developers are sellingtheir ability to take an idea and make it into a digitized reality.

    NOTE The service you provide is to create software.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • How to think like a business 11

    Just thinking about what you offer as a business in this way has a pro-found impact on how you view your career. Businesses are constantlyrevising their products and improving them. You should too. The ser-vice you provide as a software developer has a tangible value, and itsyour job to communicate not only what that value is, but what makes itdifferent than the offerings of thousands of other software developersout there.

    That brings us to marketing, which well cover more extensively in thenext section. Its important to at least realize that having a product orservice by itself is not enough. Youve actually got to be able to letpotential customers know about that product or service if you want tomake any money. Companies all over the world realize this key truthabout business and thats why they spend so much money and effort onmarketing. As a software developer offering your service, you alsohave to be concerned with marketing. The better you market yourofferings, the higher price youll be able to charge for your services andthe more customers youll potentially be able to attract.

    You can imagine that most software developers starting out dont thinkabout their careers in this way. Instead of starting out with a bang, theyenter the scene with a barely audible pop. So dont do what they do.

    Instead

    Focus on what service youre providing and how to market thatservice.

    Think about ways you can improve your offering.

    Think about how you can specialize the service youre providing toserve the needs of a particular type of client or industry.

    Focus on being a specialist who provides a very specialized set ofservices to a very particular type of client. (Remember, as a softwaredeveloper looking for a good job, you only really need to land oneclient.)

    Also think about how best to spread the word about your service andfind your customers. Most software developers create a resume and

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 12 CHAPTER 2 Getting started with a BANG!: Dont do what everyone else does

    blast it out to companies and recruiters. But, when you think aboutyour career as a business, do you really think that is the best and onlyway to prospect potential clients? Of course not. Most successful com-panies figure out how to get customers to come to them to buy theirproducts or services; they dont go out chasing customers one by one.

    You can do the same thing by making yourself a more marketable soft-ware developer through many of the techniques well discuss insection 2 of this book. Even without getting into the specifics, thepoint is to think outside of the box and start thinking like a business.What is the best way you can attract customers and how can you tellthem about the service you have to offer? If you can answer this sim-ple question, youll start off your career with a bang.

    Taking action Think about a business that has a product or service they offer. How do they dif-

    ferentiate and advertise that product or service? If you had to describe the specific service you can provide a perspective

    employer or client in a single sentence, what would it be? How does treating your career like a business affect the way you

    Do your work Handle finances Look for a job or new clients

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 3

    Thinking about the future: What are your goals?

    Now that youre thinking about your software development career as abusiness, its time to start defining the goals you have for this business.

    Not everyone is alike. You might have a very different set of goals foryour career than I do, but if youre ever going to achieve any of thosegoals, you have to know what they are. This is, of course, easier said thandone. Ive found that most people, software developers included, driftthrough life without really having a concrete realization of what theirgoals are or what theyre trying to accomplish in life. This is the naturalstate of most human beings. We dont tend to give enough thought towhat to focus on and as a result our steps lack purpose or direction.

    Think about sailing a ship across the ocean. You can get into a ship andraise your sails, like most people do. But if you dont have a clear destina-tion picked out and you dont take steps to steer the ship in that direction,youll just drift aimlessly at sea. Perhaps youll end up sailing your ship bychance to an island or other land mass, but youll never really make anysolid progress until you define where you want to go. Once you knowyour destination, you can use all of the tools at your disposal to activelysteer the ship in the direction that will take you there.

    It seems pretty obvious, yet so few software developers ever define goalsfor their careerwhy? I can only guess, but Id say that most softwaredevelopers are afraid of committing to a long-term vision for their career.They want to leave all options open to them because theyre afraid of

    13

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 14 CHAPTER 3 Thinking about the future: What are your goals?

    choosing one path and going down that path. What if its the wrong path?What if I dont like where it takes me? These are scary questions indeed.

    Some developers havent even given it much thought at all. Left to ourown devices, we tend to follow the path thats laid out for us. Its a muchmore difficult job to create our own path, so we just dont do it. Instead,we take the first job we get an offer for and stay at that job until a betteropportunity comes along or we get firedI mean laid off.

    Whatever your reason may be for not defining goals for your career,now is the time to do it. Not tomorrow, not next week, but right now.Every step you take without a clear direction is a wasted step. Dontrandomly walk through life without a purpose for your career.

    How to set goalsOkay, so now that Ive convinced you that you need to set goals, howdo you do it? Its easiest to start out with a big goal in mind and thencreate smaller goals along the way that will help you get to the biggergoal. A big goal is usually not very specific, because its hard to clearlydefine something thats potentially very far off. But, thats okay. Youdont have to be specific when you define a big, far-off goal. Your biggoal has to be specific enough to give you a clear direction in which totravel. Going back to the ship analogy, if I want to sail to China, I donthave to know the exact latitude and longitude of the port I want to getto right away. I can get in my ship and start heading in the direction ofChina, and when I get closer, I can always get more specific. All I needto know to get started out is whether Im getting closer to China or fur-ther from it.

    Your big goal should be something not too specific, but clear enoughthat you can know if youre steering toward it or not. Think about whatyou want to ultimately do with your career. Do you want to become amanager or executive at a company? Do you want to go out and startyour own software development business some day? Do you want tobecome an entrepreneur creating your own product and bringing it tomarket? For me, my goal was always to eventually be able to get out onmy own and work for myself.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • How to set goals 15

    Its really up to you to define what your big goal is. What do you wantto get out of your career? Where would you like to see yourself in 5 or10 years? Go ahead and spend some time thinking about thisitsreally important.

    Once youve figured out what your big, far-off goal is, the next step is tochart a course to get there by making smaller goals along the way. Some-times it helps to think backwards from your big goal to your present sit-uation. If you had already achieved your big goal, what would have beensome of the milestones along the way? What path could you imaginetracing backwards from your big goal to your present situation?

    At one time, I had a big goal of losingabout 100 pounds of weight. I had letmyself get out of shape and I wantedto get back on track. I set for myselfsmaller goals of losing 5 poundsevery two weeks. Every two weeksthat I was able to reach my smallergoal, it moved me forward toward mybig goal.

    If you can make small goals that graduallymove you forward in the direction toward your biggergoals, youll eventually reach your destination. Itsimportant to have various sizes of goals that leadyou in the direction of your big goal. For example,you might have a yearly goal of reading so manytechnical books or learning a new programming lan-guage. That yearly goal might be a smaller goal thatwill lead you toward your bigger goal of becoming a senior-level developer. But that yearly goal might be broken up into smaller goals of reading a single book each month ormaking some defined amount of progress each day.

    The smaller goals keep you on track and motivated so that you keepheading in the direction of your bigger goals. If you set out to

    Steps forsetting goals

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 16 CHAPTER 3 Thinking about the future: What are your goals?

    accomplish a big goal and dont have smaller goals along the way, youdont end up having time to course-correct when youre off track.Smaller goals also give you frequent rewards that help motivate you.Small victories each day and each week help us feel like were makingprogress and accomplishing things, which makes us feel good aboutourselves and helps us keep moving forward. Smaller goals also dontseem as daunting as a big goal.

    Consider writing this book. Right now I have a goal for writing somuch of this book each day and each week. Im not trying to tackle thehuge goal of writing the entire book, but instead Im looking at it fromthe perspective of what my goal is for each day, knowing that by doingwhat I need to do each day, Ill eventually reach my big goal of com-pleting the entire book.

    If you havent given much time to think about your future and youdont have at least one clear and definite goal youre aiming toward, putdown this book and define some goals for yourself. Its not easy, butyoull be glad you did it. Dont be a ship floating aimlessly in the ocean.Chart a course before you set sail.

    Tracking your goalsPeriodically, you should track and update the goals you have set foryourselfand adjust them if necessary. You dont want to travel milesoff course before you discover your mistake, and you probably dontwant to travel far down a path that turns out to be the wrong one, either.

    Id recommend setting regular intervals for checking up on your goals.This will help you to make adjustments when needed and keep youaccountable. You might want to review the goals you set for each weekat the end of that week before you plan out the next week. The samegoes for every month, quarter, and year.

    It can be helpful to reflect on what you accomplished during small andlarge time periods so that you can figure out if youre making the rightamount of progress or you need to make some kind of adjustment.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Tracking your goals 17

    Taking action Sit down and write out at least one major goal for your career. Break down that major goal into smaller goals that correspond to

    Months Weeks Days

    Write down your major goal where you can see it each day to remind you of whatyoure striving for.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 4

    People skills: You need them more than you think

    To some degree this book is all about people skills or soft skills. Assomeone reading this book, youre probably at least somewhat aware oftheir importance in your life and your career. But in this chapter, I wantto dive in a little deeper and talk about why people skills are so importantand some of the things you can do to acquire them.

    Leave me alone, I just want to write code!I used to be under the impression that the job of a software developer wasjust to write code. I know Im not alone in having been guilty of thinkingthat way.

    The fact is that a majority of our time in the software development field isspent dealing with people, not with computers. Even the code we write iswritten first for human consumption and only secondarily for the com-puter to understand. If that were not the case, wed all be directly writingour code as machine language1s and 0s. If you want to be a good soft-ware developer, you have to learn to deal effectively with people (even ifwriting code is the part of your job you enjoy the most).

    Think about how much of your time at your job is actually spent interact-ing with people and you immediately begin to see the value of improvingyour interactions with them. When you sit down to do you work in themorning, what is one of the first things you do? Thats right, check email.And who sends you email? Is it computers? Does your code send you anemail asking you to finish it or to make it better? No. People do.

    18

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Learning how to deal with people 19

    Do you go to meetings during the day? Do you converse with cowork-ers about problems youre working on and strategize on how to solvethem? When you do finally sit down to code, what do you code?Where do the requirements come from?

    If you think your job is to write code, you had better think again. Yourjob as a software developer, and in just about any profession, is to dealwith people.

    Learning how to deal with peopleMany excellent books have been written on the subject of dealing withpeople, and Ill give you my personal list of what I think are the bestones in section 7, so Im not going to attempt to cover everything thereis to know on the subject in this short chapter. But I do want to coversome of the basic concepts you should know that will perhaps give youthe best bang for your buck. Ill borrow heavily from one of my all-timefavorite books on the subject, How to Win Friends and Influence People byDale Carnegie (Gallery Books, Reprint, 1998).

    Everyone wants to feel importantPerhaps one of the most important concepts you should know whendealing with people is that, at their core, every single person wants tofeel important. Its one of the deepest and most desperate desires of thehuman race and the primary motivation for most great achievements insociety and life.

    Every time you interact with another person, you should rememberand be aware of how youre affecting this basic human need. If youbelittle or make a person and their accomplishments feel diminished insome way, fully expect them to react with the ferocity and desperationof a person whose oxygen supply has been cut off.

    Its very easy to make the mistake of quickly dismissing a coworkersidea so that you can present your own, but when you commit thisgrievous error in judgment, youll often find them deaf to your ownideas because youve made them feel unimportant. If you want peopleto accept your ideas and think them valuable, you have to extend the

    www.it-ebooks.info

    http://simpleprogrammer.com/ss-win-friendshttp://www.it-ebooks.info/
  • 20 CHAPTER 4 People skills: You need them more than you think

    same courtesy first. You can never win a persons heart if you do notleave their pride intact.

    Never criticizeBy token of this first concept, you should immediately be able to realizethat criticism will rarely be a tool that will achieve your intended result.I used to be a big criticizer. I used to think that punishment was a muchmore effective motivator than rewards, but I was completely wrong.

    Time and time again, studies have shown that rewarding a positivebehavior is much more effective than punishing a negative behavior. Ifyoure in a position of leadership or management, this is an especiallyimportant principle to observe. You have to learn to bite your tongueand only speak words of encouragement if you want to inspire peopleto perform their best or you want to effect change.

    Perhaps youre currently working for a boss or have worked for a bosswho lacks the understanding of this principle and responds to all faultswith outright and harsh criticism. How does it make you feel? Does itmake you feel motivated to do a better job? Do not expect others toreact in a much different way. If you want to motivate and inspire, usepraise instead of criticism.

    Think about what the other person wantsThe key to successfully dealing with people is to stop thinking in termsof you and what you want and start thinking in terms of what is impor-tant to the other person and what she wants. By shifting your mindsetin this way, youll avoid making another person feel less important andyoull be less likely to criticize her. A person who is handled in thismanner is much more likely to deal with you in a favorable way and seeyour ideas as valuable.

    When you first enter a dialog with a coworker or boss, try to shift yourfocus from you to them. Try thinking about things from their perspec-tive. What is it you think theyre trying to get out of this conversation?What is it thats important to them? Listen attentively and then whenits your time to talk, phrase your dialog in ways that appeal to thedesires of the other person. (In fact, rehearse this scenario in advance.Be prepared ahead of time for how the conversation will go.)

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Learning how to deal with people 21

    It does no good telling your boss why you would like to implement afeature a certain way. Its much better to phrase the suggestion fromthe frame of mind of why implementing a feature the way you suggestwill be useful to your boss. Perhaps it will cause the software to bemore stable or more likely to be shipped on time.

    Avoiding arguments As software developers, we sometimes tend to think that all peoplethink about things from a logical perspective. Its easy to fall into thetrap of falsely believing that solid reasoning is enough to compelanother person to accept your way of thinking.

    The truth of the matter is that even though we like to pride ourselveson our intellectual prowess, were all very emotional creatures. Werelike little babies who are walking around wearing suits and ties andpretending to be all grown up. A slight or injury is just as likely tocause us to cry or throw a tantrum, but weve learned to control andhide those emotions out of sight.

    For this reason, its imperative to avoid arguments at all costs. Logicand pure reason do little to convince a screaming toddler that it indeedmakes sense for him to go to sleep so that hell be well rested for theday ahead, and it will do just about as much good in convincing aslighted coworker that your way of doing things is best.

    I have come to the conclusion that there is only one wayunder high heaven to get the best of an argumentandthat is to avoid it. Avoid it as you would avoidrattlesnakes and earthquakes.

    Dale Carnegie, How to Win Friends and Influence People

    If you have a disagreement about how something should be done, inmany cases your best course of action is to first determine whether ornot that particular point is a hill thats worth dying onespecially if youknow it is for the other person involved. Any opportunity that you canfind to give up your side and admit that youre wrong on a small matterthat doesnt mean much to you, but perhaps a great deal to the other

    www.it-ebooks.info

    http://simpleprogrammer.com/ss-win-friendshttp://www.it-ebooks.info/
  • 22 CHAPTER 4 People skills: You need them more than you think

    person, will win you unmeasurable respect with them and store up foryou future credit that can be redeemed when the tables are turned.

    If youve never taken the time to work on your people skills, theres nobetter time than now to start. Youll find your life much more enjoyablewhen you learn how to interact and deal with others in a pleasant way,and the benefits youll accrue from learning those skills now will belifelong and difficult to put a price on.

    Landmine: Dealing with poisonous peopleSometimes, youll find that there are people who you just cant get along with no mat-ter what. Some people are just looking for opportunities to bring others down andgenerally have a negative view of everything in life. I call these kinds of people caus-tic, and you would do well to avoid them.

    If you recognize someone as being caustic, dont try to change them, and dont tryto deal with them; just stay out of their way and limit your interactions as much aspossible. You can recognize the signs of a caustic person by the trail of destructionthey leave behind them. Some people seem to always be involved in some kind ofdrama and have bad things happen to them. They often try to play themselves off asthe victim. If you recognize this pattern, runrun away as fast as you can.

    But what can you do if this kind of person is your boss or a coworker you have tointeract with? Not much. You might either have to suck it up or you might have tolook into moving to a new department or even a new job. Whatever you do, dont getsucked into their trap. If you have to interact with them, do it in a minimal, nonemo-tionally invested way.

    Taking action In a single day at your work, keep track of every encounter you have with another

    human being. At the end of the day, count up how many interactions you had dur-ing that day, including answering emails or phone calls.

    Get a copy of the book How to Win Friends and Influence People by Dale Carne-gie. The book is in public domain, so you can find it very cheap. Read itmorethan once.

    The next time youre being sucked into an argument, think about ways you canturn it around. For an interesting test, try just giving in. In fact, dont just give in,but emphatically take your opponents side. The outcome of doing this may sur-prise you.

    www.it-ebooks.info

    http://simpleprogrammer.com/ss-win-friendshttp://www.it-ebooks.info/
  • 5

    Hacking the interview

    Although resume writing is a skill you can delegate to someone else, inter-viewing is something only you can do, so its a critical skill to master. Itcan also be one of the most intimidating things you do when looking for anew job. Interviews are somewhat unpredictable. You cant know for surewhat questions youre going to be asked and you might be asked to writecode on the spota scary proposition for many. But what if there was away to hack the interview so that it was basically a formality?

    You might expect for me to go in-depth into the strategy for passing atechnical interview in this chapter, but instead Im going to focus onsomething much more important. Im going to help you gain an advan-tage that will make it so the cards are in your favor before you even getinto the interview. Skeptical? Read on.

    The quickest way to pass an interviewImagine this scenario: you walk into a job interview, shake the inter-viewers hand, and as he looks at you, his face lights up with a moment ofrecognition. Hey, I know you. I recognize your picture from your blog.Ive read a lot of your blog posts.

    If that happens during an interview, what do you think your chances ofgetting offered the job are? Now, I know what youre probably thinking:Well, thats great, but I dont have a super popular blog, so its unlikelyany interviewer will have ever heard of me. The key point is that con-trary to popular belief, most interviewers decide to hire people based on

    23

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 24 CHAPTER 5 Hacking the interview

    all kinds of nontechnical factors. (Ill actually show you how to make itso you do have a popular blog in section 2, when I tell you about howto market yourself, but for now, that isnt the point.)

    NOTE Ive seen the most technically competent, yet arrogant andunfriendly people lose out on a job to a much less skilled but likableperson.

    Now, dont get me wrong, Im not saying you can get hired for a job byrepresenting skills you dont have and just being famous or friendly,but what I am saying is that there are many technically competentdevelopers applying for a single job, and the biggest factor that deter-mines which one of them gets it isnt technical aptitude.

    To put it simply, the quickest way to pass an interview is to get theinterviewer to like you. There are many ways to go about doing this,most of which can be done before the interview even starts.

    How I got my last jobFor the job I held before going out on my own, I determined ahead oftime that I wanted to work for this particular company because theyseemed like a very good company and they allowed their developers towork from home. I spent some time researching the company andfound that some of the developers for that company maintained blogs. Istarted following all of the blogs of the developers who worked for thatcompany and began putting thoughtful and relevant comments onmany of their blog posts.

    Over time, many of the developers working at that company began torecognize my name and started to know who I was based on my com-ments on their blog. Some of them even started reading my blog.

    The next time that company was hiring for a developer and I applied,how hard do you think it was for me to get the job? I still did an inter-view, but as long as I didnt completely blow it, I was pretty much ashoe-in for getting an offer (and a much higher one than I would havegotten if I had not gone about applying for the job in the way I did).

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • Thinking outside of the box and building rapport 25

    Thinking outside of the box and building rapportThe key to hacking the interviewis to start thinking about a strategyfor the interview before the inter-view starts. Sure, its possible to beabsolutely charming during aninterview and sweep your inter-viewer off their feet. But, Imgoing to assume that most of usdont have that kind of charisma. Ifyou do, you probably dont need toread this chapter at all.

    A majority of job hires come frompersonal referrals. You should tryto make sure that any job you applyfor is applied for through a referral.When you go into an interview as areferral, the interviewer automati-cally is in a position to think morehighly of you, because youre bor-rowing the social credibility of theperson referring you. The reputa-tion and rapport the person refer-ring you has with the interviewer ispartially extended to you as theinterviewee. Youre walking intothe interview with the interviewerhaving a partial bias toward liking you already because you werereferred by someone they like and trust.

    But what if you dont know anyone at the company youre applying to?How do you get a referral? In my example, I found the blogs of devel-opers who were already working for the company and built a relation-ship with them. When a position opened up, it was easy to get apersonal referral.

    Interview

    Get personal referral for

    job

    Build rapport with contact

    Find contact at company

    Interview

    Getinterview

    Send out a bunch ofresumes

    Better wayOld way of getting a job

    Traditional way of getting a job versus the better way

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 26 CHAPTER 5 Hacking the interview

    You have to be willing to think out of the box a little bit and come upwith ways that you can build relationships with contacts within thecompany. I know one developer who looked up the hiring manager fora job and found out that the hiring manager belonged to a particularlocal club in the area that met weekly. This smart developer joined thatclub and became friends with the hiring manager. Im pretty sure hedidnt even have a formal interview when he was offered a position atthe company.

    With the advent of social media and the internet, its easy to find infor-mation about any company and to make connections with employeesalready working for that company. You just have to be willing to do alittle legwork ahead of time.

    If you want to build a bunch of relationships at one time, try joining alocal user group. There are many user groups for developers that meeton a weekly or monthly basis. If you become a regular attendeeandespecially if you give a few presentationsyoull quickly build relation-ships with developers and hiring managers from many local companies.

    Landmine: What if you need a job now?Perhaps you agree with everything Im saying, but you only have one problemitstoo late. You just got laid off and now you need to find a new job, but you dont havetime to build a network or reputation online or even stalk a potential employer.What can you do in this case?

    Your best bet in this situation is to try to make contact with the interviewer ahead oftime if possible and do as much following up as possible. See if you can get a pre-interview before you interview by asking to meet to talk about the company or ask afew questions before you sit down for the real interview. Ask for five minutes of apersons time for a quick call to touch base. Come up with as many excuses as pos-sible to put yourself in front of as many people who have some influence on the hiringdecision.

    I know this technique sounds crazyand youre better off taking the longer roadbut in a pinch, this works. A good friend of mine who runs a startup company calledHealth Hero used this exact approach to get the company accepted to three differentstartup accelerator programs, which are notoriously difficult to get into. He simply setup pre-interviews with all the key decisions makers, and by the time he went to thereal interview, everyone knew who he was and liked him.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • What can you do right now? 27

    But what about the actual interview itself?Hopefully, by the time you walk into the interview, the intervieweralready knows who you are, but either way, you need to know what todo in the interview. Now, obviously, you need to be technically compe-tent to pass a technical interview. But assuming you have the skills topay the bills, so to speak, the next thing to focus on is demonstratingconfidence in your ability to know what needs to get done and do it.

    Think about it from an employers perspective. Hiring an employee isan investment. It costs money and time to hire an employee, and youwant to see a good return on that investment. Employees who areautonomous and can do what needs to be done without asking them todo it are employees who almost always add to the bottom lineplus,they are a lot less of a headache, because they require very little of yourown resources to manage.

    Id rather hire a developer who knows a little less but knows how tofigure out what needs to be done and how to do it, than someone highlyskilled who requires constant hand-holding to be productive. Whenyoure in an interviewto the extent that its in your controlfocus ondemonstrating why youre the kind of employee who gets things donewithout being asked to do them.

    Youll still have to prove that youre actually technically competent, butif you can convince the interviewer that you are a go-getter whodoesnt let any obstacle stop you, not only will they probably like you,but there is a good chance theyll hire you as well.

    What can you do right now?Whether youre actively looking for a job right now or just trying tokeep your options open, theres no better time than now to start prepar-ing for your next job interview.

    The first thing you should do is make sure youre keeping up on yourtechnical skills. All the interview tricks in the world wont help you geta job you arent qualified for. Make sure youre reading technical booksand blog articles and putting time into developing your skills.

    www.it-ebooks.info

    http://www.it-ebooks.info/
  • 28 CHAPTER 5 Hacking the interview

    You can also start developing your network before you need it. Startreaching out to employees at different companies in your area andmaking connections that can help you later. Read and comment onblogs and get to know other developers and even recruiters in yourarea. Try to figure out ways to expand your circle.

    And dont forget to practice. You might want to interview for jobs justto get practice doing interviewseven if you have no interest in a newjob right now. The more practice you get, the more comfortable youllbe in an interview that counts.

    Youll also benefit greatly from focusing on marke