Going Independent – Part 2

January 31, 2013 · Posted in advice, indie, work · 2 Comments 

In the first part of Going Independent, I talked about my day job, and my first year on my own. To recap, I made next to nothing but lived to fight another year. Which brings me to the second year of being independent. This is not a story about getting rich quick, or how I made several million dollars selling software (because I didn’t). It’s a more realistic story of struggle, failure and clawing and fighting my way to every dollar I earned, how I did that and the hope I see for the future.

Starting Over

I ended up starting a new LLC based on this website’s name, something I’ve been running for years. I registered another web domain name, setup another website installation, bought a theme for the website and filled it with content and portfolio items. Within a few months, we ranked #1, #2, and #3 (#3 was this site) when you searched “Mobile Development Boise.” The calls and emails started coming in. Some people just wanted to know how much it was to develop a mobile app, others were testing the waters, and still others had already committed, one way or another to having an app built and were just looking for the right people to do it.

That was as much marketing and advertising as we did. We didn’t cold call, we didn’t mass email. We simply had a product and service that people were interested in, and wanted to find out more. Surprisingly, more people have called than have used email to contact us. The calls are about 60%, direct email 15% and using the contact form was about 25% of our incoming inquiries. All forms of communication have resulted in very good clients so I can’t really say which one was better for us.

We picked up some web development jobs to pay the bills while we worked on the good ideas for client mobile apps. We didn’t take on every project that came our way. Some thought our prices were too high. Some were expecting the development to be only a few hundred dollars. And some just had bad ideas that either couldn’t be executed, or we didn’t want to execute them. You don’t want clients that have bad ideas or won’t pay you what you’re worth. When clients understand the cost, you know they’re running a good business themselves because they know what things are worth. When clients have bad ideas, they usually don’t have a proven business model to support it, or they simply aren’t familiar with the technology.

Don’t get me wrong. We’ve done our share of low-budget apps, just because we liked the people who came to us. We have a soft spot for startups and people just trying to live their dream. Most of the time, these people already want a working business model and just need a solution to their mobile needs. We try to be fair, we’re always honest, and hopefully that builds better relationships.

Anyway, we picked the right projects and the money started slowly trickling in. We got some large projects where we threw every resource we had at them. We hired a bunch of great people who did great work, and we accomplished a lot of things. We paid them fairly and we paid them on time. If I could help it, I paid them up front. I trusted all of them, I had worked with all of them before and everything went well. Luckily. I’m a firm believer in, “It’s who you know.” And if you know great people, they’ll enable you to do great things.

Don’t get jealous of people’s abilities and talents; get inspired.

Success Depends on Reach

How many people or businesses do you know that can send you $30,000+ projects? If you were to get said projects, how many people do you know that can help you execute on those? You need to get to a point where you’re doing less of the development, and more of the management. Everyone knows management does nothing and gets paid the most; so why wouldn’t you want to be in that position? But the worst managers are the ones who couldn’t do your job if the company depended on it. I’m not sure why non-technical people are hired to manage programmers, but the best ones either know how to do the jobs of the people they supervise, or they admit they don’t and instead listen well and take their advice to make the best decisions. Be one or both of those things, but most importantly, have people working for you that can give you good advice.

I built up that kind of network over the years by staying humble, listening and always remembering that I don’t need to be the smartest, best person to be successful.

How Successful Was It?

I technically started up the new LLC in March so it hasn’t exactly been a year. Remember that ten thousand dollars of income I made the first year? Well that LLC made a lot more than that, but that’s pretty much all I saw. This year, the company is projected to be almost a magnitude greater than that, for a period 12 months. Ok, so I’m playing with numbers and dates a bit for my benefit, but you get the point right? I’m making a decent, living wage after a year below the poverty line (although my wife made a decent salary, so technically as a family we weren’t).

I could have gotten a “real” job and made 2 or 3 times what I did. Sometimes, I’ll admit, when the bank accounts were getting low and I didn’t have any outstanding invoices due to me, I wish I had. But because we built a solid foundation with the website and our portfolio, the next call or email would come in, and off we’d be rolling again. A bit of a roller coaster, ulcer causing existence sometimes, but having retained earnings, diligent savings and always looking ahead, ensured we were always busy.

