Using Git with Xcode, Part I
A few years ago I wrote a series of posts about getting Subversion working with Xcode. Now that the latest versions of Xcode now support Git, I figured I would put together a tutorial about getting Git working with Xcode. Having worked with Git for only a short while, I find it is a much easier source control management system to work with compared to Subversion and others.
Getting Started with Git
If you are brand new to Git, you can get a quick overview of the product and download it by visiting the Git official website. One of the best overviews and tutorials that I have found is at the Git Reference website. The tutorial walks you through how Git was conceived and introduces you to some of the most common commands.
Creating a Local Git Repository for NEW Xcode Projects
The easiest way to put a new Xcode project under version control within Git is to select the Create local git repository for this project check box when creating your project in Xcode. You can verify that this project is under version control by looking for the .git directory under the project. You will need to use Terminal to browse to your project folder and perform a ls -a to see the directory.
![]()
Creating a Local Git Repository for Existing Xcode Projects
To add an existing project to a new local Git repository will require you to use the command line. Open Terminal and navigate to your project directory. You should first create a .gitignore file in your project directory. This file will tell Git to not track certain file patterns.
Here is a sample .gitignore file for Xcode projects:
.DS_Store
*.swp
*~.nib
build/
*.pbxuser
*.perspective
*.perspectivev3
xcuserdata
If you walked-through the tutorial I mentioned above in Getting Started with Git, these commands should be familiar to you.
1. Initialize a new Git repository
2. Add project files to Git repository
3. Perform an initial commit of files to Git repository
4. Add repository to Xcode
Your code should now be under version control; however, now we need to tell Xcode about the local repository we just created. Open Xcode and from the Window menu, open the Organizer.

The Organizer lists all registered devices, projects, snapshots, documentation and version control repositories. Click on the Repositories icon.
You need to create a new repository, click on the plus (+) in the bottom left of the window and select Add Repository…

In the Add a Repository wizard, enter the following:
- 1. Name – This is typically the name of the project or collection of projects.
- 2. Location – Since we are adding a local repository, this the absolute path of your local repository or project.
- 3. Type – This should be Git in this situation.

After you click Next, your local repository should be listed on the left-hand side of the screen. Clicking on it, should list an entry for your initial (or subsequent) commits and the files modified.
You should now be able to make changes to your project within Xcode and commit your changes using the Xcode GUI. In the follow up posts to this series, I will walk you through using the Xcode GUI to commit changes and also show you how to setup a remote repository on BitBucket.
0The Leadership of Steve Jobs

