first do no harm - 360|andev

Post on 21-Jan-2018

271 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

@brwngrldev

What’s Involved:• Major in Math/Science

• Take the MCAT

• Go to Medical School

• Take the USMLE Step 1

• Do Rotations

• Take the USMLE Step 2

• Complete Internship

• Do Residency

• Take the USMLE Step 3

• Take the Board Exams

• Do a Fellowship

@brwngrldev

@brwngrldev

@brwngrldev

How can I become

an Android

Developer?@brwngrldev

How can I become a

great Android

Developer?@brwngrldev

@brwngrldev

@brwngrldev

Newsletters

@brwngrldev

Podcasts

@brwngrldev

Online Courses• At your own pace

• All aspects of development

• Different perspectives

@brwngrldev

Online Courses - Udacity

@brwngrldev

Online Courses - Caster.IO

@brwngrldev

“…associate with

eagles, you will learn

how to soar…” - Ojo Michael E.

@brwngrldev

Conferences

• Hear from the Experts

• Grow your Network

• Learn new Techniques

@brwngrldev

Conferences

Open Source

• Countless Examples

• Learn by Doing

• Design Patterns in Action

@brwngrldev

Open Source

@brwngrldev

Open Source

@brwngrldev

Study• Newsletters

• Podcasts

• Online Courses

• Conferences

• Open Source@brwngrldev

@brwngrldev

@brwngrldev

Prevention

• Static Code Analysis

• Code Reviews

• Leak Canary

• Testing

@brwngrldev

Static Code Analysis

Lint

Checkstyle

FindBugs

PMD

@brwngrldev

Static Code Analysis

0

40

80

120

160

Checkstyle FindBugs PMD Error Prone Lint

@brwngrldev

Static Code Analysis - FindBugs

@brwngrldev

Static Code Analysis - FindBugs

@brwngrldev

Code Reviews

@brwngrldev

Code Reviews

@brwngrldev

Code Reviews

@brwngrldev

Code Reviews

Here’s my awesome code!! Cool, looks like line 54 could cause an NPE though.

@brwngrldev

Code Reviews

Here’s my awesome code!

Oh yeah, you’re right. Will fix!

! Cool, looks like line 54 could cause an NPE though.

@brwngrldev

Code Reviews

Here’s my awesome code!

Oh yeah, you’re right. Will fix!

Thanks for not `let`ting me forget that! 😂

! Cool, looks like line 54 could cause an NPE though.

Instead of an `if` here, a `let` would be better.

@brwngrldev

Code Reviews

@brwngrldev

Leak Canary

debugCompile “…:leakcanary-android:$leak” releaseCompile “…:leakcanary-android-no-op:$leak” testCompile “…:leakcanary-android-no-op:$leak”

@brwngrldev

Leak Canary

private BooksAdapter booksAdapter; @Bind(R.id.recyclerView) RecyclerView recyclerView; private static Toolbar toolbar; private BooksPresenter booksPresenter;

@brwngrldev

Leak Canary

@brwngrldev

Architecture

@brwngrldev

Architecture

Foo Foo Bar

Baz

@brwngrldev

MVP + Dagger

@brwngrldev

MVP + Dagger

@brwngrldev

EVENT BUS/RXJAVA

DATABASE

REPOSITORY

REPOSITORY

ACTIVITY

FRAGMENT

PRESENTER

PRESENTER

SERVICE

API Testing

API Testing - Postman

@brwngrldev

API Testing - Postman

1.Send Requests

2.Receive Response

3.Run Test Scripts

@brwngrldev

Sending Requests

@brwngrldev

API Response[ { "userId": 1, "id": 1, "title": "sunt aut facere repellat", "body": "quia et suscipit\nsuscipit recusandae" }, { "userId": 1, "id": 2, "title": "qui est esse", "body": "est rerum tempore vitae\nsequi sint" } ]

https://jsonplaceholder.typicode.com@brwngrldev

Test - Status Code

tests["Status code is 200"] = responseCode.code === 200;

@brwngrldev

Test - Schema

var schema = { "type": [“array”, “null”] };