Looking at 2013, while we have a ton of things and ideas in the pipeline, to potentially grow the revenue even more, I still think: “Would it be better to just give it all up, get a ‘real’ job and not have to think or work so hard?” I think anyone trying to run their own company who thinks they’ll become rich overnight should take a long hard look in the mirror, and then laugh at themselves. While overnight successes happen, sort of, it mostly takes a lot of hard work, good decisions and a lot of talent to become rich. Sometimes it just takes a while to get all those things right.

Doing this kind of thing is not for everyone and there’s no shame in that. But regrets are a lot harder to justify than failures.

Post in the comments below about your successes, failures or questions and make sure you subscribe below.

Care to follow my progress?

Going Independent – Part 1

January 29, 2013 · Posted in advice, indie, work · 2 Comments 

Hindsight is 20/20 so I thought it time to reflect on going independent two years ago. I consider myself fairly successful and thought I’d share in case it helped someone else live their wish. Here is that story, what I did to prepare, the after math of that decision and the years that followed.

My First and Only “Real” Job

In the spring of 2007, I graduated with my shiny new degree in Computer Science from Virginia Tech. Even then, I was very picky about who I wanted to work for. I had sold some of my own software in college and loved that experience. When going to job fairs, I would only consider companies that appreciated good User Experience (UX), and didn’t program in anything .NET. Why? Mostly, because I knew I wanted to be involved with anything UX, and I was an Apple developer since 2003, and loved working in that environment.

Eventually, I found a company right in Blacksburg that did online product demos in Flash. I had dabbled in Flash a bit but knew nothing about it. On top of that, this company had clients like Hasbro, T-Mobile, Verizon Wireless, Graco, Canon, Reebok, and the list goes on. As a freshly minted Computer Scientist, I was a bit intimidated.

What the job actually taught me was, those companies are run by people, and you can talk to and reason with people. They have wants and needs and are not some super force of power. The people are generally approachable, but very professional. You can’t play games, you can’t be immature and no one likes drama. You are a vendor who provides a service and you can be switched out at any given moment.

I ended up becoming very good at Flash and talking to clients. I created a ton of new technologies for the company that had never been created for that platform (although most likely existed in other places). But we got switched out.

What I learned from that is, nothing is a sure thing and things can change overnight.

 

Learn to Swim – Or How to Start Your Indie Journey Before You Jump Ship

We were down to our last client and before the ship sank into the sea of failed companies, I jumped on a little life raft and paddled my way to fame and glory. That life raft was iOS development, which I started about two years before I left. I asked my boss at the time, when iOS 2.0 came out, if he wanted to offer iOS apps to our clients. He kind of laughed and said he didn’t think anyone would buy apps for a phone. We could have been one of the first mobile development capable companies. Instead, I started my own, which became one of the first.

What I learned was, when you see a clear and present opportunity, take it.

So I worked nights and weekends on our first mobile applications: BarNinja, Unprinted, a game on wake boarding, an app that helps municipalities clean up streets of debris and potholes, an Inbox Zero email helper app, a comic book app and a few other smaller projects. It was hard. My girlfriend at the time complained about how much I was working and we got into some fights about it.

What I learned was, how to write iOS apps of various types, including games, and apps that use native hardware features.

I didn’t just write one app and call myself a mobile developer, I took on challenges that I didn’t know how to do and did them. I didn’t make much money. I made enough to buy a new 13″ MacBook Pro and pay my utility bills each month (less than $100/month). What helped, was, I didn’t have cable and I really loved what I was doing.

When the time finally to put in my 2 weeks notice, I had half a dozen completed apps under my belt and I had lined up about $10,000 of client work in the next 2 months. Everyone says, have 6 months to a year of savings. I probably had a month or two and a load of student debt. When you have a salary, your expenses seem to fit your income. If you plan on going indie, you need to become a lean and productive worker. Cut out all luxury expenses, like cable TV, prepared meals, turn lights off when you leave rooms; whatever it takes because you’re going to live off of nothing for the foreseeable future.