A few days prior to the passing of Steve Jobs, I did a presentation on leadership incompetence – focusing on Steve Jobs.
Did I just say that Steve Jobs was an incompetent leader? Yes, but not the Steve Jobs that brought us the iPhone, iPad, iMac, iTunes, etc.
The leadership incompetence that I am referring to goes back to Apple’s early days, when they were still called Apple Computer Inc. One of the best portrayals of the early days of Steve Jobs and Bill Gates was in the docudrama The Pirates of Silicon Valley released in 1999. This movie showed us a Steve Jobs who was not the CEO of Apple, but rather the head of the Macintosh Division.
Before
Take a look at this following clip from the movie which shows what kind of manager/leader Steve Jobs was at the time:
The Steve Jobs portrayed in the video was a results-only manager. His management style was temperamental and erratic. He did not care about his employees. He just wanted results and wanted to see the success of the Macintosh line.
Aftermath
What happened to the company afterwards?
The Apple Macintosh was released and was well received.
What happened to Steve Jobs?
Steve Jobs, co-founder of Apple Computer, Inc., was forced to resign from the company. So what happened, after he resigned? Steve Jobs went on to found NeXT, a rival computer company that would later be bought by Apple and whose operating system would be the basis for Mac OS X. Steve Jobs would later return to Apple almost 10 years later and serve as CEO (until August 2011).
After
I don’t have a video of Steve Jobs leading in action, so I will have to take his word for it. In this interview at All Things Digital D8 Conference, Steve Jobs describes what he does all day at Apple.
Analysis
This video portrays Steve Jobs as a competent leader.
Compare this to the earlier video – note that what Steve Jobs talks about is: leading teams and communicating ideas. While the final products are still important to Steve Jobs, the process of getting there is also important.
Why in the early days of Apple was Steve Jobs an incompetent leader?
- Lack of business knowledge?
- Single focus – Macintosh line of computers?
- Lack of interpersonal skills?
If you watch the entire movie – Pirates of Silicon Valley, you will see that although Steve Jobs was a visionary, he was not a people-person.
Conclusion
Although you can lead a project to success, it does not mean that you are a successful leader. To be a competent leader, you must be able to accomplish goals, provide support to your team, and receive empowerment from your team.
0Keyword Counts of Popular Programming Languages
In a previous post, 10 Problems with ‘Hello World”, I made a remark that a ‘Hello World’ program only teaches you on average a single keyword. Without doing any research, I asserted that there are hundreds or thousands or keywords in a given programming language – until someone called me out on it.
What I found couldn’t be further from the truth.
Based on a list of the Most Popular Programming Languages, I researched how many keywords and reserved words each language had. I am certain my counts are not exact and depending on specific implementations and versions of languages – the keyword counts may vary.
Here are my findings in descending keyword/reserved word count:
VB.NET
Keyword/Reserved Word Count: 159
| AddHandler | AddressOf | Alias | And | AndAlso |
| As | Boolean | ByRef | Byte | ByVal |
| Call | Case | Catch | CBool | CByte |
| CChar | CDate | CDbl | CDec | Char |
| CInt | Class | CLng | CObj | Const |
| Continue | CSByte | CShort | CSng | CStr |
| CType | CUInt | CULng | CUShort | Date |
| Decimal | Declare | Default | Delegate | Dim |
| DirectCast | Do | Double | Each | Else |
| ElseIf | End | EndIf | Enum | Erase |
| Error | Event | Exit | False | Finally |
| For (in For…Next) | For Each…Next | Friend | Function | Get |
| GetType | GetXMLNamespace | Global | GoSub | GoTo |
| Handles | If | Implements | Imports | In |
| Inherits | Integer | Interface | Is | IsNot |
| Let | Lib | Like | Long | Loop |
| Me | Mod | Module | MustInherit | MustOverride |
| MyBase | MyClass | Namespace | Narrowing | New |
| Next | Not | Nothing | NotInheritable | NotOverridable |
| Object | Of | On | Operator | Option |
| Optional | Or | OrElse | Out | Overloads |
| Overridable | Overrides | ParamArray | Partial | Private |
| Property | Protected | Public | RaiseEvent | ReadOnly |
| ReDim | REM | RemoveHandler | Resume | Return |
| SByte | Select | Set | Shadows | Shared |
| Short | Single | Static | Step | Stop |
| String | Structure | Sub | SyncLock | Then |
| Throw | To | True | Try | TryCast |
| TypeOf…Is | UInteger | ULong | UShort | Using |
| Variant | Wend | When | While | Widening |
| With | WithEvents | WriteOnly | Xor | #Const |
| #Else | #ElseIf | #End | #If |
Source: http://msdn.microsoft.com/en-us/library/dd409611.aspx
C++
Keyword/Reserved Word Count: 144
registerreinterpret_castreturnsafecastsealed
| __abstract | __alignof | __asm | __assume | __based |
| __box | __cdecl | __declspec | __delegate | __event |
| __except | __fastcall | __finally | __forceinline | __gc |
| __hook | __identifier | __if_exists | __if_not_exists | __inline |
| __int16 | __int32 | __int64 | __int8 | __interface |
| __leave | __m128 | __m128d | __m128i | __m64 |
| __multiple_inheritance | __nogc | __noop | __pin | __property |
| __raise | __sealed | __single_inheritance | __stdcall | __super |
| __thiscall | __try/__except | __try/__finally | __try_cast | __unaligned |
| __unhook | __uuidof | __value | __virtual_inheritance | __w64 |
| __wchar_t | wchar_t | abstract | array | auto |
| bool | break | case | catch | char |
| class | const | const_cast | continue | decltype |
| default | delegate | delete | deprecated | dllexport |
| dllimport | do | double | dynamic_cast | else |
| enum | event | explicit | extern | false |
| finally | float | for | for each, in | friend |
| friend_as | gcnew | generic | goto | if |
| initonly | inline | int | interface | interior_ptr |
| literal | long | mutable | naked | namespace |
| new | noinline | noreturn | nothrow | novtable |
| nullptr | operator | private | property | protected |
| public | ref | selectany | short | signed |
| sizeof | static | static_assert | static_cast | struct |
| switch | template | this | thread | throw |
| true | try | typedef | typeid | typename |
| union | unsigned | using | uuid | value |
| virtual | void | volatile | while |
Source: http://msdn.microsoft.com/en-us/library/2e6a4at9(v=VS.100).aspx
C#
Keyword/Reserved Word Count: 98
| abstract | as | base | bool | break |
| byte | case | catch | char | checked |
| class | const | continue | decimal | default |
| delegate | do | double | else | enum |
| event | explicit | extern | false | finally |
| fixed | float | for | foreach | goto |
| if | implicit | in | int | interface |
| internal | is | lock | long | namespace |
| new | null | object | operator | out |
| override | params | private | protected | public |
| readonly | ref | return | sbyte | sealed |
| short | sizeof | stackalloc | static | string |
| struct | switch | this | throw | true |
| try | typeof | uint | ulong | unchecked |
| unsafe | ushort | using | virtual | void |
| volatile | while | add | alias | ascending |
| descending | dynamic | from | get | global |
| group | into | join | let | orderby |
| partial | remove | select | set | value |
| var | where | yield |
Source: http://msdn.microsoft.com/en-us/library/x53a06bb(v=VS.100).aspx
PHP
Keyword/Reserved Word Count: 56
| abstract | and | array() | as | break |
| case | catch | cfunction | class | clone |
| const | continue | declare | default | do |
| else | elseif | enddeclare | endfor | endforeach |
| endif | endswitch | endwhile | extends | final |
| for | foreach | function | global | goto |
| if | implements | interface | instanceof | namespace |
| new | old_function | or | private | protected |
| public | static | switch | throw | try |
| use | var | while | xor | __CLASS__ |
| __DIR__ | __FILE__ | __LINE__ | __FUNCTION__ | __METHOD__ |
| __NAMESPACE__ |
Source: http://php.net/manual/en/reserved.keywords.php
Java
Keyword/Reserved Word Count: 53
| abstract | continue | for | new | switch |
| assert | default | goto | package | synchronized |
| boolean | do | if | private | this |
| break | double | implements | protected | throw |
| byte | else | import | public | throws |
| case | enum | instanceof | return | transient |
| catch | extends | int | short | try |
| char | final | interface | static | void |
| class | finally | long | strictfp | volatile |
| const | float | native | super | while |
| true | false | null |
Source: http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
Ruby
Keyword/Reserved Word Count: 42
| BEGIN | END | __ENCODING__ | __END__ | __FILE__ |
| __LINE__ | alias | and | begin | break |
| case | class | def | defined? | do |
| else | elsif | end | ensure | false |
| for | if | in | module | next |
| nil | not | or | redo | rescue |
| retry | return | self | super | then |
| true | undef | unless | until | when |
| while | yield |
Source: http://www.ruby-doc.org/docs/keywords/1.9/
Javascript
Keyword/Reserved Word Count: 29
| break | const | continue | delete | do |
| while | export | for | function | if |
| else | import | in | instanceOf | label |
| let | new | return | switch | this |
| throw | try | catch | typeof | var |
| void | while | with | yield |
Source: http://www.aptana.com/reference/html/api/JSKeywords.index.html
Python
Keyword/Reserved Word Count: 29
| and | del | for | is | raise |
| assert | elif | from | lambda | return |
| break | else | global | not | try |
| class | except | if | or | while |
| continue | exec | import | pass | yield |
| def | finally | in |
Source: http://docs.python.org/release/2.3.5/ref/keywords.html
If you find any errors or omissions, please let me know. If there is a particular language I did not include, please share the keyword/reserved word source and I would be happy to add it.
0My Experience at Orlando Code Camp 2011
As a follow up to last years post: My Experience at Orlando Code Camp 2010, I thought I would share my experience at Orlando Code Camp 2011.
This year I took away a lot more, compared to last year as I tried expose myself to more variety by focusing on the Showcase sessions and not sessions that were “how to do this with < insert technology here >”.
There was a great variety of tracks this year:
- Showcase
- Fundamentals
- Web
- Azure
- Design and Animation
- Languages
- Patterns
- Services & More
- Collaboration
- Visual Studio & ALM
- Silverlight
- SQL Server
- Windows Phone 7
- DotNetNuke Development
- DotNetNuke Design
- DotNetNuke Administration
I know that Code Camps are Microsoft-centric, but the one thing that continues to bother me (I see it at .NET User Group meetings also), is the Microsoft Fanboy attitude.
Sorry, I do not think that Windows Phone 7 is an “iPhone Killer” nor is it an “Android Killer.” I also refuse to use Bing as my primary search engine – Google works just fine thank you. It was comforting to see some iPads and MacBooks among the attendees.

