effective entrepreneurship for developers

25
Effective entrepreneurship for software developers in the mobile age Carlos Ble carlosble.com - @carlosble Presented at: Sociedad de Promoción Econónica de Gran Canaria (SPEGC). Gran Canaria, 20 abril 2013

Upload: carlos-ble

Post on 01-Nov-2014

1.106 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Effective entrepreneurship for developers

Effective entrepreneurshipfor software developers

in the mobile age

Carlos Ble carlosble.com - @carlosble

Presented at: Sociedad de Promoción Econónica de Gran Canaria (SPEGC).

Gran Canaria, 20 abril 2013

Page 2: Effective entrepreneurship for developers

Building the right software- Entrepreneurship- Lean startup & Impact Mapping- Agile, SbE & BDD

Building the software right- Clean code & craftsmanship- SOLID design & architecture- TDD, and other XP practices- Continuous delivery- Native, HTML5+JavaScript, Xamarin...?- Mobile testing

Interactive hands-on session: - Code with me on the randori kata

@carlosble

Page 3: Effective entrepreneurship for developers

@carlosble

Are you Are you really anreally an

eenntteepprreenneeuur?r?

Page 4: Effective entrepreneurship for developers

Let's build the right software

Let's build the right software

@carlosble

Page 5: Effective entrepreneurship for developers

Building the right software

● Lean startup: - Fail fast- Validated learning - Market discovery- Avoid waste- Book: Lean startup by Eric Ries

● SBE, BDD: What do we need and why? It's all about communication... let's talk! - Books & Authors: - Gojko Adzic (3 books) - The Cucumber Book (Matt & Aslak)

@carlosble

Page 6: Effective entrepreneurship for developers

Building the right software

● User stories:Title (one line describing the story) Narrative:As a [role]I want [feature]So that [benefit]

Source: Dan North - http://dannorth.net/whats-in-a-story/

● Personas (personajes in Spanish)

● Impact mapping (impactmapping.org)

● Planning & Analysis : Discover to Deliver [.com] (book)

@carlosble

Page 7: Effective entrepreneurship for developers

Gherkin language: What, not how

Given Fred has bought a microwaveAnd the microwave costs 100€When we refund the microwaveThen Fred should be refunded 100€

Source: Liz Keogh - http://www.slideshare.net/lunivore/behavior-driven-development-11754474

@carlosble

Page 8: Effective entrepreneurship for developers

Cucumber and step definitions

[Given(“Fred has bought a microwave”)]public void GivenMicrowaveIsBought(){...}

[And(“the microwave costs (.*)€”)]public void AndMicrowaveCosts(int cost){...}

[When(“we refund the microwave”)]public void WhenWeRefundTheMicrowave(){...}

[Then(“Fred should be refunded (.*)€”)]public void ThenShouldBeRefunded(int amount){    Assert...}

Step definitions using C# with SpecFlow (Cucumber for .Net)

@carlosble

Page 9: Effective entrepreneurship for developers

Let's build the software right

Let's build the software right

@carlosble

Page 10: Effective entrepreneurship for developers

Building the software right

Software craftsmanship manifesto:

● Not only working software,             but also well­crafted software● Not only responding to change,             but also steadily adding value● Not only individuals and interactions,             but also a community of professionals● Not only customer collaboration,             but also productive partnerships

“The only way to go fast, is to go well” - Robert C. Martin

@carlosble

Page 11: Effective entrepreneurship for developers

Building the software right

Clean Code:Does it matter? - Cleancoders.com and the book

Low coupling, high cohesion, dependencies.

SOLID design principles:Single ResponsibilityOpen/ClosedLiskov SubstitutionInterface SegregationDependency Injection

TDD and Pair programming:Minimalistic, goal driven, precise

@carlosble

Page 12: Effective entrepreneurship for developers

Building the software right

So you have a version control system,... DO YOU?!

@carlosble

Page 13: Effective entrepreneurship for developers

Building the software right

Remove duplicationRemove duplication

Good namingGood naming

@carlosble

Page 14: Effective entrepreneurship for developers

eXtreme Programming

It's about VALUES:

● Simplicity

● Communication

● Feedback

● Courage Honesty→

- Book: Extreme Programming Explained: Embrace change 2nd edition, Kent Beck

@carlosble