var jsonData = JSON.parse(responseBody);

tests["Valid Schema"] = tv4.validate(jsonData, schema);

@brwngrldev

IT GETS

BETTER@brwngrldev

Test - Schema

@brwngrldev

{ "userId": 1, "id": 1, "title": "sunt aut facere repellat provident", "body": "quia et suscipit\nsuscipit recusandae" }

Test - Schema

var postSchema = { "type" : "object", "properties" : { "userId": { "type" : "integer" }, "id": { "type" : "integer" }, "title": { "type" : "string" }, "body" : { "type" : "string" } }};

@brwngrldev

API Testing

@brwngrldev

Set Up Monitors

@brwngrldev

Prevention

• Static Code Analysis

• Code Reviews

• Leak Canary

• Testing

@brwngrldev

@brwngrldev

74 year oldstomach pain

34 year oldstomach pain

@brwngrldev

@brwngrldev

@brwngrldev

@brwngrldev

LET’S

SHARE@brwngrldev

Code Outside

InsideEmulator

CODE

@brwngrldev

@Overridepublic void onFailure(Call<Book> call, Throwable t) { bus.post(new BookLoadingErrorEvent(id));

Timber.e(t, "Unable to load the book data from API.");}

Write Logs

@brwngrldev

Logcat/Pidcat

@brwngrldev

@brwngrldev

Log Events

public void trackEvent(String event) { analytics.track(event);

if (Fabric.isInitialized()) { Crashlytics.log(event); }}

@brwngrldev

Crashlytics

@brwngrldev

OUTSIDE

@brwngrldev

Crashlytics

@brwngrldev

Crashlytics

@brwngrldev

Classy Shark

@brwngrldev

Classy Shark

@brwngrldev

Battery Historian

@brwngrldev

Battery Historian

@brwngrldev

Battery Historian

@brwngrldev

@brwngrldev

Systrace

@brwngrldev

Systrace

Alerts Pane

@brwngrldev

Systrace

Alert Detail

@brwngrldev

INSIDE

@brwngrldev

Apk Analyzer

@brwngrldev

Android Profiler

@brwngrldev

Android Profiler: Memory

@brwngrldev

Android Profiler: CPU

@brwngrldev

@brwngrldev

Android Profiler: Network

@brwngrldev

EMULATOR

@brwngrldev

Android Options:

GPU Overdraw

blue -> green -> light red -> dark red

(1x) (4x or more)

@brwngrldev

Android Options:

GPU Overdraw

@brwngrldev

blue -> green -> light red -> dark red

(1x) (4x or more)

Android Options:

Profile GPU Rendering

16 milliseconds

@brwngrldev

Android Options:

Profile GPU Rendering

https://developer.android.com/studio/profile/dev-options-rendering.html@brwngrldev

@brwngrldev

@brwngrldev

Resources• http://www.kotlinweekly.net - Kotlin Weekly

• http://androidweekly.net - Android Weekly

• https://www.androiddevdigest.com - Android Dev Digest

• http://www.adavis.info/2015/07/android-devs-listen-up.html - Podcasts

• https://www.udacity.com - Udacity

• https://caster.io - Caster.IO

• http://androidstudygroup.github.io/conferences - Android Conferences

Resources• http://findbugs.sourceforge.net - FindBugs

• https://github.com/square/leakcanary - Leak Canary

• https://www.getpostman.com - Postman

• https://github.com/JakeWharton/timber - Timber

• https://github.com/JakeWharton/pidcat - Pidcat

• https://fabric.io/kits/android/crashlytics - Crashlytics

• https://www.lynda.com/trial/AnnyceDavis - Lynda.com

Resources

• https://github.com/google/android-classyshark - ClassyShark

• https://github.com/google/battery-historian - Battery Historian

• https://developer.android.com/studio/profile/systrace.html - Systrace

• https://developer.android.com/studio/build/apk-analyzer.html - APK Analyzer

• http://www.adavis.info/2015/03/android-overdraw-what-is-it-and-why.html - Overdraw

• https://developer.android.com/studio/profile/dev-options-rendering.html - GPU Rendering

top related