Orlando Code Camp Keynote
Here is the breakdown of each session I attended:
Session 1
Applied Object-Oriented Design Principles
Presented by: Jay HIll
Jay presented several design patterns that are based on Bob Martin’s SOLID Principles.
Take Away: There are many design patterns that can be used in practice that extend beyond those originally written by the Gang of Four.
- Null Object Pattern – this is the assurance that you will never receive a NULL object, therefore avoiding the dreaded ArgumentNullException.
- Enumeration Classes
- Nested Classes
- Composite Pattern
– a way to extend basic enums and prevent enum growth.
– a reason to use nested classes in your code.
– treating objects as if they are a single instance.
Links
Session 2
Decoupled UI
Presented by: Page Horton
Page demonstrated an application that completely separates the UI from Business Logic.
Take Away
- Decoupled UI allows for better testability of your application.
- Use JSON for messaging vs. XML Web Services
- Utilize Adapter Pattern for creating applications that run on multiple platforms (e.g. iOS, Android)
- Use MVVM Pattern
- Use Managed Extensibility Framework (MEF)
Links
Session 3
Visual Studio 2010 Tips and Tricks
Presented by: Sean Laberee
Sean demonstrated several new features and shortcuts available in Visual Studio 2010.
Take Away: The Extension Manager can be used to install additional functionality into Visual Studio 2010. Including:
- Start Page Project Template
- Productivity Power Tools
- Visual Studio Color Theme Editor
Session 4
Intro to MVC 3
Presented by: Ken Tucker
Ken demonstrated creating a MVC website that went a little bit beyond the MVC Tutorials at ASP.NET.
Take Away: MVC 3 can be added to Visual Studio 2010 by installing the Microsoft Web Platform Installer 3.0.
Links:
Session 5
Design for Developers: Bad Design Kills Good Projects
Presented by: Diane Leeper
Diane demonstrated six things that can decide the fate of your web project.
Take Away: Developers are typically not known for their design capabilities (see 10 Resources for Design-Challenged Programmers), so it was a wake-up call to hear things from a designers standpoint.
Links
- dianeleeper.com
- Designing Web Interfaces: Principles and Patterns for Rich Interactions
- MyFonts
- COLOURlovers
- Adobe kuler
- ColoRotate
Session 6
Meet the Visual Studio Team!
Presented by:
- Adrian “Spotty” Bowles – Compilers QA
- Prakash Balasubramanian – Compilers QA
- Sayed Ibrahim Hashimi – VS Web PM
- Kevin Halverson – Compilers QA (VB/C#)
- Sean Laberee – Editor/VB/C# IDE PM

The Visual Studio Team answered audience questions:
Question: What does a Program Manager do?
Answer: A Program Manager is the “voice of the customer” who tries to understand what the end-users want.
Question: When is the next version of Visual Studio due out?
Answer: The typical version lifecycle for Visual Studio is 18 months.
Question: How is Microsoft moving towards combining the functionalities of Expression Blend and Visual Studio?
Answer: They are looking to make Expression Blend more developer friendly and Visual Studio more designer friendly.
Question: Where can I report issues or make suggestions?
Answer: Microsoft Connect
Question: Are there plans to include Silverlight or XNA updates in Web Platform Installer?
Answer: No, Silverlight and XNA have a different product lifecycle than Visual Studio.
Question: Why is Visual Studio 2010 so slow?
Answer: The Visual Studio team is currently looking at ways in to improve memory management. Other factors could be:
- Running VS 2010 in Windows XP – doesn’t support video hardware acceleration
- Installation of multiple extensions
- Windows Forms Designer is known to leak memory on rebuilds
Question: Will future versions of Visual Studio support Design view of MVC projects similar to Web Forms?
Answer: The Visual Studio team is currently looking at ways to display a view in design mode.
Question: Will Visual Studio be offered in the cloud – similar to Office 360?
Answer: See Try F# from Microsoft Research.
Question: Will the next version of Visual Studio include the Ribbon?
Answer: Not in the short-term. The next release will have more simplified menus. Future releases will have a variation of the ribbon, but won’t be identical to the one found in MS Office.
Question: What can I do to prevent repositioning of windows after compiling?
Answer: Visual Studio 2010 supports multi-monitor support. Also the window positions will vary in Design Mode vs Debug Mode.
Overall, it was a great experience to expose myself to different approaches and ways of thinking that are presented in a classroom setting rather than a book or a blog.
If you have the opportunity to check out a Code Camp near you, I highly recommend it.
1Write Your Own Programmers Credo
There’s an old joke that’s been floating around the web for over 10 years called: Computer Programmer’s Credo #73, which says:
Documentation is like sex:
When it is good, it is VERY good;
and when it’s bad, it’s still
better than nothing at all.
Putting humor aside, if you examine Computer Programmer’s Credo #73 – it describes something that all computer programmers face at one time or another.
Think about the last time that you worked on or inherited code that didn’t belong to you. How many times did you ask yourself:
Why did this person write this in this particular way?”
or
Is there a reason why they chose to implement this so inefficiently?
If the original author of the code is still around, you could ask them – but what are the odds that they would remember why they did it? Without having documentation in code, all you can do is read the code at face value.
What exactly is a credo?
A credo is more than a cute little saying about a particular subject matter. It is best described as a philosophy or words by which you live or work.
I assume the author of the Computer Programmer’s Credo #73, was somebody who had to constantly modify or rewrite code that wasn’t his or hers. If the author appreciated good code documentation, does this mean that he or she implemented the same practices in his or her own code?
A credo should be something that you strongly believe and actually implement in your habits. It is not a complaint about how someone else does something, but you also do that same something at one point or another.
Get Started with Your Programmers Credo
Think about what you appreciate about programming:
Do you:
- Appreciate good code documentation?
- Implement best practices?
- Design your code for reusability?
- Learn new programming languages and frameworks
- Encourage Jr. programmers to grow and learn from Sr. programmers
These are just a few questions that you can ask yourself about your programming habits.
Take a few minutes to write down several things that you as a programmer believe as your philosophy. Just keep in mind that whatever you write down, should be something that you practice.
0RepeatGeek Theme Update
This weekend I updated the framework of this blog to Sufffusion.
I wanted a theme framework that was:
- Easily Customizable
- Clean Looking
- Cross-browser compatible (XHTML Compliant)
- FREE
Hello Suffusion
Suffusion had all of these things and more that I have yet to take advantage of. Out of the box it supports the following:
- 17 Pre-defined Skins
- Pre-defined widgets and widget areas
- Magazine style blog template
- WordPress Architecture Customization: Navigation Menus, Pagination, Excerpts, Comments
- Multiple Browser Support
If you are unfamiliar with Suffusion, it is a relatively new theme (Just over 1 year old in development).
Suffusion is advertised as just a WordPress theme, but it truly is a Framework that allows for rapid web development. Almost every feature can be customized in an easy-to-use graphical interface. After you make your changes you can export your customization to a file for version control, importing into production, etc.
Suffusion has some defined action and filter hooks that I am going to experiment with next to add some social media widgets to my posts.
Check out the Showcase to see websites built with Suffusion.
Goodbye Thematic
Previously I was using the Thematic Framework with a customized child theme. For a while, the theme suited me well and was very robust. However, with every update of WordPress, I would seem to lose some functionality – plugins would stop working, navigation links would disappear, search box would disappear, etc.
Thematic is a framework for those who like to get your hands dirty – all your customizations are made through a child theme and requires extensive troubleshooting if you are trying to retrofit a non-thematic theme to the Thematic framework.
So far I am very happy with Suffusion. I guess we’ll see how well the theme holds up to upgrades. Until then, Goodbye Thematic!
06 Books to Inspire Creativity in Programmers
I mentioned in a previous post that the secret to success as a programmer is original and creative thinking.
So what if you are not creative? Don’t worry, you’re not alone. In fact, most programmers you meet lack creativity. The reason being is that creativity requires a different type of thought compared to the objective, logical thought of programming.
Luckily, creative thinking is something that can be learned. I have chosen a list of books to inspire your creativity.
Note: This list has no particular order.
Pragmatic Thinking and Learning: Refactor Your Wetware
Andy Hunt
This is a creativity book specifically made for programmers, by a programmer (one of the authors of The Pragmatic Programmer: From Journeyman to Master).
Thinkertoys: A Handbook of Creative-Thinking Techniques
Michael Michalko
Michael Michalko takes you through several visual puzzles to force you to change your way of thinking. This can often be difficult task for those with little creativity.
Thinkpak: A Brainstorming Card Deck
Michael Michalko
Ok, so this one isn’t really a book. Building upon the skills learned in Thinkertoys, Michael Michalko created a deck of cards that you can use to inspire creative thinking and transform your ideas into solutions.
Cracking Creativity: The Secrets of Creative Genius
Michael Michalko
The last of three books (resources) by Michael Michalko. This time around, Michael focuses on how to think like the creative geniuses of history, including Leonardo da Vinci and Walt Disney.
How to Get Ideas
Jack Foster, Larry Corby
Part of being creative is having an original idea, but where does this idea come from? This book will tell you how to inspire new ideas so you can take them to the next level.
The Innovator’s Toolkit: 50+ Techniques for Predictable and Sustainable Organic Growth
David Silverstein, Philip Samuel, Neil DeCarlo
Innovation goes hand-in-hand with technology. Just look at companies like Apple or Google – who are constantly innovating computer hardware and software. This book by Silverstein, et al. is an excellent reference book for those who are innovators. To be a successful innovator, you also need to be a creative thinker.
Programming is the easy part, if you are reading this blog you are probably self-sufficient in at least one programming language. Now you know how to get to the next level: be creative!
If there are any other books that have inspired you to become a creative innovator, please share below in the comments.
7The Secret to Being a Successful Programmer
You are reading this because you want to discover the secret to being a successful programmer. If the secret is all you care about, go ahead and scroll down to the bottom of the page because that is where you will find it.
If you are still reading this, I will explain to you why there is a secret to being a successful programmer.
Being Good Isn’t Good Enough
When you learn any type of skill, such as a new programming language or even a physical sport – professionals or experts will often say to you, “If you want to get better, you have to practice, practice, practice.”
I believe this statement true in the sense that if you practice you will become a better programmer or athlete, but you will not necessarily become successful.
What is Success?
Everybody has their own definition of what success is – what does success mean to you?
- Success is accomplishing goals?
- Success is making a lot of money?
- Success is making the world a better place?
I don’t believe that Success is one thing, but rather a combination of all the above.
So how do you get there? How does one become successful?
If you look back at my example of learning a new skill. Which of the definitions of success will directly result by becoming an expert?
Unless your goal was to learn a new skill (or master a skill), you will have only become successful in accomplishing goals. Just because you are good at something doesn’t mean that you will make a lot of money or put you in a position to change the world.
So what’s missing?
The Secret
The secret to being a successful programmer (or anything else) is: creativity and original thinking.
A successful programmer is one who is knowledgable (knows language, concepts, architecture, etc.), but can also use this knowledge to create or conceptualize.
Success as making money
If you believe that success is making a lot of money, you need to look at the concept of doing business. In business you can compete on two different levels: price and value.
Price
You can make a decent salary if you are a good programmer (defined as having a detailed understanding of programming languages and concepts) – but what is going to make you stand-out against the next programmer?
If you were interviewing for a job and all the candidates had the same knowledge, same background, and same skills – the person who would be hired would be the one asking for the least amount of money.
The scenario above is probably unrealistic for established programmers (but probably more true for recent college graduates). Despite what you may think, you may already have a creative/original side.
Value
Value is not a comparison of price vs. features – but rather what makes you unique against alternatives. The perfect example of this is to look at the Apple iPhone.
Today you could make the argument that the Droid has more features than the iPhone. Does that mean that the Droid has more value because it cost less?
So how can Apple charge more for something that is equal (or fewer) in features?
This is where creativity and originality come into play.
When the iPhone came out it was one of the most original smart phones around. To this day, every smart phone manufacturer has been trying to “copy” everything about it: touch screen, App Store, Games etc.
The original creativity continues to live on in the product – and allows the iPhone to maintain its demand.
The same can be said about why Google tends to hire PhDs – through their dissertations they have proven their ability to think originally and offer a creative solution.
Next Steps
If you are already an expert programmer, you are already half way there. Creativity and original thinking can be learned, it just might not seem like that because they are “right-brained” skills, compared to the “left-brained” skills of programming.
To start thinking about success:
- Define success as it applies to you.
- Think about where you want to be.
- Start thinking (creatively) about how you can use your skills to achieve your success.
I would love to hear about your projects that you are working on to become successful. Please share in the comments.
3









