Skill Up: A Software Developer's Guide to Life and Career - Jordan Hudgens - E-Book

Skill Up: A Software Developer's Guide to Life and Career E-Book

Jordan Hudgens

0,0
37,19 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

This unique book provides you with a wealth of tips, tricks, best practices, and answers to the day-to-day questions that programmers face in their careers. It is split into three parts: Coder Skills, Freelancer Skills, and Career Skills, providing the knowledge you need to get ahead in programming.

About This Book

  • Over 50 essays with practical advice on improving your programming career
  • Practical focus gives solutions to common problems, and methods to become a better coder
  • Includes advice for existing programmers and those wanting to begin a career in programming

Who This Book Is For

This book is useful for programmers of any ability or discipline. It has advice for those thinking about beginning a career in programming, those already working as a fully employed programmer, and for those working as freelance developers.

What You Will Learn

  • Improve your soft skills to become a better and happier coder
  • Learn to be a better developer
  • Grow your freelance development business
  • Improve your development career
  • Learn the best approaches to breaking down complex topics
  • Have the confidence to charge what you're worth as a freelancer
  • Succeed in developer job interviews

In Detail

This is an all-purpose toolkit for your programming career. It has been built by Jordan Hudgens over a lifetime of coding and teaching coding. It helps you identify the key questions and stumbling blocks that programmers encounter, and gives you the answers to them! It is a comprehensive guide containing more than 50 insights that you can use to improve your work, and to give advice in your career.

The book is split up into three topic areas: Coder Skills, Freelancer Skills, and Career Skills, each containing a wealth of practical advice. Coder Skills contains advice for people starting out, or those who are already working in a programming role but want to improve their skills. It includes such subjects as: how to study and understand complex topics, and getting past skill plateaus when learning new languages. Freelancer Skills contains advice for developers working as freelancers or with freelancers. It includes such subjects as: knowing when to fire a client, and tips for taking over legacy applications. Career Skills contains advice for building a successful career as a developer. It includes such subjects as: how to improve your programming techniques, and interview guides and developer salary negotiation strategies.

Style and approach

This unique book provides over 50 insightful essays full of practical advice for improving your programming career. The book is split into three broad sections covering different aspects of a developer's career. Each essay is self-contained and can be read individually, or in chunks.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 331

Veröffentlichungsjahr: 2017

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Skill Up: A Software Developer's Guide to Life and Career

Skill Up: A Software Developer's Guide to Life and Career

Copyright © 2017 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: July 2017

Production reference: 1280717

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-78728-703-7

www.packtpub.com

Credits

Author

Jordan Hudgens

Acquisition Editor

Ben Renow-Clarke

Content Development Editor

Radhika Atitkar

Technical Editor

Joel D'souza

Proofreader

Safis Editing

Indexer

Pratik Shirodkar

Production Coordinator

Arvindkumar Gupta

Cover Work

Arvindkumar Gupta

About the Author

Jordan Hudgens is the CTO and founder of DevCamp, where he leads instruction and curriculum development for all the DevCamp and Bottega code schools around the US.

As a developer over the past decade, Jordan has traveled the world building applications and training individuals on a wide variety of topics, including Ruby development, big data analysis, and software engineering.

Jordan focuses on project-driven education as opposed to theory-based development. This style of teaching is conducive to learning how to build real-world products that adhere to industry best practices.

Additionally, Jordan has published multiple books on programming and computer science along with developing training curriculum for Learn.co, DevCamp, and AppDev on the topics, namely Ruby on Rails, Java, AngularJS, NoSQL, API development, and algorithms.

www.PacktPub.com

eBooks, discount offers, and more

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

https://www.packtpub.com/mapt

Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career.

Why subscribe?

Fully searchable across every book published by PacktCopy and paste, print, and bookmark contentOn demand and accessible via a web browser

Customer Feedback

Thanks for purchasing this Packt book. At Packt, quality is at the heart of our editorial process. To help us improve, please leave us an honest review on this book's Amazon page at https://www.amazon.com/dp/1787287033.

If you'd like to join our team of regular reviewers, you can e-mail us at <[email protected]>. We award our regular reviewers with free eBooks and videos in exchange for their valuable feedback. Help us be relentless in improving our products!

To my sweet and loving daughter, Kristine. I cherished every moment of writing this book at coffee shops all over the country with you!

Preface

