Introduction to MVVM for iOS


Most of iOS Developers are familiar with MVC (Model-View-Controller). Some call it Massive View Controller. That’s certainly how it felt at the time. One of the key architectural changes I would make would be to use an alternative to Model-View-Controller called Model-View-ViewModel (MVVM).

Model-View-ViewModel (MVVM) is basically another architectural paradigm for GUI applications. Although it seems similar to MVC (except with a ViewModel object in place of the controller), there’s one major difference — the view owns the view model. Unlike a controller, a view model has no knowledge of the specific view that’s using it.

There are three really important points about MVVM:
– MVVM is compatible with your existing MVC architecture.
– MVVM makes your apps more testable.
– MVVM works best with a binding mechanism.

Why Engineers Should Write


We are engineers. We don’t need to know how to write. Why are you making us do this?

I fully understand that we, engineers, are more like science minded guys, not that kind of literature minded ones. We spend a lot of time thinking about logical or math stuffs, not writing stories about love and romance with super fancy words.

But, we literally do writing (almost) every day. Yes, we write code. Then, why don’t we write essays?

Writing promotes many of the same skills required in programming

Code and essays have a lot of things in common. Both begin as a blank slate and an idea, then both will end as a good product for intended audience. The product is a result of logical statements, bundled into modular units whether it be methods or paragraphs.

A great engineer is a great writer. The essays will be as clean and elegant as the code. Because both engineers and writers have the same core discipline, think clearly before do the work.

Writing improves expression

We live in the world of communication with clients and collaboration partners. But we can see it every day that we mostly do only short expression. We often found it hard describe the current issue, solution, or how to prevent future issue to others. The habit of writing will help us to make a clear communication and move the project forward.

Writing helps ourself and others

Many of us are motivated by the potential for our software to have impact, to make a difference in people’s lives. In the same way, writing could give a great impact. The tutorial about programming we wrote could sparks students’s interest in computer science. Or, other engineers don’t have to learn all the technical manuals, thanks to us who wrote the tutorials.

Even if nobody reads our essay, writing it will make an impact on us. Writing about software in general promotes learning that could add more knowledge to us. It will clarify our opinion on a topic and strengthen – or even weaken – our beliefs.

Good writing takes time. It’s natural to write a sloppy one at the first, then improve the quality over several revisions. If you feel too busy to blog, at a loss for topics, or worried about your opinion being on the public record, give Steve Yegge’s You Should Write Blogs few minutes of your time. Even if it doesn’t convince you, I think you’ll enjoy the read.

Writing offers the same sense of impact that motivates an engineer to write software. Combine this with how it promotes skills useful in software engineering and facilitates collaboration, then suddenly writing appears to be a worthwhile activity.