In the week-long WWDC, there are only 2 to 3 sessions on higher level concepts such as architecture and testing. However, these principles seem to get lost in the midst of learning all the cool new frameworks Apple gives us in WWDC every year. Every time, the seemingly quick and small wins often lead to slower and more painful consequences. There were situations such as tight deadline and too many developers that I ignored these well established software development principles. I have since practiced these same techniques in all my projects. But I didn’t know who Uncle Bob, Martin Fowler, Kent Beck, or Joel Spolsky were. I could name every single player, even the reserves, on every team in the NBA. Tests should be written by responsible programmers who care about correctness and not wasting other people’s time.Īs a result, during the integration week, I often just sat there and start/stop my module while browsing ESPN at other times. Testing shouldn’t be done as an afterthought by QA. I now realize that’s the essence of testing. But I was essentially mocking other people’s modules, and making sure my module works correctly. I wasn’t introduced to formal terminologies such as unit tests, mocks and stubs, dependency injection, single responsibility, or test driven development. That’s how I began “testing” my own code. So I wrote classes to represent these other modules, and made them return some expected outputs provided they worked according to the spec. With the spare time that I had, I wanted to prove my code work and that it was someone else’s fault if integration didn’t go smoothly. Since I had a lot of motivation and worked very fast, I almost always finished my module quickly, before other modules were ready for integration. I didn’t want to go through that experience again. Integration day turned into integration week. We all had to bang our heads against the wall, trying to iron out issues while under tremendous stress and managers overlooking our shoulders. On integration day, everyone fired up their own module and nothing would work. Communication can be synchronous and asynchronous, so we would get all kinds of errors, sometimes missing responses.Įssentially, everyone wrote their own code separately according to some predefined specs (waterfall was still main stream at that time). In my first job out of university, I was responsible for a module that needed to interface with 5 other modules developed by other people and companies simultaneously. I’m Raymond Law, and my goal is to teach you everything I know about developing iOS apps using Clean Architecture and unit testing.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |