Avatar

Q&A with Jesse Schneider, iOS Developer (Dog on a Horse Mobile Apps)

Here's a short interview with Jesse Schneider, who was a full time iOS bootcamp student at TurnToTech and now works at a great iOS dev company  http://www.dogonahorse.com/ 

Hey Jesse - Thanks for taking the time for this. We thought it'll be great if you could share some of your TurnToTech experience with us.  First, Congratulations! Looks like you’ve got a really fun job – a great way to start off the new year. We understand that you'll be building iOS apps for companies like Tops and Disney!

Tell us how you got there? And did you study Computer Science in college?

Jesse: Thanks! Yeah, it’s pretty exciting. I actually didn’t major in CS in college. I was a psychology and bio student doing mostly lab research throughout my undergrad career. No coding whatsoever. When I graduated I bounced around a bit, starting off as a stock broker – before quickly realizing that it wasn’t for me, and then as the head of marketing at a startup in SoHo.

Q. How long did it take you to get this job? And how did you go about looking for the job?

Jesse: I actually got the job just about a week before I finished the bootcamp. Looking for a job - there's a standard procedure which almost everyone follows. You post your details on AngelList and other job sites, go through the interview prep material at TurnToTech and speak with companies that TurnToTech partners with.

Q. Great! And when did you realize that a software engineering career might be appropriate for you?

Jesse: After about a year at the startup I was working at, a friend and me had some app ideas we wanted to build. He said he’d build the app and I can do the marketing, but I didn’t feel that was fair to him, so I took the leap to learn to code so we could build our app together. 

Q. Why did you choose an iOS bootcamp?

Jesse: As I mentioned earlier, I didn’t have any coding experience before TurnToTech. I didn’t feel it would be efficient to try and learn my first programming language on my own, especially an objected-oriented language like Objective-C. Before the bootcamp I didn’t really know what an object-oriented language meant, I just knew Objective-C was the language I needed to learn to build iOS apps. So after looking into different online courses, textbooks, bootcamps, etc., I decided that a bootcamp was going to be the best way for me to learn.

Q. What made you choose TurnToTech? Did you research other places? 

Jesse: Yeah, of course. I looked into all of the major bootcamps in NYC. A lot of them were much more expensive and had a lecture-based classroom model. What drew me to TurnToTech was the immersive, project-based style of learning where you learn from building real apps opposed to sitting in a long lecture.

Q. How much of a role did TurnToTech play in you in preparing you for your role in your current job? 

Jesse: I can confidently say, that without TurnToTech, I would not have a job right now. TurnToTech’s project-based learning style forces you to be independent and figure things out on your own. Of course the instructor is always within 20 feet of you so when you get stuck, someone is there to guide you. In my role at my current job, it works the same way. I’m expected to be able to complete tasks independently, but when I need to bounce an idea off of someone, my boss and coworkers are always nearby. TurnToTech mimicked the real world work environment better than I could have ever imagined.

Q. How was a typical day at the bootcamp?

Jesse: I would get in everyday around 10am or so. I’d set up at my desk, grab some coffee and pick up where I left off the day before. When I would get stuck on a problem or wanted to get an idea on how to go about it, I’d do some research, usually on StackOverflow – the go to website for programmers – to see how other programmers have tackled similar problems. I’d also usually spend a small part of my day helping others who were newer to the program on projects that I had already done. This was great for me because it helped to reinforce what I had already learned, and it helped the newer students work through their problems. Of course when I first started, I was the newer student and there was always someone to guide me. A few of the other students and me (and sometimes the instructor) would grab lunch around 1-3pm for a half hour to an hour. When I’d get back, I would jump right back into the problem I was working on. Depending on the day, I’d usually head home anywhere between 6pm and 9pm. This was more or less a typical day for me.

Q. Were you burned out at any point? Or were you always energetic, ready to move on to the next challenge?

Jesse: Of course I was burned out sometimes! Anyone who tells you that they don’t get burned out every now and then after staring at a computer screen for sometimes over 12 hours a day is lying. I found that I was pretty useless most of the time after 8pm, so if I was still at my desk come 8pm, I’d pack my things up and head home for the night.

Q. How about your confidence level as a software engineer? How would you compare where you were before starting the program to where you are now? 

Jesse: I’m pretty confident. When I started the program I was pretty nervous and wasn’t sure if I could do it. But like anything else, as time went on and I had more and more practice, my confidence in my ability as a programmer went up. I remember about halfway through the program, there was one project in particular that I completed that made me feel like “Ok, I can do this.”

Q. What would you say about your cohort? Did you guys interact a lot or did most people mostly keep to themselves?

Jesse: Everyone was really friendly and always willing to help each other. We’d all try to get lunch together at least a few times a week and every now and then a few of us would go to meet-ups or the occasional bar together after class.