Plan for a Very Sparse First Year

That $10,000 in two months turned into about 12 months. That is basically how much money I made in 2011. Let me repeat that, I made about $10,000 in my first year as an independent.

Here’s what went wrong:

  • The $10,000 jobs were with people I had never worked with before. The projects dragged on, requirements changed and of that projected $10k, I got about $1,500. That’s about a months living expenses for me.
  • I moved from Blacksburg, VA to Boise, ID. I knew not a single sole in Boise, ID, let alone any potential clients.
  • Besides spending a lot of time in the move, and various other chores and errands, I wasted a lot of time chasing ideas that never came to fruition. I felt like I was thrashing in a giant sea and all around me, passing me by, were big cruise liners filled with cash, waiting for me to climb aboard.

Here’s what I did:

  • I married the girlfriend way before jumping ship. She was the best thing in my life and when you have something that special, you chain her down with a fancy ring and you keep her happy no matter what. She was my anchor, my support, my goal, my dream and she kept me going. We had our fights about money, about time, about everything. But she supported me and sacrificed to let me have what I wanted. For that, I will be eternally grateful to her.
  • Twitter is an amazing tool to meet people in another city, say, one you’re planning on moving to. Once I knew I was moving to Boise (since my wife got a great job there), I followed everyone I could that listed their location in the City of Trees. A month after we moved to Boise, I saw a tweet from someone looking to work with a mobile developer. Hey! I was a mobile developer. A sit down and coffee later, I had my first Boise gig.
  • I dropped the idea of doing web development and concentrated on what my passion was: mobile apps. I also concentrated heavily on networking. I went to any meeting of professionals and industry people that I thought was interesting and a good opportunity to meet people. I went with the attitude of just meeting people, not trying to sell anything. I talked about what I did, but I mostly listened. Finally, I started to recognize some faces on the cruise liners. A lot were even willing to throw me a line. Some became live savers.

Financially, the first year pretty much sucked. Socially, I met some really great people, so at times I felt rich. That’s what good friends and good people can do for you. But you still need to pay the bills. Next time, I’ll talk about starting over and how to actually start a business that makes money as I did in 2012. Subscribe to the mailing list below to get the latest on what I’m up to. I keep them short, sweet and infrequent. And, follow me on Twitter.

Read Going Independent – Part 2

Care to follow my progress?

iOS Development Code Kitchen

December 6, 2010 · Posted in advice, code, iphone, projects, work · Comment 

I’ll be putting on a workshop on iOS and iPhone development this Saturday from 9AM to 5PM on the Virginia Tech campus. The event is free so if you’re in the area feel free to sign up:

http://www.ltzllc.com/2010/11/ios-development-code-kitchen/

The event will run all day and will be hands-on programming, but all levels of experience are welcome and encouraged to come.

Learn Spanish, or any other language

October 14, 2010 · Posted in advice, goals, travel · Comment 

If you have a library card to the local Blacksburg library, across the street from Rocket Music and the police station, you can access a pretty good online tutor called Mango Languages. Just search for Mango on this page. Both the card and the subscription to Mango Languages are free.

Also, here’s a list of some websites to learn Spanish and other languages. Don’t pay for anything online. They’re all a waste of money. There’s a lot of great content online for free and most people don’t follow through long enough for it to be worth it.

Language Podcasts

Podcasts are also a great, free option. Go to the iTunes store, and search for Spanish or which ever language you want to learn and subscribe to as many teaching podcasts as you can handle. For Spanish, I recommend:

Learn to Speak Spanish with Discover Spanish
Coffee Break Spanish

Some language podcasts are taught by English speakers who have horrible accents, but they’re worth a listen, but don’t put much effort into replicating their pronunciation.

Books

After you go through those for a while, you should get a book if you decide to continue learning it, otherwise I’d stick with the online content until you’re positive you want to learn it. I personally have a good reason to try to learn these languages, but if it’s just for fun you might find yourself getting tired of it.

