Bear Cahill: Instructor

Bear Cahill is an iOS and Amazon Web Services developer, an excellent instructor, and author of Manning's "iOS in Practice." Bear recently sat down with us to discuss his background and the life of a trainer. Here's what we found.

Q: Tell us more about yourself. How did you get into to programming?

A: I saw the movie "War Games" as a kid and just thought, wow, that's really cool – computers and hacking into stuff. So, I got a TI994A – an old 16gig computer and just started writing stuff. I had a book I learned from. I started with an if-then statement and started writing code and fell in love with programming. Then I kept doing it through school and studied Computer Science in college. I kept thinking that as long as I can keep passing, I'll do it. As long as I can keep getting through the math part. Eventually I started liking the math too and even minored in math. It was quite a challenge. I worked on the server side; I worked at IBM during college, and then Ericson and Travelocity.

My last job, which was at a Windows shop, I was doing some stuff on the side in J2ME on Blackberry phones and that kind of thing. In 2008 they were moving development to Arizona, so I took a package and decided to do more full-time. That was when the app store came out. To get into work in the iPhone world, I got a MacBook Pro, an Objective-C book, and a Go code book and started learning. There was a lot of action to keep me busy. I was fortunate to expand from there into teaching. The market has changed a lot since, but I have been able to stay independent and teach, which I really like. Diversification has been working well for me.

Q: You do both iOS and Android development and training. Can you tell us a little bit about how they compare with each other?

A: Java has been around longer than Swift, but Objective-C has been around for a while. So, they both have some maturity to them. I had a Java background for several years before doing the iOS and Objective-C part. The language part I think is mature and it really solid, so that is not as much of a challenge if you've already got some object-oriented programming experience. The differences also have to do a little bit with the language. But, with Swift it is not as much. In fact, I've written some code in Swift where I intentionally put semicolons at the end so that I could copy it into Java and it was not as big of a deal. The UI design has some similarities and is getting to be a little more similar but there are some differences there. And the Android studio, the IDE, has also come a long way from the past. For me, not having as much experience on the Android side, getting more into the Android side, the Android studio has helped a lot. The biggest difference in my experience is in the devices. Apple has a handful of devices and you're mostly dealing with knowns. Whereas Android has so many devices. You have to install a bunch of emulators. I have a lot more Android devices to test. These create differences in the development cycle. They're both great and very powerful. They both have some great devices out there now. I think they are probably more similar than they are different, conceptually. I'll probably upgrade soon.

Q: What device do you use personally?

A: I use an iPhone 6. This one is pretty old. I used to upgrade until they stopped with the rebate program. I might need to upgrade. There are some things I can't do with my current device.

Q: How do you stay up to date with the everchanging mobile technologies?

A: One thing that helps is teaching. You have to learn in order to teach something well. Producing anything helps too. Ideally, your own blog, or writing guest posts, or anything that you write you have to be able to explain. And then, projects. I have been very fortunate to be able to work on a variety of mobile projects over the past ten years. You might have someone come to you and say that they want a project that takes two audio streams and merges them together. And then you figure it out. Everything I have learned has pretty much been through building a real project. Sometimes you write your own project and do your own research. The thing that has been really good for me has been the mix of doing projects and maintaining them, and constantly taking on new projects that teach me new things as I go. The more you take on projects and explore, the better and faster you will learn. The challenge is more in getting the projects than in learning. Learning to teach and write is a great way to make sure you are not caught not knowing something when you are asked about It.

Q: Do you have any favorite resources that you look to to learn from?

A: Stack Overflow, which is probably everyone's answer. It is just so well put together with the voting system. You see something with over three hundred votes and you know that you have found your answer. I like NSHipster because it goes into explanations. I like Medium articles too. I also like Ray Wenderlich; I used to be a subject matter expert there and I think that they strive really hard to produce good content quickly and expertly, and really stay on top of questions on the forums.

Q: What do you like most about being a technical trainer?

A: Just one part? That's tough. I love the learning. When a client says they want me to add this, or learn that, that is very satisfying because it does feel like I am able to keep up to date and not get stuck in one technology. I also love interacting with people and seeing them learn. It is a lot of fun to see when someone gets it. Especially after they first say things don't make sense. I usually try to ask at the end of the first or second day, is this getting kind of confusing? And they usually say yes. And I say – good, that means you are learning. That means you are about to take the leap. Go home and sleep on it. Tomorrow when we come back you will get it. If it is just easy, then they are not pushing themselves. And then, I also love the travel involved with technical training. Not necessarily a specific destination. I just like getting out there and seeing different places. I guess it is a break from everyday life, which is always nice. It keeps you young.

Q: What are some of the most frequently asked questions in your iOS or mobile classes?

