A portfolio is one of the most important assets of any developer with ambition. Mobile applications, for example, are so commonplace that potential employers or clients will want to see what projects you have worked on in the past. Aspiring developers often ask what they should show if they haven’t created any applications yet. The answer is simple. Start creating.
If you are learning the ropes of software development and you don’t have any clients yet, then what are you doing all day? You don’t need to learn everything there is to know about software development to start your first project.
Scratch an Itch
While not every idea will be a runaway success, the itches you have are perfect for your first projects. If you are just getting started, then it is important to choose a relatively easy problem to solve.
The first application I shipped was an iPad application that allowed users to import and tag images from an Aperture or iPhoto library. While I did eventually publish the application on the App Store, it was a bit too complex for a first project.
Start small and build larger, more ambitious projects as you grow as a developer. By biting off more than you can chew, you may lose motivation or become discouraged.
Setting Goals
The primary goal of your first project should be simple, creating and publishing an application that provides value to people. You can set secondary goals, such as trying to monetize your application or ranking as high as possible in the App Store charts. Those goals are less important, though. Monetizing your application is only possible if you share it with the world, which means you first need to build and ship an application.
I love running. Every time I go for a run, I have three goals. The first and most important goal is to enjoy the run. The second goal is to finish the run. And the third goal is to beat my best time.
In the early stages of your career, it is important to approach software development with the same mindset. Make sure you enjoy what you are doing. If you don't, you won't stay committed to learning your craft. It should not feel as a struggle.
It should not feel as a struggle.
The second goal should be to complete the project you are working on. Once you commit to a project or idea, it is important that you stick with it. Steve Jobs famously said "Real artists ship." As a developer, you are creating. That also means that you need to ship your creations.
Real artists ship. - Steve Jobs
The third goal is the proverbial cherry on the cake. That goal may be hitting the top charts in your application's category or reaching a certain number of downloads. That is up to you.
Why am I giving you this advice? And what gives me the authority to give you advice in the first place? Ask any developer how many project they started and never finished. Starting projects is fine. But sometimes you need to ship. If you want to be taken serious as a developer, then you need to be able to show that you can start and finish something.
If you want to be taken serious as a developer, then you need to be able to show that you can start and finish something.
Whenever I interview a developer for a project, I ask them about their previous projects. Your future employer or clients will do exactly the same. Even if you plan to start as a junior developer or an apprentice at a company or agency, it plays to your advantage to show one or more projects you started and finished successfully. It makes a world of difference. Why? Because finishing something is harder than it seems.
Don't Worry
If software development is part of your DNA, then you will be able to start and complete your first software project. Most developers have a hard time stopping themselves from creating cool software or using the latest, fancy libraries. Despite this drive to create, it is equally important to finish and ship. I cannot emphasize this enough.
Learn the Basics
A question that comes up often is whether you should dive in head first or learn the basics. The answer is "both." It is key that you know the foundation of the language you are using. However, it is also important that you start creating as soon as possible.
Apple's platforms are so accessible that I guarantee you that you can create a basic Cocoa application the day you start learning Cocoa development. There is no need to read Apple's language guide for Swift from cover to cover. It will discourage you since you started with Cocoa development to create cool things. My suggestion is to choose a guide that teaches you Swift or Objective-C as you learn the ropes of software development. The sooner you see the bigger picture, the sooner you will feel comfortable on the path you are taking.
There is one big "but", though. If you only focus on creating things and don't take the time to learn the more intricate aspects of the platform, you will end up creating bugs, missing best practices, and, in the end, being frustrated why something isn't working.
Learning a human language is easy at first if you only focus on memorizing words and sentences. Your memory is only able to take in so much, though, and what are you going to do if you run into a situation you don't know anything about?
Most language courses start with simple sentences to give students the feeling that they are making progress. Sooner rather than later, the teacher teaches them about spelling and grammar, explaining the sentences they learned from a grammatical point of view.
The gist is that you need to become familiar with the basics, the foundation, if you want to grow as a developer. It isn't always as interesting as learning the cool things, but it is equally important.
But Start Creating
No matter what path you choose or what language you learn, it is important to start creating. Set a goal, pick a problem you want to solve, and find a solution. That is what software development is about. Right?