Skill Up: A Software Developer's Guide to Life and Career is an all-purpose toolkit for your programming career. It has been built by Jordan Hudgens over a lifetime of coding and teaching coding. It helps you identify the key questions and stumbling blocks that programmers encounter, and gives you the answers to them! It is a comprehensive guide containing more than 50 insights and methodologies that you can use to improve the work you produce, and to give advice in your day-to-day career.

Focusing on your life skills and the key soft skills we need in the modern world, Skill Up: A Software Developer's Guide to Life and Career will help you find your path to being a better and a happier coder.

What this book covers

Part 1, Coder Skills, contains advice for people starting out in a coding career, or those who are already working as in a programming role but want to improve their general skills. It includes such subjects as how to study and understand complex topics, defining deep work and what it means for developers, and getting past skill plateaus when learning new languages.

Part 2, Freelancer Skills, contains advice for developers working as freelancers and trying to manage their careers and bid on new tenders. It includes such subjects as knowing when to fire a client, practical tips for taking over legacy applications, and a guide to automating client update messages.

Part 3, Career Skills, contains advice for having a successful career as a developer. It provides information on how to advance your career, and practical tips, such as interview guides. It includes such subjects as how to practice programming techniques and improve as a developer, how to balance best practice and creativity as a developer, and developer salary negotiation strategies.

Who this book is for

This book is useful for programmers of any ability or discipline. It has advice for those thinking about beginning a career in programming, those already working as a fully employed programmer, and for those working as freelance developers.

Conventions

In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.

Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: "Returning to our case study of memorizing CSS elements, let's look at the border attributes available in CSS3: border."

New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "Here in the image I would move a task from being a To-Do, to being Assigned, to Working, to Under Review, and finally to Finished."

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy

Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors and our ability to bring you valuable content.

Questions

If you have a problem with any aspect of this book, you can contact us at <[email protected]>, and we will do our best to address the problem.

Part I. Coder Skills

Chapter 1. Discovering the Tipping Point for Developers

If you've been programming for a while, a question that has most likely crossed your mind is this:

"Am I a good developer?"

Before we go on, let me share a little secret with you… Every developer, even senior developers, have insecurities when it comes to programming. Few individuals like to share that information, mainly because confidence and even arrogance has become a developer stereotype for some stupid reason.

However, I won't BS you. I can tell you that the more experience I have as a coder, the more I realize how much more there is to learn and how far I still have to go.

Tipping point for developers

With all that being said, I want to discuss topic of defining the tipping point for developers, which is essentially the point at which a developer goes from a beginner to a pro. Since this topic is a bit abstract, it's not possible to point to a specific point in time and say:

"Here it is, this is when it all clicks and makes sense."

There's not a sentinel moment when programming mastery occurs. It's different for every individual.

My own experience

I remember when I was originally learning programming. Understanding the syntax and context did not come easy for me. It seemed like I spent 99% of my time looking things up and copying and pasting code from others just to get my programs running.

The doubt machine

Needless to say, my confidence as a programmer was very low in the beginning. I kept being plagued by nagging doubts, such as:

Maybe programming isn't for youEven if you code works you won't be able to write your own programsYou're only typing in what the book is saying to do, you won't be able to build anything custom

And the negative thoughts continued from there

The painful process

If you're a new developer maybe some of this sounds familiar to you, or maybe it doesn't and I simply lacked confidence. Either way, I trudged along, trying everything I could think of to improve as a developer:

Going through dozens upon dozens of programming books in various languagesTrying to build up a portfolio of projectFollowing online guides

However, back when I was originally learning how to code, the online resources weren't quite as good as they are today.

The tipping point(s)

So, what did the trick and pushed me over the edge to become a professional developer? None of those things… and all those things. I persevered through project after project and I consumed every training resource I could find. And slowly something amazing started to happen:

"Everything started to make sense."

The first tipping point

Even though it was a while ago, I still remember the moment my first development tipping point happened. I was sitting in front of my computer in a coffee shop and working on a web application.

A few hours went by and I stopped dead in my tracks, realizing that I had just spent the afternoon building a project and hadn't looked up a single code snippet. It wasn't like I programmed the space station, the project was incredibly basic. However, it was one of the most exciting moments I can remember in my life.

The second tipping point

As great as that was, I still had very far to go. I remember the next moment when I felt like I reached another key milestone. Even though my confidence had increased as a developer, the thought of anyone seeing my code was a very scary thought. However, I had started to build my freelance business and a client (who was also a developer) asked me to perform a pair programming session with him.