Q. How was your internship experience and the experience with the curriculum?  What did you work on? Did that help during the interviews?

Jesse: The internship was great and the curriculum prepared me really well for it. During the internship, I worked on a really tough parking app that allows the user to see available street parking in large urban cities like Manhattan. All of the major skills I gained throughout the curriculum were put to work in the making of this app.

It turned out to be super valuable to have a real world app that I was working on and could talk about while interviewing. The main job of an interviewer is to assess the candidate’s skill level. There’s no better way to do that than to be able to show them a project your working on that is bound for the app store.

Q. What are your future plans?

Jesse:  I love my current job and plan on working here for the foreseeable future. On the side, my friend and I are going to continue to work on our own apps. The goal is for one of our side projects to eventually gain enough traction to be able to work on it fulltime.

Q. Anything else you’d like to add for someone considering TurnToTech, especially to those why don’t come from a science or engineering background? 

Jesse: Just do it. It’s unbelievable when I look at where I was 3 months ago and where I am now. Don’t be intimidated if you’ve never coded before. I had never even seen code before TurnToTech and was able to become a full-fledged programmer with a job in just 3 months. If this is something that you’ve been thinking about trying, just do it.

Thanks a lot Jesse. Wish you luck at your new gig!

Avatar

iOS app development best practices

Here's a fairly detailed set of best mobile development practices from Aditya Narayan, TurnToTech's co-founder and CEO. 

-----

Over the past 15 years, I’ve actively been involved in Information Technology -  building software, building data centers, designing large scale systems, heading technology departments at large companies and running my own tech companies. These lessons are based on those experiences and the iOS specific ones are based on our experience with mobile development in the last 7 years. Each of these is based on direct experience on more than one occasion over several projects.

image

In many ways, I use the ‘good enough’ approach but in most cases, I have absolute standards and I don’t cut corners unless absolutely necessary. My approach to everything, including software development is entrepreneurial. I minimize risk, maximize resources and try to produce a very high quality product. The following lessons are mainly centered around minimizing risk. 

