O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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

Book Description

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.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. Skill Up: A Software Developer's Guide to Life and Career
    1. Table of Contents
    2. Skill Up: A Software Developer's Guide to Life and Career
    3. Credits
    4. About the Author
    5. www.PacktPub.com
      1. eBooks, discount offers, and more
        1. Why subscribe?
    6. Customer Feedback
    7. Preface
      1. What this book covers
      2. Who this book is for
      3. Conventions
      4. Reader feedback
      5. Customer support
        1. Errata
        2. Piracy
        3. Questions
    8. I. Coder Skills
      1. 1. Discovering the Tipping Point for Developers
        1. Tipping point for developers
          1. My own experience
          2. The doubt machine
          3. The painful process
          4. The tipping point(s)
            1. The first tipping point
            2. The second tipping point
            3. The secret
            4. The book
        2. The solution
      2. 2. Are Developers Born or Made? – Debunking the Myth of Prodigies
        1. Are prodigies real?
          1. The Mozart case study
          2. Are developers born or made?
          3. The tipping point
        2. Why we love the prodigy myth
      3. 3. Do You Have to Be a Genius to Be a Developer?
        1. The running man
        2. Do you have to be a genius to be a developer?
          1. The way the mind works
            1. The reason
            2. A smarter approach
      4. 4. How to Study and Understand Complex Topics?
        1. A system for how to study
      5. 5. Effective Study Practices for Developers
        1. Why traditional study habits don't work
        2. An effective study practices case study
          1. The reification example
        3. The hard way
          1. Additional negative effects
        4. The comprehensive study system
        5. Summary
      6. 6. Defining Deep Work and What It Means for Developers
        1. Definition of deep work
          1. The deep work strategy for developers
            1. Taking action
            2. Removing distractions
            3. Study hard and smart
        2. Multiple sessions
        3. Summary
      7. 7. Task Switching Costs for Developers
        1. A system for decreasing task switching costs
      8. 8. How to Use Willpower Limits Instead of Letting Them Use You?
        1. What are willpower limits?
          1. How many decisions do you make each day?
          2. Why is willpower important?
          3. Are willpower limits real?
          4. When the willpower well runs dry
          5. Saving up willpower
            1. One outfit to rule them all
            2. Being a copycat
          6. Focusing willpower
        2. Summary
      9. 9. Cramming Versus Consistent Study and a Study System that Works
      10. 10. Is Reading Important for Developers?
        1. Why is reading important for developers?
          1. CEOs and reading
          2. Compounded learning
            1. A compounded learning case study
          3. The CEO who didn't have time to read
          4. My reading system
          5. The reading schedule
          6. Audio books are books too!
          7. Books are too expensive
        2. Summary
      11. 11. Learning How to Code – Getting Past Skill Plateaus
        1. What is a learning plateau?
          1. False ceiling
        2. Getting past skill plateaus
          1. Proper information/resources
          2. Best practices
          3. Challenging/new tasks
          4. Frustration = skill
        3. Summary
      12. 12. Developer Learning Curve – Why Learning How to Code Takes So Long
        1. What is the learning curve?
        2. The developer learning curve
        3. Liftoff
        4. The twilight zone
        5. The zone
        6. A unique journey
        7. Summary
      13. 13. Slowing Down to Learn How to Code Faster
        1. Learn how to code faster
          1. Our default mind
          2. Hacking the mind
            1. Slowing it down
            2. Bend it like Beethoven
            3. From classical music to coding
        2. A practical system
      14. 14. Mental Models for Learning How to Code and Improve as a Developer
        1. Mental models for the Kouros
          1. What are mental models?
          2. Mental models for developers
        2. Summary
      15. 15. A Developer's Guide for Hacking Procrastination to Achieve Success
        1. Root causes of procrastination
        2. Hacking procrastination
          1. Hacking perfectionism
          2. Hacking the fear of success
          3. Hacking the plan
        3. Summary
      16. 16. The Problem with Procrastination for Developers
        1. The problem with procrastination
          1. Instant gratification
          2. Baby steps to knock out procrastination
            1. Baby coding steps
      17. 17. Practical Ways to Use the Pomodoro Technique as a Developer
        1. Practical ways to use the Pomodoro Technique
          1. Taking a break
          2. Lifestyle versus fads
            1. A lifestyle of productivity
        2. Practical implementation
      18. 18. The Power of Making Mistakes – Learning by Failing
        1. The secret weapon to mastery – making mistakes
          1. Making mistakes – memory steroids
          2. Mistakes force learning
          3. Mistakes kill pride
        2. Summary
      19. 19. Learn How to Code – The Guide to Memorization
        1. The guide to memorization
          1. Repetition
          2. Smarter, not harder
            1. Visual mental mapping
            2. Short-term versus long-term memory
            3. Implementing visual mental mapping
            4. Taking a real-world example
            5. Finding patterns
            6. Copy and paste is the enemy
        2. Not everything has to be memorized
      20. 20. A System for Learning a New Programming Language
      21. 21. Development Study Tips – Reverse Note-Taking
        1. The problem with traditional note-taking
          1. Reverse note-taking
          2. Benefits of reverse note-taking
            1. Narrowed focus
            2. Story-based mindset
            3. Forced repetition
        2. Summary
    9. II. Freelancer Skills
      1. 22. Tips for Organically Growing a Freelance Business
        1. Organically growing a freelance business
          1. Referral requests
          2. Blogging
          3. Expert positioning
          4. Open source contribution
          5. Social media marketing
        2. Summary
      2. 23. Freelancing Tips – Knowing When to Fire a Client
        1. My urgent client
          1. When to fire a client
            1. #1 – being treated like an employee
            2. #2 – tyranny of urgent
            3. #3 – toxic environment
        2. The joy of firing a client
      3. 24. Dodging Silver Bullets for Scalable Freelance Projects
        1. The problem with silver bullets
          1. Silver bullet customization
          2. Becoming a sharp shooter with code libraries
      4. 25. A Freelance Guide to Managing Advanced Features
        1. Managing advanced features
        2. The talent pool
        3. The process
          1. Kanban
        4. The result
        5. Summary
        6. A caveat
      5. 26. Freelancer Interviews – Practical Tips for Taking Over a Legacy Application
      6. 27. Five Tips for Taking Over a Legacy Application
        1. Tips for taking over a legacy application
          1. Creating a test suite
          2. Adding new features via TDD
          3. Breaking out specific features into microservices
          4. DRY up the codebase
        2. Summary
      7. 28. Guide to Freelancing – Starting Over Versus Refactoring
        1. The legacy scenario
        2. Starting over versus refactoring
          1. #1 – removing the fear factor
          2. #2 – analyzing the 80/20 principle
          3. #3 – building an automated bug list
          4. #4 – becoming the client
        3. When should you start over?
        4. Summary
      8. 29. Should You Use TDD on Freelance Projects? – Comparing Quality Versus Speed
        1. Quality versus Speed
        2. TDD on freelance projects
          1. Making the decision
            1. Giving no choice
            2. Letting the client decide
            3. Using common sense
      9. 30. Automating Client Updates as a Freelance Developer
        1. Importance of daily updates
          1. An example of client update
          2. Automating client updates
          3. Version control to the rescue
        2. Summary
      10. 31. Freelance Requirement Elicitation – A Guide for Feature Development
        1. Freelance requirement elicitation
          1. How it started
          2. The build
          3. The problem
          4. Who was at fault?
        2. A better way
          1. Step 1
          2. Step 2
        3. A better ending
        4. Summary
      11. 32. How to Remotely Demo Work for Freelance Clients?
        1. Why proper demonstrations are important
        2. Review of services to remotely demo work
          1. Screencast
          2. A remote desktop
          3. PowerPoint
        3. Summary
      12. 33. Defining Project Success as a Freelance Developer
        1. A clear end
          1. What is scope creep?
          2. When scope creep isn't scope creep
          3. When scope creep goes badly
            1. Based on requirements
            2. Based on a story
            3. The sign off
        2. Summary
      13. 34. Top Project Management Tools for Freelancers
        1. Top project management tools
          1. Basecamp
          2. Trello
          3. LeanKit
          4. ProWorkflow
          5. Wrike
          6. GitHub
        2. Summary
      14. 35. Top Freelance Bookkeeping Options for Developers
        1. Freelance bookkeeping options
          1. FreshBooks
            1. How it works
            2. FreshBooks additional features
            3. Weaknesses
          2. QuickBooks
          3. NetSuite
        2. Summary
      15. 36. Learning the Secret to Get New Clients as a Freelancer
        1. Where to find new clients
        2. The challenge in getting new clients with outsourcing services
        3. Getting new clients as a freelancer
          1. Proposal material
          2. Sending out constant proposals
          3. The result
        4. Summary
      16. 37. Managing Client Conflicts as a Freelancer
        1. Strategies for managing client conflicts
      17. 38. Examples of Freelance Portfolios That Help Acquire New Clients
        1. Examples of freelance portfolios
          1. Social network utility
          2. An API tool
          3. An accounting application
          4. A scheduling application
          5. A frontend application
      18. 39. Importance of Test-Driven Development for Coders
        1. Importance of test-driven development
        2. Summary
      19. 40. SEO Best Practices and Strategies for Freelancers
        1. SEO best practices tutorial
          1. Content is king
          2. Creating an XML sitemap
          3. Mixing text, images, and videos
          4. Managing your site speed
          5. Site responsiveness
          6. Backlinks
          7. Focused content
        2. Summary
      20. 41. Client Communication Freelancing Tips
        1. A system to maintain proper client communication
        2. Summary
      21. 42. Outsource Web Developers Properly with System-Based Processes
        1. A system to manage outsourced web developers
        2. Summary
      22. 43. How to Create Accurate Freelance Bids?
        1. Summary
      23. 44. Freelancer Tips – Three Ways to Get New Clients
        1. Freelancing services
        2. LinkedIn
        3. Referrals
        4. Summary
    10. III. Career Skills
      1. 45. Should I Learn to Code? – A Balanced Perspective on Programming
        1. Should I learn to code? – a balanced look at both sides
        2. Summary
      2. 46. Following Your Passion – Good or Bad Advice for Developers?
        1. Following your passion – a case study
        2. Summary
      3. 47. How to Learn to Code from Scratch? – A Practical Strategy
        1. Small bites
        2. Tutorials
        3. Reading
        4. Real-world projects
        5. Coding is hard
        6. But you can learn programming
      4. 48. How to Choose a Developer Specialty?
        1. How to choose a developer specialty?
          1. #1 – the full stack developer
          2. #2 – the server-side developer
          3. #3 – the frontend developer
          4. #4 – the mobile developer
          5. #5 – the data scientist
        2. Making the decision
      5. 49. How to Choose Your Next Programming Language?
        1. How to pick a programming language?
          1. The next job you want
          2. Your specialty
            1. Specialty-based mapping
        2. Summary
      6. 50. Developer Soft Skills – Learning How to Gain an Edge in the Marketplace
        1. Developer soft skills
          1. Writing
          2. Conversation
            1. Conversation tips
          3. Management
          4. Design
          5. Public speaking
            1. Becoming a better public speaker
        2. The importance of soft skills
      7. 51. Developer Learning Options – A Practical Analysis
        1. Degrees of programming expertise
        2. Becoming a professional developer
          1. Developer bootcamps
          2. Is this practical?
        3. Improving your skill in your current profession
          1. Is this practical?
        4. Learning for fun or as a hobby
        5. Summary
      8. 52. Is it Possible to Lose Your Coding Skills?
        1. Summary
      9. 53. Is Writing Bad Code Immoral for Developers?
        1. How to write better code
        2. Summary
      10. 54. Inspirational Programming Advice from Howard Roark
      11. 55. Best Practices Versus Creativity as a Developer
      12. 56. A Practical Guide to Approaching Project Development
        1. Student question
        2. Strategies to approaching project development
          1. Planning a feature from start to end
          2. Moving from requirements to stories
          3. Starting with a base case
          4. Fear of the unknown
            1. Moving fast and breaking things
          5. Battling procrastination
          6. Small, practical steps
          7. Getting unstuck
            1. Application bugs
            2. Messages over models
      13. 57. How to Practice Programming Techniques and Improve as a Developer?
        1. Engaging in pair programming
        2. Utilizing open source software
        3. Visiting the DailyProgrammer subreddit on Reddit
        4. Taking online courses
        5. Code katas
        6. Summary
      14. 58. What Does It Take to Become a Great Developer?
        1. Tips for becoming a great developer
          1. Working through difficult features
          2. Community contribution
          3. Artistry
          4. Craftsmanship
            1. Steve Jobs's craftsmanship
          5. Adapting to change
          6. Tireless learning
        2. Summary
      15. 59. How to Stay Sharp as a Developer?
        1. Tips to stay sharp as a developer
          1. #1 – coding exercises
            1. Example coding exercises
          2. #2 – teaching others to code
            1. How does this apply to development?
          3. #3 – reading
          4. #4 – newsletters
          5. #5 – tutorials
        2. Summary
      16. 60. Developer Resume Tips – How to Create an Effective Resume?
        1. Developer resume tips
          1. Keep it simple
          2. Keep it relatable
          3. Keep it professional
        2. Summary
      17. 61. Developer Salary Negotiation Strategies
        1. Knowing your skill set
        2. Knowing the industry
        3. Knowing the organization
        4. Researching salary rates
      18. 62. Best Questions to Ask During a Job Interview
        1. Best questions to ask during a job interview
        2. Poor questions to ask during a job interview
        3. Summary
      19. 63. Answering in an Impossible Interview
        1. Questions
        2. Answering impossible interview questions – case studies
      20. 64. Greatest Weakness Answers for Coding Interviews
        1. Bad answers to your greatest weakness
        2. Good answers to your greatest weakness
      21. 65. Enterprise Software Job Strategy and Guide
        1. Summary
    11. Index