He had run into a bug with the program we were building and asked me to jump on a screen sharing session where we could work on the project at the same time. Honestly, I was scared to death when he asked. I had never coded in front of anyone before and the thought of doing it with this client pretty much gave me a panic attack. However, I didn't really have a choice in the matter so I started the session with him. After a few minutes of nervousness, I started to relax and to my surprise not only did I not make a fool of myself, I actually figured out the bug in his code and got the feature working.

The secret

So, what was my secret to getting over the hump and going from a beginner to a professional developer? Unfortunately, there is no easy-to-follow recipe. However, there is a process that is guaranteed to work. And the process isn't specific to becoming a programmer, it's the same whether you want to be a developer or a professional athlete… it's hard and smart work.

The book

In the book The Tipping Point, by Malcolm Gladwell, Gladwell gives countless case studies of what it takes for individuals to achieve mastery in a specific field. The key comes down to how dedicated an individual is to a specific skill. The book postulates that it takes around 10,000 hours for an individual to become a true master of whatever they're pursuing.

I'm not sure I believe in the 10,000-hour rule, mainly because there are a large number of variables when it comes to learning a topic or skill and rarely does a single rule apply for all fields. Also, I think the quality of your practice makes a significant difference.

For example, if you're learning how to play the violin: 5,000 hours of practice with a world class instructor is probably equivalent to 10,000 hours trying to figure it out yourself. However, with all that being said, one thing cannot be denied, the key to mastery is hard work.

The solution

I'm sorry if you were hoping for a quick fix. I can tell you from experience that there are no shortcuts to becoming a developer. You need to learn:

The fundamentals of codingHow to build projects on your ownVarious process for working through bugs

Becoming a great developer is not an easy road. However, be comforted in the fact that you are 100% in control of how skilled you will become. The formula is straightforward: the harder you work, the better you will get. So, get your hands on all the material you can find on the language and framework you want to learn. Work through challenging applications and you will be well on your way to mastery.

And soon you will be able to have the exciting moment of clarity when everything starts to click.

Chapter 2. Are Developers Born or Made? – Debunking the Myth of Prodigies

When talking to development students, I've discovered one topic that constantly arises in conversation. And that topic is the misconceived notion that great developers are born with a special programming gene. So, let's walk through the question are developers born or made, from a practical perspective.

Are prodigies real?

Before tackling this question, let's take a step back and discuss the topic of prodigies. Because whenever someone thinks that a certain group of individuals are born with superhuman-like talent, they're essentially saying that these special people are prodigies.

The Mozart case study

But are prodigies real? Let's take a look at one of the most famous prodigies of all time, Mozart. At the age of 5, Mozart was playing concert grade music to the royal family. Surely, this would qualify Mozart as a prodigy, right?

In his book, Peak: Secrets from the New Science of Expertise, researcher Anders Ericsson dispels a number of commonly held prodigy myths. He had this to say about Mozart:

"If you compare the kind of music pieces that Mozart can play at various ages to today's Suzuki-trained children, he is not exceptional. If anything, he's relatively average."

In his book, Ericsson dedicates a full chapter to debunking the concept of prodigies. And in each case, he illustrates that the individuals achieved their respective levels of success through massage amounts of work.

Are developers born or made?

Extending the Mozart case study, let's discuss how this applies to developers. Whenever we see a skilled coder it's easy to think that they were born with the innate ability to build applications and that learning new languages and frameworks comes easy to them.

However, nothing could be further from the truth. Over the years I've known more developers than I can count and I have yet to find a single one that was a born developer. I know programmers that work for Google and Amazon, along with computer science professors who specialize in research that boggles my mind to think about. And as amazing as all of these individuals are, each one of them became a great developer through hard work and dedication.

The tipping point

In Chapter 1, Discovering the Tipping Point for Developers I've discussed the tipping point for developers. The longer I teach and the more I work on my own coding skills, the more I'm convinced that the key to excellence is as straightforward as focused practice.

If you want to become a skilled developer badly enough, and you're willing to:

Dedicate the timeLearn from experienced teachersFight through frustrating challengesContinually build projects with features you've never developed before

You're going to wake up one day and realize that everything is clicking and that you've become a professional programmer.

Why we love the prodigy myth

Before I end this chapter, I want to address a subtle issue that explains the reason of why we, as humans, love the idea of prodigies.

The concept of prodigies, individuals born with a natural ability to be successful at a certain skill, such as sports, math, or programming, can be detrimental to our own success. This belief is dangerous because it causes our minds to have negative responses to failure.

For example, if you're an aspiring developer who thinks that programmers are born and not made, when you come across a bug that you can't seem to figure out or a feature you can't build, your first reaction might be:

I guess I wasn't born to do be a developer.