WHAT SHOULD I DO ABOUT DESIGN and ARCHITECTURE of an iOS APP?

  1. Writing code for the app is important but architectural decisions are more important unless your team is really small and has extraordinarily talented people who can improvise on the fly - in which case you don’t need to read this. But otherwise - do spend time designing, prototyping and defining the architecture before formal coding and iterating the cycle over and over.
  2. As a process: design the user process/workflow first, next design the data/information model i.e. how information is viewed/created/retrieved/stored - both in app and in the backend, and then choose your backend technologies, design classes etc. Definitely do not let visual designs, pixel perfection and animations distract any of the developers at this stage.
  3. Use wire framing tools - or paper. Or use crude Flinto type models. Don’t go for colors and visual effects - they will distract your team unnecessarily i.e. take the big picture approach at this point
  4. Remember that an app is a fat client - which is very different from a thin web app. If you’re not clear why - look up the architecture of fat client applications. It’s been extensively documented.
  5. If cached data is relevant to your app  - design, prototype and debate your caching model - before implementing or you'll be in deep trouble. Caching helps in many ways - better responsiveness, usability when network is not available, reducing load on server.
  6. Spend some time drawing the state diagram for your app. You’ll find it useful for many things but especially for push notifications.
  7. Which software development patterns are most useful in iOS? All patterns are relevant but obviously, MVC stands out - and it doesn't stand for Massive View Controller - I wish I'd coined that term  :)  HOW SHOULD I APPROACH SECURITY FOR AN iOS APP?
  8. Do not ignore security - make sure your developers understand password hashing, salt, privilege escalation, ssl and server side authorization. Make sure every request is authenticated and authorized unless it's to a part of the app where the user is not supposed to be logged in. Bottom-line: centralize your security, don't apply it piecemeal
  9. Understand that storing keys/passwords is tricky business. Storing those in code and thinking that the compiler will somehow obscures it is a very common misunderstanding. WHAT ARE TROUBLESHOOTING AND DEBUGGING BEST PRACTICES FOR iOS APPS?
  10. Logging - split every discrete process such as user sign up or tagging a photo into 4-5  stages. Log success/failure of each step. This way even when app crashes unexpectedly - you'll know the last successful step. 
  11. Make it easy to access the logs from the device. During debugging - you may want to log all this to a file. You can get the users to send over files or build a little features to email that log directly from the app.
  12. Use crash analytics. Understand something called 'symbolication'  WHAT IS THE BEST WAY TO PERSIST DATA FOR iOS APPS?
  13. Avoid core data and use sqllite if you can - your app will be easier to port to Android and everything will be less magical. But if you’re not concerned about Android and want to launch quickly and don't have an overly complex data model and someone on your team knows Core-data well - go for it. That's  a lot of if's by the way...
  14.  It may be useful in some cases to have two layers of  your model classes - one for displaying information and one for physically storing data eg locally to SQLite or the backend.  And then you need to transform between the two layers. Test yourself on this question: How disruptive will it be to switch from core-data to SQLite?  The answer should be - “ Our model is clearly abstracted out. It’ll just take some coding but we can easily switch’. But if your answer is - "we’ll need to almost rewrite the app” - you’re dealing with a deeply flawed architecture.
  15. If you are using a nosql database in the backend - don't use performance as generic rationale to justify it if you don’t already have a massive performance issue. Find another reason. There are plenty. A good reason is flexibility. WHAT ARE SOME NETWORKING RELATED BEST PRACTICES FOR iOS APPS?
  16. JSON is good for exchanging data over the wire but remember that you get nothing more than strings and numbers. Be prepared to deal with unexpected types. Try to get your feet wet by formatting dates and normalizing across timezones.
  17. Don't ignore push notifications until the very end of the app -  they are super easy to get started with but super tricky to get right. The number of cases you need to test for is huge if different push notifications need to open different parts of your app.
  18. Spend plenty of time understanding “network reachability" - it's powerful and deceptively hard to get right. Take an unreliable network as the norm. And leverage caching to provide a good user experience.
  19. The app should recover gracefully - after a sudden reboot or lost network. Harder than it sounds.
  20. Constantly read about specifics from the developers of major apps like What's App, instagram, Facebook etc. 
  21. Use the NetworkLinkConditioner - it will save you months of debugging time. PROGRAMMING
  22. Should I use code from GitHub in my iOS projects? Don't use frameworks with a bunch of dependencies from github for doing simple things. If you do -  be prepared to fix at least one serious bug in each which means you’ll be understanding/changing/testing that code. If you do decide to use such a no-name framework - do the following
  • Check how many commits they’ve had in the last year
  • How many active developers
  • How much stack overflow activity for that project
  • Is one of their lead guys answering questions on stack overflow 
  • Is there a company with some longevity behind the project
  • Many times, a more generic but no-name framework will use 1000’s of lines of code along with dependencies and potential inconsistencies with your code -  for a feature that you may be able to write in under 100 lines. We’ve seen several such cases.
  1. How does one prioritize the work for an iOS App? Don't go after visuals and pixel perfection until your app is robust enough that it doesn't crash under various situations like airplane mode, low network bandwidth, big DNS delays etc. 
  2. Which frameworks should I use? Don't use frameworks whose use cannot be conclusively justified e.g. don’t use core-data or GCD just because everybody likes to talk about them.
  3. What's the best way to build navigation in an iOS App? Should I build my own? Don't create your own navigation unless you’re an expert problem solver - because it will be problematic. Use built in classes and customize.
  4. Shoud I use Objective-C language features such as categories and understand the Objective-C runtime? Don’t go overboard with categories and swizzling and other exotic things. Use  features when they make sense. Readability of code important at the end of the day. And developers from other backgrounds may be joining your project. And soon you may be developing for another platform. So it's best to not get too deep into the intricacies of a specific language or technology and instead focus on breadth of your understanding. 
  5. Should I use NSNotification for integrating different parts of my iOS app? Don’t use NSNotifications for passing data between different parts of your app. Use them for notifications only. You’re asking for serious problems down the line. This is worse than goto’s. 
  6. How often should I refactor? Refactor constantly. Copy pasted blocks of code mean bad code. But everyone knows that :)
  7. How much commenting is required for code? Comment your code like you’re writing a book. Especially, document your own algorithms with examples. This is way more important than proper naming of classes and variables which one should do in any case.
  8. We have ARC. Do we still need to understand memory management? Memory management - understand how it works in iOS. ARC isn’t as magical you’d like it to be. If it means anything - I wouldn't hire anyone as an iOS developer unless they understood how memory management works. WHAT ARE SOME OPTIMIZATION BEST PRACTICES?
  9. Do not optimize your code until the very end. Focus on robustness over performance. You may have heard: premature optimization is the root of all evil
  10. Optimization is hard. That task should be given only to the best in your team.
  11. Understand the difference between network latency and bandwidth and how they affect perceptible performance. In order of difficulty, if writing the first 70% of the functionality takes effort X, optimization should be treated at near 6-10X or so. Compiler flags and server settings for optimization are not what we're talking about. We're taking about improving algorithms in your code.
  12. Be systematic and focused. Identify the slowest steps in a process and optimize those instead of optimizing random parts of the code.  How does one plan an iOS project?
  13. Make sure at least one person in your team is a master in memory management and instruments and knows both ARC and manual memory management 
  14. Make sure at least one person in your team is a master in performance testing 
  15. Make sure at least one person in your team is big on automated testing 
  16. Make sure at least one person in your team is a master in source control management, especially merging. And this can't be a semi-technical manager - it has to be a senior developer 
  17. Make sure every developer understands async programming 
  18. Make sure every developer understands how to debug http using command line tools like curl
  19. Make sure every developer understands how to cancel a pending operation such as a network request — and why they should know about it
  20. Make sure every developer understands how network timeouts work 
  21. Make sure you entire team understands MVC. Don't have any logic in your controllers. 
  22. It is relatively hard to split an iOS app into different parts for different developers to work on. So pay special attention to this aspect. Frequently, developers will be working on the same files.
  23. Carefully guide your developers who want to constantly use the latest and greatest and use technology for the sake of technology. While that’s great for creativity, it doesn’t work well when launching products. Try a balance between creativity and discipline.
  24. USER FOCUS
  25. If your app is super unique in its concept - make sure you have nice visual tutorials. Otherwise skip those
  26. Test your app with someone from outside of engineering for every little feature that gets added - even when it's super crude. Not doing that is asking for several months in lost time. 