Page 15: Effective entrepreneurship for developers

The TDD Mantra

@carlosble

RED: Before writing the code,

express your intent in the form of a test

GREEN: Don't think, just make

the test pass with the minimun effort,

the simplest way

REFACTOR: Remove duplication

Improve naming SOLID

Books:

> Test Driven – Lasse Koskela

> Growing object oriented software guided by tests – Freeman & Pryce

> Diseño agil con TDD – Carlos Ble & co.

Page 16: Effective entrepreneurship for developers

Pair programming or... maximizing the amount of work NOT done

● The bottleneck of the project is not the keyboard.

● Incredibly effective way of eliminating waste.

● Best enemy of defects.

● I always prefer to pair than coding alone (except on those days when I don't feel any good).

● Sinergy: 1+1 = 4

@carlosble

HIGH QUALITY CODE

HIGH QUALITY CODE

Page 17: Effective entrepreneurship for developers

If you are in a team...

● Code reviews.

● Continuous integration.

● Be a good team player: do your best always.

● And before anything else... stick to the principles and understand the values.

@carlosble

Page 18: Effective entrepreneurship for developers

Architecture Book: Code Complete, Steve McConnell

● Major classes● Data Design● Business Rules● User Interface Design● Resource Management● Security● Performance● Scalability● Interoperability● Internationalization/Localization (i18n, l10n)● Input/Output ● Error Processing● Fault Tolerance

● Good architecture allows you to defer decisions

@carlosble

Page 19: Effective entrepreneurship for developers

Design patterns

Book: Head first design patterns

What I use the most:● Factory● Template method● Wrapper● Observer● Mediator● Singleton● MVVM / MVP / Passive View

● Let them emerge from your designs

@carlosble

Page 20: Effective entrepreneurship for developers

Exploratory testing & UX● Even if you've got 100% test coverage, your app can be broken (and it will).

● Exploratory testing is always necessary.

● Try to get the application tested by real testers.

● Invite beta testers.

● Don't forget about usability and User eXperience: Books: Don't make me think – Steve Krug User interface design for programmers - Spolsky

@carlosble

Page 21: Effective entrepreneurship for developers

Native or not native?● Some specialists are making good money and native apps perform better than HTML+JS, but... ● What do you need?

● Powerful visual effects?● Targeting multiple platforms?

● What are your skil ls? And your resources?● Are you productive with JavaScript?● Do you have to maintain it in the long run?

● There are alternatives: - PhoneGap + frameworks like jQuery mobile. - Sencha Touch. - Xamarin (C# development). - Appcelerator. - ...

@carlosble

Page 22: Effective entrepreneurship for developers

Automated testing in the mobile world

● Calabash (multiplatform): http://calaba.sh (Cucumber friendly!)

- Demo: http://skillsmatter.com/podcast/java-jee/cross-platform-and-end-to-end-bdd-for-mobile

● Frank (iOS): http://testingwithfrank.com/ (Cucumber friendly!)

● Robolectric (Android): unit testing

But remember... the mobile is just a delivery mechanism!

● Book: Responsible design for Android - J.B. Rainsberger (leanpub)

@carlosble

Page 23: Effective entrepreneurship for developers

Want to be a good developer?● Seek continuous improvement

- Read books (specially in English) - Attend to conferences - Listen to podcasts - Share with the local communities - Write a blog - Work on some open source project - Practice with code katas or pet projects - Teach others● Improve your communications skills● Master your tools. Some examples: - Can you type without looking at the keyboard? - Do you know common shortcuts?● Be a good teammate

Book: Apprenticeship patterns – Hoover & Oshineye

@carlosble

Page 24: Effective entrepreneurship for developers

Conclusions● It's not about money, just do your best as a professional and work for a better world.

● Don't worry to much about a particular technology, learn about principles, patterns and techniques.

● Although being a technology specialist might help you make a lot of money in the short term.

● Build the right software != Build the software right

● Improve your communication skills because that is as important as programming.

● A great professional is always learning.

@carlosble

Page 25: Effective entrepreneurship for developers

Related presentations

http://www.slideshare.net/carlosblejurado/best-practicesjsria http://www.slideshare.net/carlosble/charla-tdd-uji-032010http://www.slideshare.net/carlosblejurado/bdd-workshop-for-javascript-developers

@carlosble