A: There are certain types of questions that come up a lot. People might ask how often do you do X? Sometimes you might say, I do it all the time, and others you'll say it does not come up a lot, but you still have to know how to deal with it. It might have to do with dealing with certain problems, certain errors, certain things that go wrong. For example, in your story board, if you connect two things from the code to the UI, and then go and use that and set the label text, you might find out later in your UI that you don't actually want the label in the code. And maybe you need to break the connection in the UI and still use it in your code. Or, vice versa, you delete the code, but you never broke the connection in the story board. You're going to get a bug and a crash and not understand what is going on. When you see these three words in a crash, you will recognize the error and be able to handle it better. Even if you only have this come up once a month, it is crucial to be able to understand and figure it out quickly. Otherwise you could end up spending three days on these kinds of issues.

Another one is asking – what did you just do there? I use so many different keyboard shortcuts that it can be hard to follow. People want to know how to work faster and better. So I go over shortcuts and hotkeys too, and encourage people to use the autocomplete function. If any casing is wrong, the whole code will be wrong.

Q: Are there any cheat sheets you recommend for keyboard shortcuts?

A: Xcode will show you everything inside. That will be easier to learn from since it is automatic and just pops up for you. You don't need to manually learn it.

Q: With mobile being the future, what advice do you have for kids or teenagers who want to get into the technology sector or mobile technology specifically when they grow up?

A: There are a billion resources out there right now. I recommend finding a good one. A lot of people say they'd watch a YouTube video on something. A lot of them are good but a lot are not. I'd recommend finding online resources that have a system or an organized program that you can step through over time in a more organized way. It is better to learn all the tools and how they go together. You don't want to just know how to do one thing. You want to learn and understand concepts thoroughly so that you can solve problems better as a software developer. Learn things from the beginning and get a complete understanding of how and why things work.

Q: Having a portfolio of work to showcase is so important for developers. Are you on the app store?

A: I have stopped counting how many I have. It has to be in the hundreds. I have to cut down the list I sent to prospects and clients. It is always helpful to have published work and apps online to share and show what you can really do with your programming skills. A portfolio is great to show what you have done. One of my advantages when I graduated college was that I had already worked for IBM. I had experience working for a manager and with real deadlines. This is true proof for what you can do. You can show and not just tell.

Q: What are some of your passions and interests outside of work?

A: I play guitar. I play fingerstyle, and a lot of jazz. Just messing around with the guitar and trying to learn interesting chords and fretboard. My goal was to be able to pick up the guitar, mess around, and know what I'm doing. Then I thought, oh, jazz sounds cool. We homeschool, so I like hanging out with my kids. The rest of the time I like being away from my kids. And going to friends and church. We just moved to a new house and our church community is really close by. I also like coffee and beer.

Learn faster

Our live, instructor-led lectures are far more effective than pre-recorded classes

Satisfaction guarantee

If your team is not 100% satisfied with your training, we do what's necessary to make it right

Learn online from anywhere

Whether you are at home or in the office, we make learning interactive and engaging

Multiple Payment Options

We accept check, ACH/EFT, major credit cards, and most purchase orders



Recent Training Locations

Alabama

Birmingham

Huntsville

Montgomery

Alaska

Anchorage

Arizona

Phoenix

Tucson

Arkansas

Fayetteville

Little Rock

California

Los Angeles

Oakland

Orange County

Sacramento

San Diego

San Francisco

San Jose

Colorado

Boulder

Colorado Springs

Denver

Connecticut

Hartford

DC

Washington

Florida

Fort Lauderdale

Jacksonville

Miami

Orlando

Tampa

Georgia

Atlanta

Augusta

Savannah

Hawaii

Honolulu

Idaho

Boise

Illinois

Chicago

Indiana

Indianapolis

Iowa

Cedar Rapids

Des Moines

Kansas

Wichita

Kentucky

Lexington

Louisville

Louisiana

New Orleans

Maine

Portland

Maryland

Annapolis

Baltimore

Frederick

Hagerstown

Massachusetts

Boston

Cambridge

Springfield

Michigan

Ann Arbor

Detroit

Grand Rapids

Minnesota

Minneapolis

Saint Paul

Mississippi

Jackson

Missouri

Kansas City

St. Louis

Nebraska

Lincoln

Omaha

Nevada

Las Vegas

Reno

New Jersey

Princeton

New Mexico

Albuquerque

New York

Albany

Buffalo

New York City

White Plains

North Carolina

Charlotte

Durham

Raleigh

Ohio

Akron

Canton

Cincinnati

Cleveland

Columbus

Dayton

Oklahoma

Oklahoma City

Tulsa

Oregon

Portland

Pennsylvania

Philadelphia

Pittsburgh

Rhode Island

Providence

South Carolina

Charleston

Columbia

Greenville

Tennessee

Knoxville

Memphis

Nashville

Texas

Austin

Dallas

El Paso

Houston

San Antonio

Utah

Salt Lake City

Virginia

Alexandria

Arlington

Norfolk

Richmond

Washington

Seattle

Tacoma

West Virginia

Charleston

Wisconsin

Madison

Milwaukee

Alberta

Calgary

Edmonton

British Columbia

Vancouver

Manitoba

Winnipeg

Nova Scotia

Halifax

Ontario

Ottawa

Toronto

Quebec

Montreal

Puerto Rico

San Juan