Your SlideShare is downloading. ×
Effective entrepreneurship for developers
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Effective entrepreneurship for developers


Published on

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Effective entrepreneurship for software developers in the mobile age Carlos Ble - @carlosble Presented at: Sociedad de Promoción Econónica de Gran Canaria (SPEGC). Gran Canaria, 20 abril 2013
  • 2. @carlosbleBuilding the right software - Entrepreneurship - Lean startup & Impact Mapping - Agile, SbE & BDDBuilding the software right - Clean code & craftsmanship - SOLID design & architecture - TDD, and other XP practices - Continuous delivery - Native, HTML5+JavaScript, Xamarin...? - Mobile testingInteractive hands-on session : - Code with me on the randori kata
  • 3. @carlosbleAre you really an entepreneur?
  • 4. @carlosbleLet s bu ild t he r ight soft ware
  • 5. @carlosble 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? Its all about communication... lets talk! - Books & Authors: - Gojko Adzic (3 books) - The Cucumber Book (Matt & Aslak)
  • 6. @carlosble 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 -● Personas (personajes in Spanish)● Impact mapping (● Planning & Analysis : Discover to Deliver [.com] (book)
  • 7. @carlosble Gherkin language: What, not howGiven Fred has bought a microwaveAnd the microwave costs 100€When we refund the microwaveThen Fred should be refunded 100€Source: Liz Keogh -
  • 8. @carlosble 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)
  • 9. @carlosbleLet s bu ild t he s oftw are righ t
  • 10. @carlosble Building the software rightSoftware 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
  • 11. @carlosble Building the software rightClean Code:Does it matter? - and the bookLow coupling, high cohesion, dependencies.SOLID design principles: Single Responsibility Open/Closed Liskov Substitution Interface Segregation Dependency InjectionTDD and Pair programming:Minimalistic, goal driven, precise
  • 12. @carlosble Building the software right OU?! em,.. . DO Y tr ol syst ersion c on v ou h ave aSo y
  • 13. @carlosble Building the software rightRemove duplication Good naming
  • 14. @carlosble eXtreme Programming Its about VALUES: ● Simplicity ● Communication ● Feedback ● Courage → Honesty - Book: Extreme Programming Explained: Embrace change2nd edition, Kent Beck
  • 15. @carlosble The TDD MantraRED: Before writing the code, express your intent in the form of a test Books: > Test Driven – Lasse KoskelaGREEN: Dont think, just make > Growing object the test pass oriented software guided by tests – with the minimun effort, Freeman & Pryce the simplest way > Diseño agil con TDD –REFACTOR: Carlos Ble & co. Remove duplication Improve naming SOLID
  • 16. @carlosblePair 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 dont feel any good). ● Sinergy: 1+1 = 4 ODE I TY C UAL HI GH Q
  • 17. @carlosble 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.
  • 18. @carlosble ArchitectureBook: 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
  • 19. @carlosble Design patternsBook: Head first design patternsWhat I use the most: ● Factory ● Template method ● Wrapper ● Observer ● Mediator ● Singleton ● MVVM / MVP / Passive View● Let them emerge from your designs
  • 20. @carlosble Exploratory testing & UX● Even if youve got 100% test coverage, your app canbe broken (and it will).● Exploratory testing is always necessary.● Try to get the application tested by real testers.● Invite beta testers.● Dont forget about usability and User eXperience: Books: Dont make me think – Steve Krug User interface design for programmers - Spolsky
  • 21. @carlosble 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 skills? 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. - ...
  • 22. @carlosble Automated testing in the mobile world● Calabash (multiplatform): (Cucumber friendly!) - Demo:● Frank (iOS): (Cucumber friendly!)● Robolectric (Android): unit testing But remember... the mobile is just a delivery mechanism!● Book: Responsible design for Android - J.B. Rainsberger (leanpub)
  • 23. @carlosble 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 teammateBook: Apprenticeship patterns – Hoover & Oshineye
  • 24. @carlosble Conclusions● Its not about money, just do your best as aprofessional and work for a better world.● Dont worry to much about a particular technology,learn about principles, patterns and techniques.● Although being a technology specialist might help youmake a lot of money in the short term.● Build the right software != Build the software right● Improve your communication skills because that is asimportant as programming.● A great professional is always learning.
  • 25. @carlosble Related presentations