Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lessons Learned: ~ 2 years on RoR

Lessons Learned: ~ 2 years on RoR

this is slide taken from Qiscus TechTalk #82 at JDV.

evanpurnama

July 08, 2015
Tweet

More Decks by evanpurnama

Other Decks in Education

Transcript

  1. My Story Starting in 2013 Using Ruby on Rails (mainly)

    for the Back-end side Original idea is forum discussion platform (like discourse or branch) Wednesday, July 8, 15
  2. Already experienced build real app being used by tons of

    people, in “right and proven” way. Got big investment and ready to build millions or billions dollar company. [no] Experienced building a lot of toy projects, enthusiastic learner, wanna build the next toy. [no] Experienced building a lot of toy projects, enthusiastic learner, have a task to create serious app. Your job (or life) is on the line. [yes] Total beginner, come from different background, want to get something quickly developed. [yes] 1. Knowing About Yourself which one? Wednesday, July 8, 15
  3. 2. Knowing About Your App You know very sure about

    the app you want to build. [no] You know the app that you gonna build, but realize a lot of validations needed to proof that. [yes] You just want to try new stuff. Any app is ok. [no] which one? Wednesday, July 8, 15
  4. 3. Knowing about Your Friends You have very close friend

    that always have time to help you. His name is Jeffrey Way. [no, use Laravel instead] You have very close friend that always have time to help you. His name is Guido van Rossum or Adrian Holovaty. [no, use Django instead] You have very close friend that always have time to help you. His name is David Heinemeir Hanson. [yes] which one? Wednesday, July 8, 15
  5. 4. If in doubt, go Rails Way In the future,

    hopefully you wont develop your app on your own. May be you need to do something else for the company and leave the app development for other team. You rarely have time and spirit to write good standard and documentation about your code. Wednesday, July 8, 15
  6. 5. Deployment & Server Reliability is very important for running

    business Care-less and backup-less mistake is very expensive. Easy deployment is very very important for rapid development We dont know what we dont know. Wednesday, July 8, 15
  7. 6. Tools We have very limited time. A lot of

    things need to be done. Focus to the core app function. Tons of tools out there ready to be used. Wednesday, July 8, 15
  8. 7. Branching Server Have Staging & Production server at least.

    the environment of Staging & Production server need to be exactly the same. Make development (Local) server same with the Production server if possible, otherwise need to heavily test on Staging. Always thinking about the drawback when adding Wednesday, July 8, 15
  9. When having big changes, create special staging server only for

    this features/changes. And test this out. Make your system easily be duplicated/replicated, when you need experiment to the new feature or improvement. Vagrant may be good for solving your problem, but not always. You may want simpler thing like RVM and RubyEnv only to manage your env in the beginning. Wednesday, July 8, 15
  10. Auto-Test is very important, almost as important as shipping it

    on-time. Auto-test is like wearing helmet when riding a bike, you still have chance to crash and die. But you cannot not wearing helmet. Actual user testing is deadly important. Period. 8. Do Test Wednesday, July 8, 15
  11. 9. Do Not Block As a programmer we know that

    a long process which block another process is bad. It causes bottleneck that affect much on the whole performance of the system. Same goes with the programmer itself. Do mock-up first when serving client side app, so that they can proceed. Wednesday, July 8, 15
  12. 10. Code Review is Important A lot of cases in

    the complex software that are very difficult to be caught in auto-test or user-test, but they are obvious when we review the changes of each commits. Always improve the readability of the code and distribute knowledge earlier. There are lots of drawback of code-review itself, so consider your condition as well. Wednesday, July 8, 15
  13. 11. Git Branch management is very important as the team

    grows. Avoid reset --hard and/or rebase, or everything related to rewriting history. Unless, you really know what you are doing. Make it transparent when you push something to the system, make a notification to your team when you do so. To avoid blocking. Wednesday, July 8, 15