SlideShare a Scribd company logo
Becoming a Mac/iOS
Developer
Robert Brown
@robby_brown
So You Want to be a Mac/
iOS Developer?

What to expect:
  This presentation contains everything I wish I knew
  two years ago
  I will focus on Mac and iOS development, but the
  ideas apply to other specialties
So You Want to be a Mac/
iOS Developer?

What not to expect:
  This is not an introduction to Objective-C, Xcode, or
  any other tools.
Beginner
Find a Mentor


Find one to three people who you can ask questions
When you hit a problem, spend an hour trying to figure
it out on your own
If you can’t solve it after an hour, ask your mentor
Find a Good Book

Mac/iOS:
 Objective-C Programming: The Big Nerd Ranch
 Guide
 Beginning iOS 5 Development
 iOS Programming: The Big Nerd Ranch Guide
Find a Good Book

The Pragmatic Bookshelf
  iOS SDK Development
  Core Data (out of print but available on Amazon)
  Core Animation
Find a Good Book

The Pragmatic Bookshelf
  iOS Recipes
  Designed for Use
  iPad Programming
Find a Good Book


Design:
  Design Patterns: Elements of Reusable Object-
  oriented Software
  The Design of Everyday Things
Find a Good Book


Maintenance:
  Refactoring: Improving the Design of Existing Code
  Code Complete
Find a Good Book

Management:
 Peopleware: Productive Projects and Teams
 The Mythical Man Month
 Driving Technical Change
Tutorials


 Apple Tutorial
 Stanford on iTunes
Stack Overflow


Q&A for developers by developers
Lots of developers have the same problems as you
If someone hasn’t already asked your question, you
can ask the community yourself
LinkedIn

Start right away, even if you don’t have a good résumé
Connections are more valuable than skills
  Skills are important too
Recruiters can’t find enough iOS developers
Link to blog and portfolio
Twitter

 @daringfireball: John Gruber—Straightforward Apple
 news and opinions. WARNING: Coarse language!
 @mattgemmell: Matt Gemmel—Great iOS dev and
 blogger. WARNING: Coarse language!
 @cocoanetics: Oliver Drobnik—Another great iOS
 developer and blogger.
Twitter

 @gzicherm: Gabe Zicherman—Authority on
 gamification. WARNING: Coarse language!
 @bdudney: Bill Dudney—Former Apple engineer and
 great author for The Pragmatic Bookshelf.
 @mzarra: Marcus Zarra—Author for The Pragmatic
 Bookshelf and Cocoa Is My GirlFriend.
Twitter

 @glyphish: Glyphish—Quality, inexpensive iOS icons.
 @macrumors: MacRumors—Most “reliable” Apple
 rumors.
 @macrumorslive: MacRumors—Live tweets Apple events.
 Good for events that aren’t broadcasted.
Twitter

 @darthvader: Darth Vader (obviously)—Great comic
 relief for nerds.
 @davedelong: Dave Delong—Apple employee and
 amazing developer.
 @robby_brown: Robert Brown—Hey, that’s me!
 Independent iOS contractor and blogger. No brownie
 points for following me.
Intermediate
Learn Best Practice