Books provide a level of intensity and authority that you’ll need, but only after you’re sure you want to get that far into it. Almost any book with an accompanying CD should be good, but make sure to look through the book to see if it matches up with the way you learn. By going through the free content first, you should understand which technique best suites you.

Naming Conventions – Why Your Code Sucks

July 1, 2010 · Posted in advice, code, projects · 5 Comments 

I’ve seen a lot of poorly written and ugly looking code in my time. That’s not even considering the undocumented and uncommented code. We all know we should comment our code but how many of us do it consistently? I admit, when I’m in a coding frenzy, stopping to write comments just gets in the way of my thought process and can be distracting. I will however write a bunch of comments before I write the code, of the operations I think I need, in order to give me an outline of where I need to get to. For example:

// Get URL string for video file
// Load video file from URL request
// Load video file into video player
// Set up video player
// Play video

I may not know all the APIs to load and play the video just yet, but at least I’ve given myself an outline and as I fill in the code below each comment, I can see exactly what I’m doing and where I need to go.

Why Your Code Sucks

The point of this article is not to talk about comments, but how to avoid writing them in the first place within your functions and still be clear for everyone else, for the most part. This is your code:

newPlPt = crt2pl( nmc.x, nmc.y );

Not even a comment could concisely convey the meaning of that hideous statement. Instead, why not:
newPolarPoint = cartesianToPolar( newMediaContext.x, newMediaContext.y );

Well written code is self documenting. Let me restate that: if you can write code so that someone can jump to any point of that code and understand what’s going on at that point, read it like a sentence, and not have to decipher minute details like what each variable means, then you don’t have to comment most of your code.

There’s no reason you need to shorten the names in your code. Most programmers have never had file size limitations to deal with, so there’s no reason for it. Stop pretending you live in the 1960s and embrace nearly infinite file storage. To save keystrokes perhaps? Please, use a real IDE with code completion and stop doing stupid things like:

public function updateP( p:Player, d:MovieClip, b:MovieClip, t:Textfield);

Function Names

Also, because your functions are essentially actions, they need to reflect that in the name, so put a verb in the beginning of your function such as: getData(), setStatus(), enableWiFi(), hideControls(), handleGraphicException(), launchBall(), etc.

Class Variables

Get rid of the underscores in front of your class variables. For example: _dg; _myNumber;. All class variables should be private anyway, so why do you need that ridiculous convention? It’s a hold over from C where there was no “private” keyword, so you’re using it and you have no idea why.

Also, what’s with the “my” naming convention? You sound stupid when you have those: myInstanceName, myMovieClip, myGraphicsContext. Of course it’s yours, whose would it be, if not yours? If you’re programming with a colleague, do you refer to his variable references as yourInstanceName? Or hisVideoFileURL? Of course not. Don’t be that stupid; you’re reading too many stupid online tutorials by uncreative people who only code because they have nothing else better to do while living in their parent’s basement.

In the very least, be consistent with your naming conventions.

Hungarian vs. Polish notation

Depending on which language you’re coding in,  you may need to use a notation to help you with type casting. Let me rephrase that: if you’re using a loosely typed language, use Hungarian notation. You should probably use this with strongly typed languages anyway because with abstract types, you never know what you could get into and it’s just generally less confusing.

Hungarian Notation: vendorNameTextField or vendorName_txt

Polish Notation: txtVendorName or textFieldVendorName

Why not Polish notation? Not only is it ugly, but why would I sort on variable type instead of the variable name like I can do in Hungarian notation? The notation names come from how the speakers of those languages modify their verbs and nouns. To say: “My ball” in Hungarian is:  “labdám” where “labda” is the root word and the ‘m’ singifies a first person possessive. Hence the ending of the word shows the crucial information. It’s the opposite in Polish notation where the beginning of the word is modified. In the interest of full disclosure, I love the Polish, but I am Hungarian, but I promise that’s not why I prefer one over the other.

Final Thoughts

In the end, be consistent, be clear and spell out your variable and function names.

Next Page »