It’s been quite a long time since I last posted anything up on my blog. I wanted to share with everyone where am I today and where I’m going tomorrow. Today, I sleep in New Jersey and work in Midtown New York (two blocks from the Glass Apple Store) at a company called Rejuvenan Global Health. I’m an iOS Engineer. I enjoy the projects that I’m working on and I’m always challenging myself to learn something new every single day. I was very nervous about moving up to the NJ/NY area. I had just graduated and literally a month later I’d landed a job in one of the largest cities in the world. However, when you get your first real job (out of college or school or wherever) you’ll find that a majority of your time is taken up by that job. I thought I would have more time for things now since I didn’t have homework or exams to study for. But no, I was wrong.
When you account for a 45 min train ride to New York, walking from Penn to 57th street, working for 9ish hours, and walking back to Penn, and finally getting home after rush hour train traffic, you start to prioritize what you want to do when you get home (don’t forget dinner!) I’ve started to pull myself away from random reddit searches, reading blog posts about obscure things, and checking out what people are working on via twitter. I’ve even deleted my Facebook account. Instead, I’m spending more of my time reading blog posts about iOS development, software design patterns, and reading some popular open source iOS libraries on Github. I want to get further in my career and to do that I need to soak up how to quickly solve problems at work.
When I was coming up with a list of things to work on this year, my list kept growing and growing. My refined list includes: test driving every piece of software that I write from now on, learn reactive functional programming, and getting better at iOS design via Autolayouts and UIKit.
I’m currently working on a team with 3 developers (one UI/UX Engineer, 2 Systems/Backend Engineers) and they are all test driven. A majority of our standup talk revolves around testing. That’s because when you’re trying to build a platform with a small team, there isn’t much room for error. Any error that occurs in the platform is known by a member of the error domain before it happens, all through test driven development! So, I’ve decided to test drive every piece of reasonable software that I write from now on. This means going back and writing tests for each older project I have on Github.
If I had more time I’d like to learn functional programming with Haskell. I’ve spent a few days with Haskell but nothing serious (not yet). Instead I’m going to learn reactive functional programming by using a framework called ReactiveCocoa. ReactiveCocoa is a Cocoa framework inspired by Functional Reactive Programming, by providing APIs for composing and transforming streams of values over time. I believe functional programming will help me solve a vast majority of problems I have at work.
I feel very comfortable with Objective-C and various software design patterns such as Model View Controller, Abstraction, Singletons, Adapter, and Delegation (to name a few). However, I’d like to get better at the look and feel of building an iOS application. I’ll be the first to admit, I suck at Autolayouts, but soon enough I’m going to master it. This means spending a majority of my time getting better at Autolayouts and UIKit, by spending a lot of my time in a repo called Ray. By the end of the year, I want to be able to build views without interface builder.
Thank you for reading my update! Stay tuned to read blog posts about building network controllers using NSUrlSession and test driven iOS development using XCTests and XCUITests!