[career didFinishLaunching: withOptions:] Chris Adamson • @invalidname DCDS Career Day March 14, 2012
About @invalidname • Independent iOS developer and author • Develop iOS apps for clients • Also have own apps on App Store ("Road Tip") • Co-Author, iOS SDK Development and Learning Core AudioRemind me to giveaway a copy of this at the end.
How I got here• DCDS, Class of 1985• Stanford University, Class of 1990 (BS, Symbolic Systems; BA, English)• Michigan State University, Class of 1993 (MA, Telecommunication)
Work Experience• CNN Headline News, Writer/Associate Producer 1994-7• VNI/Pathfire, Software Engineer, 1997-2000, 2002-4• AnyDevice.com, Software Engineer, 2000-1• OReilly Media, java.net Editor, 2004-9• Independent since 2009• Author since 2004
Software Engineering• Design and develop applications and systems for clients or end-users • Take requirements, plan how to meet them, estimate costs and time • Develop and test software code • Respond to bug reports and enhancement requests
Why You Should Be a Software Engineer• High income potential• Safe work environment• Constant opportunities for growth and change• Apps are cool
Why You Shouldnt Be a Software Engineer• Downward pressure on wages from offshoring• Constant change means you always have to work hard to keep up• Poor representation of women, people of color• App Store prices and the "race to the bottom"
Types of employers• Big companies• Small / startup companies• Client work• Indie development
Big companies• Large (1,000+ employees) companies, usually established in their field• May not be explicitly in the technology business• Safety (or at least the appearance of it)• Boredom
Small companies / startups• Young companies with a small number of employees• More likely to be a pure tech company• Higher risk/reward: more opportunity for advancement, high likelihood of corporate failure• May offer stock or options in lieu of competitive salary
Client work• One-off projects or continuing work based on contracts (as opposed to salaried employment) • May be paid hourly or by milestone• Varying levels of formality• Much greater responsibility, freedom
Indie development• Developing apps to be provided directly to end-users • Monetized via direct sale or advertising• "App Stores" have made this far more practical than it was five years ago• Extraordinary risk/reward: for every "Angry Birds", there are 50 apps that dont earn back their development costs
Education• High school: math, computer science, English• College: computer science, electrical engineering, math, economics/business • Specializations: media, public policy, medicine, etc. • Clubs and student groups can help develop people skills, organizational responsibility
Outside the Classroom• Software meta-skills: debugging, source control (svn, git), bug tracking, working in teams, IT skills (hosting, database administration)• Domain knowledge: graphics (2D and 3D projections, trigonometry), media (A/V production, compression theory), security (public-key encryption, certificate management), etc.• Keeping up: books, articles, blogs, conferences
Before You Graduate• Publish an app on the App Store!• Check out an open source project and understand how it works (bonus points if you contribute to it)• Attend a meeting of a developer group like CocoaHeads (Detroit [Pontiac] or Ann Arbor), Mobile Monday, Java User Group, etc.• Attend a developer conference (CocoaConf, MobiDevDay, Girl Develop It, etc.)
After Graduation• College: Most colleges offer computer science and other engineering programs. • Some are especially renowned: MIT, CalTech, Stanford, RPI, Carnegie-Mellon, etc. • In Michigan: U-M, MSU, Michigan Tech.• Post-College: Think about moving to a city with lots of tech companies (Silicon Valley, Seattle, Boston, NYC, Austin, Atlanta). Makes it easier to switch jobs, meet colleagues, survive a layoff or implosion.
Going Indie• You can start a company at any time; nice to be able to fall back on it when day job implodes• Setting up an LLC or S-Corp costs $500-1,000. Has significant tax advantages over working as a "sole proprietor"• Keep separate books, bank accounts for corporation and personal use. QuickBooks/TurboTax or hire an accountant
Income for Indies• Billed client work• App Store sales (or advertising in apps)• Writing books, documentation, etc.• Advertising and sponsored links on your blog
Final Thoughts• Software Engineering is a very approachable career• Lots of career options: big company versus indie, server versus desktop versus mobile• Change is constant
Questions!Feel free to follow up afterwards: • email@example.com • @invalidname (Twitter) • CocoaHeads Ann Arbor (second Thursday of every month)