Avatar

Do you have an app idea? Come and join us for app pitch competition event. (at TurnToTech)

Avatar

He thinks: "The future of technology is going to move away from the phone and towards things like google glass and smartwatch..." (at TurnToTech)

Avatar

TurnToTech Press Release

There's a cool new school in town that's here to teach you how to kick some app! Meet TurnToTech, a new tech school located in New York City's "Silicon Alley". Does technology rule your roost? Is your mind swirling with ideas for apps that will bring us from our current neanderthal-ish state to living like George and Judy Jetson? If this at all sounds like you, you may want toss the other half of that chipotle burrito into the ice box and get your gluteus maximus down to 184 5th ave, 4th Floor. TurnToTech is a tech school with a primary focus on mobile software development. Whether you're looking for assistance bringing your app idea to fruition or to learn the newest ins and outs of software development and start a career as a software engineer, TurnToTech offers it all. Well, not everything, they're not serving cronuts just yet. TurnToTech offers techies, entrepreneurs, students and professionals a space in which they can learn, create, and collaborate. In their accelerator based 12 week program - students first learn the art of coding and software development in an intense 6 week training program. And then... then it gets wild! We're talking a 6 week internship during which students build live apps that they launch into that alternate universe we refer to as the app store. That's right, hands on experience building real apps with Amazon backend! So what makes their training and internship program so different from their brethren? TurnToTech focuses on the Software Development Life Cycle (SDLC). Students therefore not only learn how to code but also how to implement what they've learned. Not impressed yet? Well get this, they give students IP equity in the apps they help build during their internships. Their educational programs range from iOS, which will be the platform of choice for the inaugural course, to Amazon Cloud development, Android, and a slew of others to follow. Another funky factor about TurnToTech is it's pricing and payment structure. They offer loans, payment plans AND scholarships! Don't have one of those fancy new fandangled computer things of your own? Not to worry my little geek squad, they provide each student with a Mac to use for the duration of the course. Students will also have free access to job fairs, top tech recruiters, and all other events hosted or sponsored by these tech tycoons. So who's behind all this madness? The founders Aditya Narayan and Harish Shadadpuri are seasoned technology entrepreneurs who founded 1 to 1 Tutor a successful online Math education service which has tutored over 20,000 students over the past 6 years. 1to1Tutor recieved US Government approval under No Child Left Behind in over 15 US states. Aditya holds an MS and BS in Physics from IIT Kanpur – India’s top tech school. He has a successful track record of building businesses and rolling out large scale technology solutions. He was a top technology executive at Marvel (that's right, MARVEL, now pick your jaw and your IPhone up off the ground) , Starwood Hotels and a few other well known companies. He was also the founder of QCD Microsystems, which developed the highly popular Windows-Linux interoperability platform ‘InterStructures.  At 1to1 Tutor he pioneered online math tutoring in the US starting in 2005.  And he has written plenty of well regarded technical articles published by IBM. Harish has a long track record of successful startups and venture investment. In 2006, he co-founded 1to1 Tutor and has been instrumental in growing the company from 200 to 20,000 students. Get this, in addition to their software development courses TurnToTech offers a free co-working space and a free event space. So whether you're looking to bounce ideas off of other members of the intellectual upper echelon (yeah, keep believing that, one day...) or host a GTA-V hackathon they've got all the bases covered. Oh, and lest not we forget the view from the wall of windows. You'll feel like you're in a skybox at a Jets vs. Patriots game. Just replace the line backers and quarterbacks with taxis and galavanting tourists.  The Free Co-working area is open daily  Mon - Fri from 9:30AM - 6:30PM. For  internships, courses, event dates and inquiries just give them a call at 212-924-TECH.

Sponsored

You are using an unsupported browser and things might not work as intended. Please make sure you're using the latest version of Chrome, Firefox, Safari, or Edge.