Or:

I wish I had talent like XYZ programmer, everything seems to come so easy to him.

If you catch yourself with thoughts like these, remind yourself that prodigies aren't real.

Developers achieve greatness through smart work and perseverance. The 10,000-hour rule from the Tipping Point book by Malcolm Gladwell may not be exactly accurate. However, it does give a general guide for how much work is required to reach a level of mastery.

If you feel like you weren't born with the "developer gene", go and knock out 10,000 hours of focused practice on building applications. I think you'll be pleasantly surprised to find that you'll become so good, that other people will look at you, and they'll think… that you were just born this way.

Chapter 3. Do You Have to Be a Genius to Be a Developer?

We've discussed the topic of whether great developers are born or made. And in this chapter, we're going to look at a similar topic from a different angle. And we're going to answer the question do you have to be a genius to be a developer?

Because of the near-magical nature of coding, one of the most common remarks I hear from individuals who hear what I do is:

"Oh wow, you're so smart!"

In fact, just recently I traveled to meet with a group of developers and the head of the company introduced me by saying:

"This is Jordan, he's just here to be smart."

I know that when people say things like this it comes from a good place. However, it bothers me. And it bothers me for a couple reasons:

First and foremost, these type of comments make it seem like all it takes to become a great developer is being smart.Following up on the above point, these remarks devalue the countless hours of work that are required to learn development.

The running man

I'm going to get off my soap box for a moment and discuss the life of Steve Prefontaine. If you've never heard of him before, Prefontaine was one of the world's greatest runners during his time. Before tragically dying in a car accident at 24 years old, he had already broken seven track world records.

During his climactic rise to success, many people would try to compliment Prefontaine by saying how talented he was, and by calling him a prodigy, such as on the cover of Sports Illustrated.

However, he was famous for getting furious at people for this type of statement. He said that his success had literally nothing to do with talent. In fact, he said he wasn't born with any innate ability as a runner. Instead he credits 100% of his success with his legendary work ethic.

Do you have to be a genius to be a developer?

It's important to take the same approach that Prefontaine took as developers. If you fall into the trap of thinking that only geniuses can become good coders, it will most likely lead to quitting when tasks become challenging. This is because our minds constantly are searching for ways to work less. And if you believe that being a genius is a requirement for development, you will have a built-in excuse for faltering on your developer learning journey.

The way the mind works

In a comprehensive educational study published in Scientific American (http://www.scientificamerican.com/article/the-secret-to-raising-smart-kids1/), kids were broken into two groups and taken through some academic assignments. Both groups scored around the same for the assignments. One of the groups were praised by their parents and teachers, and the focus of the compliments centered around how smart and talented the kids were.

The second group of students were complimented in a different manner. Instead of complimenting students on their innate ability, students were complimented on how hard they worked.

After going through this cycle of compliments, the same two groups of students were presented with new, and very challenging assignments.

The first group of students, the ones that had been told that they were brilliant, ended up giving up and not completing the tasks that were assigned to them. However, the second group of students, the ones that were complimented on their hard work, performed dramatically better than group 1.

The reason

So why did two groups of students have such different results when, by all appearances, the students had the same level of actual skill?

The researchers concluded that the students from group 1 felt like the top priority was maintaining their genius status. So, they quit the second assignment early because they didn't want to look bad and tarnish the genius label that they had been given.

However, the second group of students didn't feel the pressure to maintain a genius status. Instead, they wanted to maintain their new reputations as hard workers. With this mindset, the second set of students worked through the challenging topics instead of giving up.

A smarter approach

So, instead of taking the mindset that you need to be a genius to become a developer, take the mindset that best developers are also the hardest working developers. With this approach, your potential for skill is literally limitless. You are 100% in control of how good you will become as a coder. And your success will completely be determined how hard (and how smart) you are willing to work.

Chapter 5. Effective Study Practices for Developers

Let's imagine that you're back in school and midterm exams are coming up. How would you study? Some common approaches might be:

Re-read the study materials or lecture notesHighlight and memorize the key termsGo over your notes constantly until test day comes

Those all sound like effective study practices. However, cognitive research has shown that many of the traditional study patterns that students have followed for decades simply do not work.

I didn't make up that list of study patterns. That's exactly what I used to do in preparing for exams. However, I discovered (after failing a number of tests) that these strategies failed miserably when it came to helping me to truly learn new concepts.

Why traditional study habits don't work

This type of approach to studying doesn't work because our minds don't function like computers. A computer can take in information and then spit it back out. However, our minds are more relational in nature.