Dilbert comic by Scott Adams
I talked earlier about how and why I started to program in “These 3 Questions Led Me to Stop Waiting and Start Programming” back in December. I used the idea of Dee Duper – an online marketplace connecting parents in communities to buy and sell gently used kids goods.
The most popular “I wish” statement I hear from others today when I talk about what I do is: “I wish I had a good idea to start a company”. However, these days, a close second is “I wish I knew how to program”. It’s not just about entrepreneurship but companies big and small are looking for resources who not only understand business, but who have a technical capacity to do some coding, too.
There’s an inherent and subtle level of creativity with coding as well as layers of analytics involved. With the Internet of Thingsand the explosion of Big Data and mobile, I wouldn’t be surprised if some level of programming is introduced as part of core classes in high school and colleges soon.
So I don’t get carried away with paragraph after paragraph of… stuff, I’m going to share a quick list of what I’ve learned from getting started on iOS and building out Dee Duper. As always, I’m being specific about my experience, but any of these take-aways can be ported to any other programming – macros in Excel, SQL for databases, Ruby on Rails for web apps, etc.
Hopefully, these will help you stop waiting and empowering yourself to learn and put yourself ahead of the curve.

Keep programming day in, day out to keep your skills sharp.

The hardest part of programming isn’t getting started. In fact, getting started is the second hardest. The award for Hardest goes to… programming consistently. Like I said before, I had programmed in the past, but programming, like most skills, is perishable knowledge. It’s important to keep the skills fresh with continued practice.

Be prepared to delete and adapt when adopting new technology.

I decided to plunge into Apple’s new language Swift vs. Objective-C because Swift will be the programming language Apple preaches going forward, and I liked its clean syntax. However, when I started, Swift wasn’t officially released… having spent many months/ years in development, I had to do a lot of code refactoring when Swift was actuallyreleased at Apple’s event in September (2014). I had a bunch of code that needed to be updated because functions and classes were already obsolete/ deprecated.
Note: Refactoring is the process of “cleaning up” code via restructuring code, implementing more efficient syntax, etc. while keeping the behavior the same. The benefits happen behind the scenes beyond efficiency.

Big features may represent 90% of the tech, but the remaining 10% will take up 90% of your effort.

I actually got a TON done of the Dee Duper app in the first week surprisingly. However, it was all the fine-tuning and dealing with Constraints that had me incredibly frustrated and head buried in my hands at the desk.
This wasn’t so much of a big deal before when Apple had really just one size (iPhone 5s and earlier all had the same width), but once screen sizes change, you need to set limits and constraints right so your app doesn’t look ridiculous on the various screen width sizes. Then, you’ve gotta handle the exceptions of “well, what happens if a user selects this first before that?”
Rules are easy to plan for… exceptions are what crashes your app and aren’t explicitly planned for.
Note: Constraints are what dictate the size of images, labels, etc. to fit different sizes of screens.

Dealing with Apple’s Developer processes will infuriate everyone – account for this time if you want to launch by XYZ date.

Apple’s products are [usually] pretty great quality because the ecosystem is so tightly regulated. I never appreciated this so much till I started developing. I had to buy a MacBook to even program iOS in the first place. Then, there’s a ton of headache involved with just being ALLOWED to program. There are things like certification, provisioning profiles, etc. that you have to constantly share keys and authorize devices to even test, authorize people to be able to test your app, etc. It’s mind-numbing.
If someone makes this process easier (a few clicks maybe?!), he/ she can make a ton of money. The frustrations through these processes are MANY for newbies like me and even experienced pros, I’ve found.
If you want to launch on a particular day, you need to be wary of how long it may take for Apple to approve the app (or if it gets restricted).
Don’t forget that if you leverage other tech, you may also need to get approval from them, too, like Facebook.

When you’re down in the dumps of coding disarray, Google is your best friend.