Most developers/books/tutorials don’t follow good
practice :(
Design patterns are generic best practices
Other best practices are language specific
Follow the naming conventions of the language
Develop a coding standard
Learn Best Practice


Find a good mentor
  It’s hard to learn best practice on your own
  Do code reviews and pair programming
Learn to Design Code


Design Pattern: formalized description of best practice
There is a vast difference between code that works
now and code that will continue to work in the future
Mac/iOS naturally pushes good design patterns
Learn to Design UI

Design for mobile first!
If your app doesn’t look good, no one will buy it even if
it has amazing functionality
The Mac/iOS community naturally gravitates toward
good UI/UX
Be aware of why and how other app are designed.
Learn to Work in Teams

Most interesting software is written by a team
Good communication skills are critical
Knowing how to design helps to subdivide projects
A good coder is not necessarily a good project
manager and vice versa
Learn to Work in Teams


Do code reviews and pair programming
Use a version control system (VCS)
  EVERY developer MUST use version control
VCS Clients


Tower         Cornerstone
Versions      Gitbox
SourceTree    Terminal (for real devs)
Github


Git is the standard VCS
Github is an open source community
Github has many reusable Mac/iOS components.
Blogging

Teaching others helps reinforce learning
Writing skills are critical
Great Book: Technical Blogging
My Blog: Rob's Program Knowledge Base
  A collection of obscure errors and elegant solutions
Expert
Find a Specialty

 Find an area that interests you and dig deep
 You should enjoy what you do
 Broad knowledge is critical, but deep knowledge gets
 the good jobs
 My specialties: Multithreading, Core Data, UI/UX Design
Be a Mentor


Teaching others helps reinforce learning
Return the favor for those who mentored you
Give Presentations

Teaching others helps reinforce learning
Communication skills are critical
Slide Share: presentation sharing service
My Presentations
Stack Overflow


Teaching others helps reinforce learning
Answer questions
Gain reputation in your community
Github


Contribute to one or more open source projects
Makes a great portfolio
Great way to collaborate with others and learn from
them
Master
Change the World

Create a startup
Write a book
Write for a magazine
Do something else crazy
Summary

Know who and where to get help
Network and develop good reputation
Have a portfolio both of code and writing
Be involved in the community
Help others
Want to Learn More?

Lots of links in previous slides
http://penny-arcade.com/patv/episode/so-you-want-
to-be-a-developer-part-1
http://penny-arcade.com/patv/episode/so-you-want-
to-be-a-developer-part-2
Questions?

More Related Content

More from Robert Brown

Pragmatic blocks
Pragmatic blocksPragmatic blocks
Pragmatic blocks
Robert Brown
 
Automatic Reference Counting
Automatic Reference CountingAutomatic Reference Counting
Automatic Reference Counting
Robert Brown
 
Grand Central Dispatch Design Patterns
Grand Central Dispatch Design PatternsGrand Central Dispatch Design Patterns
Grand Central Dispatch Design Patterns
Robert Brown
 
Grand Central Dispatch
Grand Central DispatchGrand Central Dispatch
Grand Central Dispatch
Robert Brown
 
Mac/iOS Design Patterns
Mac/iOS Design PatternsMac/iOS Design Patterns
Mac/iOS Design Patterns
Robert Brown
 
Core Data
Core DataCore Data
Core Data
Robert Brown
 
Quick Look for iOS
Quick Look for iOSQuick Look for iOS
Quick Look for iOS
Robert Brown
 

More from Robert Brown (8)

Anti-Patterns
Anti-PatternsAnti-Patterns
Anti-Patterns
 
Pragmatic blocks
Pragmatic blocksPragmatic blocks
Pragmatic blocks
 
Automatic Reference Counting
Automatic Reference CountingAutomatic Reference Counting
Automatic Reference Counting
 
Grand Central Dispatch Design Patterns
Grand Central Dispatch Design PatternsGrand Central Dispatch Design Patterns
Grand Central Dispatch Design Patterns
 
Grand Central Dispatch
Grand Central DispatchGrand Central Dispatch
Grand Central Dispatch
 
Mac/iOS Design Patterns
Mac/iOS Design PatternsMac/iOS Design Patterns
Mac/iOS Design Patterns
 
Core Data
Core DataCore Data
Core Data
 
Quick Look for iOS
Quick Look for iOSQuick Look for iOS
Quick Look for iOS
 

Recently uploaded

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
QADay
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
QADay
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 

Recently uploaded (20)

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 

Becoming a Mac/iOS Developer

  • 2. So You Want to be a Mac/ iOS Developer? What to expect: This presentation contains everything I wish I knew two years ago I will focus on Mac and iOS development, but the ideas apply to other specialties
  • 3. So You Want to be a Mac/ iOS Developer? What not to expect: This is not an introduction to Objective-C, Xcode, or any other tools.
  • 5. Find a Mentor Find one to three people who you can ask questions When you hit a problem, spend an hour trying to figure it out on your own If you can’t solve it after an hour, ask your mentor
  • 6. Find a Good Book Mac/iOS: Objective-C Programming: The Big Nerd Ranch Guide Beginning iOS 5 Development iOS Programming: The Big Nerd Ranch Guide
  • 7. Find a Good Book The Pragmatic Bookshelf iOS SDK Development Core Data (out of print but available on Amazon) Core Animation
  • 8. Find a Good Book The Pragmatic Bookshelf iOS Recipes Designed for Use iPad Programming
  • 9. Find a Good Book Design: Design Patterns: Elements of Reusable Object- oriented Software The Design of Everyday Things
  • 10. Find a Good Book Maintenance: Refactoring: Improving the Design of Existing Code Code Complete
  • 11. Find a Good Book Management: Peopleware: Productive Projects and Teams The Mythical Man Month Driving Technical Change
  • 12. Tutorials Apple Tutorial Stanford on iTunes
  • 13. Stack Overflow Q&A for developers by developers Lots of developers have the same problems as you If someone hasn’t already asked your question, you can ask the community yourself
  • 14. LinkedIn Start right away, even if you don’t have a good résumé Connections are more valuable than skills Skills are important too Recruiters can’t find enough iOS developers Link to blog and portfolio
  • 15. Twitter @daringfireball: John Gruber—Straightforward Apple news and opinions. WARNING: Coarse language! @mattgemmell: Matt Gemmel—Great iOS dev and blogger. WARNING: Coarse language! @cocoanetics: Oliver Drobnik—Another great iOS developer and blogger.
  • 16. Twitter @gzicherm: Gabe Zicherman—Authority on gamification. WARNING: Coarse language! @bdudney: Bill Dudney—Former Apple engineer and great author for The Pragmatic Bookshelf. @mzarra: Marcus Zarra—Author for The Pragmatic Bookshelf and Cocoa Is My GirlFriend.
  • 17. Twitter @glyphish: Glyphish—Quality, inexpensive iOS icons. @macrumors: MacRumors—Most “reliable” Apple rumors. @macrumorslive: MacRumors—Live tweets Apple events. Good for events that aren’t broadcasted.
  • 18. Twitter @darthvader: Darth Vader (obviously)—Great comic relief for nerds. @davedelong: Dave Delong—Apple employee and amazing developer. @robby_brown: Robert Brown—Hey, that’s me! Independent iOS contractor and blogger. No brownie points for following me.
  • 20. Learn Best Practice Most developers/books/tutorials don’t follow good practice :( Design patterns are generic best practices Other best practices are language specific Follow the naming conventions of the language Develop a coding standard
  • 21. Learn Best Practice Find a good mentor It’s hard to learn best practice on your own Do code reviews and pair programming
  • 22. Learn to Design Code Design Pattern: formalized description of best practice There is a vast difference between code that works now and code that will continue to work in the future Mac/iOS naturally pushes good design patterns
  • 23. Learn to Design UI Design for mobile first! If your app doesn’t look good, no one will buy it even if it has amazing functionality The Mac/iOS community naturally gravitates toward good UI/UX Be aware of why and how other app are designed.
  • 24. Learn to Work in Teams Most interesting software is written by a team Good communication skills are critical Knowing how to design helps to subdivide projects A good coder is not necessarily a good project manager and vice versa
  • 25. Learn to Work in Teams Do code reviews and pair programming Use a version control system (VCS) EVERY developer MUST use version control
  • 26. VCS Clients Tower Cornerstone Versions Gitbox SourceTree Terminal (for real devs)
  • 27. Github Git is the standard VCS Github is an open source community Github has many reusable Mac/iOS components.
  • 28. Blogging Teaching others helps reinforce learning Writing skills are critical Great Book: Technical Blogging My Blog: Rob's Program Knowledge Base A collection of obscure errors and elegant solutions
  • 30. Find a Specialty Find an area that interests you and dig deep You should enjoy what you do Broad knowledge is critical, but deep knowledge gets the good jobs My specialties: Multithreading, Core Data, UI/UX Design
  • 31. Be a Mentor Teaching others helps reinforce learning Return the favor for those who mentored you
  • 32. Give Presentations Teaching others helps reinforce learning Communication skills are critical Slide Share: presentation sharing service My Presentations
  • 33. Stack Overflow Teaching others helps reinforce learning Answer questions Gain reputation in your community
  • 34. Github Contribute to one or more open source projects Makes a great portfolio Great way to collaborate with others and learn from them
  • 36. Change the World Create a startup Write a book Write for a magazine Do something else crazy
  • 37. Summary Know who and where to get help Network and develop good reputation Have a portfolio both of code and writing Be involved in the community Help others
  • 38. Want to Learn More? Lots of links in previous slides http://penny-arcade.com/patv/episode/so-you-want- to-be-a-developer-part-1 http://penny-arcade.com/patv/episode/so-you-want- to-be-a-developer-part-2

Editor's Notes

  1. \n
  2. Tips are divided into categories: beginner, intermediate, expert, and master. The line between categories is fuzzy.\nThis is not an introduction to Objective-C or programming Mac/iOS.\n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. Usually there is good reason why developers stray from good practice, but this is rarely stated. Even more rare is to give a full example of the difference. \n
  21. \n
  22. \n
  23. Functionality is critical too.\nThere is a great tendency to copy other app’s UI design without asking why or how. A design that works for one app may not be appropriate for another. \n
  24. Programming in a team is very different than working alone.\nYou should be easy to get along with. \nEven open source projects need to follow good team structure and practice.\n
  25. \n
  26. \n
  27. \n
  28. Knowing how to use a client and the terminal is very valuable. Clients can save a lot of time, prevent mistakes, and visualize information better. However, there are times when you may not have your favorite client available or the client may not support a needed feature. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n