I probably run a hundred searches a day for problems I have or for ways to build Dee Duper out better – probably because I’m that green. Some of the features I was trying to build have been attempted/ successfully implemented by other developers. So, there’s a high likelihood there are other developers who have had similar problems and solutions. Being able to Google these situations is great, but you have to get the search terms right or you get flooded with irrelevant content. Google will likely steer you to personal blogs and Stack Overflow posts to help. The development community is alive and strong. Though with new tech like Swift, the community is much, much smaller, and can be a bit more difficult to find help with.

Integrations to platforms can be stupidly easy.

Credit goes to the great startups today who have developed such great platforms that can be easily tapped into.
For Dee Duper, I leverage Facebook’s API (application programming interface) so users can sign up and log in easily. With it, too, I can show mutual connections/ friends. Facebook’s documentation is decent, and can really help get you started.
I also use Parse(acquired by Facebook in 2013) as my back-end – stores the data model, content, etc. so I don’t have to build one from scratch. It’s so simple to get started and running. Creating tables and running queries is a cinch. I also use Parse to send Push notifications. This is useful when Dee Duper users send messages to one another critical for buyer-seller interactions. Push notifications are great, too, for Saved Searches (like if you’re looking for a particular items with key search terms, you can save the search, and be alerted whenever someone posts a listing that matches your search).
These large platform integrations just makes building apps that much easier and faster.

It’s so easy to keep building, and going overboard, but you need to stay simple.

Plugging in my earbuds and sliding my hoodie over my head, it’s easy to just get cranking and keep going.
“Oh, that can be a cool feature to implement… hmm, I’ll do that!” And the next thing you know it, you’ve blown past your MVP (minimum viable product).
It’s easy to just keep going, and thus, spinning your wheels and delaying your launch. As much customer discovery as I’ve done, I need to get the product in people’s hands to test hypotheses like features, layouts, etc. If I keep building, I’ll never get this good insight.
I have a couple lists in my notebook and on my whiteboard at home with clear objectives of what the MVP is… everything else can come later after some testing and learning.

Building is easier than selling (in my view).

I like to sell. I like to work with people face-to-face to find how I can help them through my product/ service. However, building things like an app is way easier, I think. You can do it from anywhere pretty much and at any time. Except for some quirks, the computer and code is pretty unbiased towards you with not so many personality “differences”. Thus, it’s easy to get validation when things work or why things don’t work.
In sales or working with people, there’s so much more you’re not necessarily privy to because there’s a person on the other side with a mindset, an attitude, a life, etc. However, I still like the people interaction, so would rather hand over the technical reins when the timing is right.

It’s really easy to take your time or delay.

Dee Duper was approved for the Apple App Store on Monday, December 1, 2014. (First try – sweet!) However, it took me a while to publish it officially because I was scared about how it’d be perceived by others.
Fast forward to February 2015, and since its launch, I really haven’t marketed it at all. I think I was excited about Dee Duper as an idea and as a project to learn coding with. However, since then, I’ve developed a couple other apps. As a solo-preneur, I dictate what gets my attention and what doesn’t. My schedule is completely of my own choosing, and sadly, that could mean I focus on building so many different things without the focus of only one thing even after launching it recently.
I need to do some marketing, though, so that I can get feedback on the apps that I’ve built. At least this way, I can really work in the Lean Startup mindset of iterating and collecting feedback. 
Another Dilbert comic by Scott Adams… because they’re great.
First foray into iOS and LEGIT programming, and it goes swimmingly well… even if it wasn’t as “simple” of a start as I could’ve made it.

Since August of this year, I’ve been expanding my horizons and challenging an area that terrifies me – learning how to program. Okay, well, I’ve got some experience in programming including JAVA (long, long ago), Ruby on Rails, etc., but nothing really spectacular and for “mass consumption” except for maybe some SQL and VBA from consulting work. My experience in Ruby on Rails goes just a little farther than the One Month Rails course I took back in January. However, it never really stuck with me.

I found that I needed to root myself with three foundational questions that would give me a reason for learning (my WHY), a vision to focus my learning and achieve sustainability (my WHAT), and a way to begin (my HOW). That’s where the following three questions guided me.

Question 1: Why am I learning to program?
Like many idea-people, I have a long, long list of ideas of things to try/ build in terms of potential startup ideas. My list has started to get long in the tooth. Some of the ideas are similar to what some startups are now doing very well and/ or raising quite a bit of capital. As they say, ideas are worth nothing… it’s all about execution. However, with the market where it is being a highly developer world, it’s sometimes hard getting/ inspiring/ motivating developers to help build ideas without money, and I’m not a developer by trade. I’ve talked to a few other entrepreneurs and they share the same sentiment – good developers are highly valuable resources with no shortage of demand. 
I remember talking to one of the co-founders of Hired.com a few months ago, and he mentioned how he and a couple other great developers met one day to talk about possibly working together. After a couple meets they moved into a house near the Valley. They churned out projects weekly. They weren’t bottlenecks in their aspirations, but I was in mine. I don’t want to be limited in achieving what I want to. If I believe in myself and what I’m doing, then investing in some learning should be well worth it.
So, that’s what motivated me to really learn and become a developer — a reason for doing. I’m never going to be an extraordinary developer like the Body Boss guys (or designer), but I’ll know enough to be dangerous and launch ideas. If any of them stick, then great. I’ll then hopefully raise some capital to then find a more technically adept partner. Of course, there’s got to be some time to develop the ideas before churning out the next one. Anyways…
As an ancillary (but big) benefit, I’m hoping more experience with programming will make me a more adept entrepreneur and team member. I’m still figuring out my best skills and roles (product management, sales, marketing, general business development, PROGRAMMING?!, etc.). Right now, I like to be a generalist and my breadth of skills allows me to adapt quickly and effectively; however, I think strengthening my technical shortcomings will be valuable in an age of growing technology either by understanding customers’ needs, communicating with technical resources, or exploring new entrepreneurial opportunities.
Question 2: What am I starting?
Now with a purpose, I wasn’t sure what to begin or even what would keep my learning going. I needed to build something that resonated with me to give me short and long-term visions and goals.

After a brainstorming session in July, there was an interesting idea to help parents better buy and sell used kids goods. This was the inception of Dee Duper, the idea I’ve been building out since August. Though, to start, I wasn’t sure which way or where to start. Kick in some of my experience from the past, and I did customer discovery vis-à-vis a survey (using Google Docs) to answer some questions and test out some hypotheses.

Okay, you’re about to see some questions, responses, and charts from the survey – 48 parent respondents. Let me preface the results with this: I know, in retrospect, that the survey can be better structured, worded, and more MECE. I’m comfortable showing the results, however, knowing full well the responses are not “scientific”. The answers provide a good vane for the direction I should head, and as an entrepreneur, I don’t need exact measurements to get started. These examples should also serve as food-for-thought about how to make your own surveys more robust. Again, every iteration you do something, look to improve. I’ll write a post in the near future (Jan 2015?) on how I would improve my survey in retrospect.

Focused my survey on parents with 48 respondents.
Aside from “None; N/A” and “Other”, major problems of existing resale channels include Search and Trust.
One of my major hypotheses was that payment of goods between parents was a big headache. However, I learned that overwhelmingly, the major pain points revolved around search and trust. Okay, that changes my potential development roadmap, but where to start programming? A few more questions were needed via the survey…
The computer is still dominant for users followed by the iPhone. Though not focused on which device is used for online shopping, this still motivates me to build on iOS as the mobile app first.
Survey respondents were overwhelmingly users of the iPhone. So that’s where I was going to dig in for my first technical entrepreneurial foray – iOS! Yes, ‘Computer’ was actually the top device, but I knew/ wanted Dee Duper to reside mobile (native) first as an MVP (phase 0) especially given other outside research from Black Friday shopping, UPS datapoints, and my observations of target consumers on channels like the many “Mommy Exchanges” on Facebook. Phase 1 would include a web app, likely built on Ruby on Rails.
I have such limited experience in Apple’s Objective-C language, and with Apple’s announcement of its evolution in programming language, Swift, I decided to start with Swift. The syntax looks cleaner and if I went far back in my memory, it’s more similar to JAVA, I think.
User sentiments to the apps I was most interested in. In retrospect, I could have included other popular apps such as Pinterest
Through the customer discovery survey, I also learned what apps and platforms users used on a daily basis and their thoughts on the quality of the popular apps today. All this allowed me to go beyond just building on Swift but also help me think about design and usability as well as potential integrations. In my case, I’ve learned that removing barriers to sign up and get into an app is critical, so leveraging Facebook’s login was going to be my way forward.
Question 3: How did I start?

With limited experience in programming for the masses and a plethora of options and courses to learn programming, choosing where to begin and with who can be daunting. Luckily, when I started in August, Swift wasn’t talked about too much, yet, so I had limited options. I decided to get started with Treehouse.com. I ended up shelling out $99 for a Swift course. Treehouse did a good job of showing me the basics, and getting me used to the syntax. However, the course I took wasn’t a great one to learn how to build what I wanted to build.
Instead of spending more $$, I decided to explore free tutorials, and found some videos on YouTube by Brian Advent. This was actually really great because Brian also talked about not only Swift, but integrating a mobile back-end (with Facebook’s Parse). I hadn’t thought about what, where, and how to host the database to run Dee Duper, yet. He had some videos that explained how to build a Twitter-like app, so that’s where I would work alongside him through several videos, and then go off adapting what he taught to Dee Duper.

Starting from there was a lot of trial and error. I won’t hash this out because there’s quite a bit, but I’ll write posts in the very near future about my lessons. It’ll be on-going so stay tuned!

As a take-away for you, there are a TON of courses all over the internet including physical classes you can take if you so have the time and money to pursue. If you’re like me bootstrapping everything, there are plenty of free tutorials that will get you off and running quick.

Where I am and where I’m going…

Last Monday, December 1st, I actually received word that Dee Duper was approved for the Appstore! First time submission, first time approval. Pretty stellar stuff, I think. It took a while, but it’s come together pretty nicely.
Funny enough, while building Dee Duper, I’ve also picked up some part-time consulting to fill the coffers and get some mental stability, I’ve been thrust into building all sorts of models in VBA and even asked to do some SQL to build data cubes and algorithms. All of a sudden, I’m finding myself mixing up programming languages having taken on all sorts of technical roles. To the point above about why I wanted to pick up programming, I’ve definitely found myself much more marketable and able to swing into all sorts of different projects where others couldn’t. Plus, the added analytical side of programming has given me some creative ways of approaching other more strategic consulting projects.
Back to Dee Duper and my programming… Dee Duper just launched in the Appstore, but honestly, I haven’t marketed it at all. This is where a lot of work and effort will come into play. What I need to do now is find initial traction, and gather their input. I did my beta testing with some users throughout development, but now that the app is more widely available, learning will be critical.
You can now find Dee Duper in the Apple Appstore!
From the feedback, I hope to find what works, what doesn’t, and the missing elements of Dee Duper to achieve product-market fit. I’ve got a roadmap of what I want to integrate next with Dee Duper including geo-location, saved searches (alerting you if something is posted that you’re looking for), favorites, etc. For now, I’m eager to gather feedback of the MVP of Dee Duper before I go building a bunch of features nobody wants.
I’ll post some quick lessons since I started programming in the next month. I’ll also start sharing some technical posts including how I’ve implemented different features, headaches I’ve come across, etc. The Swift developer community is still very young, so the help library is sparse. Hopefully, I can help build that up.
What questions do you have about how I got started either with Dee Duper or programming? Are you someone who wants to code, but hasn’t stepped into it, yet? What’s holding you back? Or, if you did start coding but not a coder as a full-time gig, why/ what are you coding?