Productive Java From Start to Finish - PowerPoint PPT Presentation

1 / 42
About This Presentation
Title:

Productive Java From Start to Finish

Description:

Games: Tetris, Minesweeper. 15 ... 2 free, open-source competitors with hundreds ... and Email address to Ahmed Hashim for a chance to win a free license! ... – PowerPoint PPT presentation

Number of Views:70
Avg rating:3.0/5.0
Slides: 43
Provided by: robha
Category:

less

Transcript and Presenter's Notes

Title: Productive Java From Start to Finish


1
Productive Java From Start to Finish
  • Rob Harwood
  • Technology Evangelist

2
About Us
  • Rob Harwood
  • Professional developer for 7 years
  • Technology evangelist
  • JetBrains
  • Makers of IntelliJ IDEA, and more
  • Develop with pleasure!
  • IntelliJ IDEA 6.0
  • The Most Intelligent Java IDE
  • Award winning

3
Overview
  • Productivity is becoming more and more important
    for Java programmers
  • This lends importance to tools that enhance
    productivity, specifically the IDE
  • but not all IDEs are the same

4
Trends in Java Development
  • Java 5, 6, 7,
  • Methodology - Less rigid, more fluid
  • Agility
  • Internet / Web 2.0
  • Competition - Time to Market
  • Dynamic languages
  • Push for higher productivity
  • No sign of slowing!

5
How can I be productive in Java?
  • Many possibilities for improvement
  • Organization
  • Project
  • Team
  • Programmer
  • Tools
  • Programmer is key person
  • IDE is key tool

6
What is Productivity?
  • Project size variables
  • Increase Scope
  • Increase Quality
  • Lower Time
  • Same Cost
  • Productivity is ability to create greater value
    for less cost

Cost Time Scope Quality
Value
Cost
Value
7
Four variables
  • Quality is usually non-negotiable
  • Time is usually fixed or continuous
  • Cost is under tight restrictions
  • Scope is best variable to negotiate

8
Quality
  • Software quality is not like manufacturing
    quality
  • Increasing quality actually increases
    productivity
  • Many people depend on code, amplifying cost of
    bugs
  • Fewer bugs means lower cost and time
  • High quality code can handle greater scope than
    low quality
  • Speeds up all programmers, plus other people
  • Increase quality as much as possible until you
    hit the sweet spot

9
Importance of productivity
  • Organization
  • Lower cost
  • Better quality
  • Competitive agility
  • Move up-market
  • Handle more projects
  • Satisfied customers
  • Fewer staff needed
  • Programmer
  • Productive flow is enjoyable
  • Think at higher level
  • Less stress
  • Professional development
  • Develop with pleasure!

10
Fixed variables
  • Quality is maxed
  • Time fixed or continuous
  • Primary factor in cost is scope
  • How to improve productivity to reduce cost?

11
Factors affecting productivity
  • People
  • Tools
  • Programming languages
  • Legacy architecture
  • Methodology
  • Organizational (project, team, etc.)
  • 1 factor is people
  • Skills
  • Teamwork
  • Management

12
Importance of Programmers
  • Needed to finish project
  • Central to ability to produce value in code
  • Programmer cost strongly affects project cost
  • Programmer time equals organization money
  • Programmer heavily affects quality, a major
    variable
  • High effect of productivity enhancement
  • Effects of flow
  • Tools
  • Skill enhancement
  • In terms of overall project value, programmer
    productivity has major effect on mapping to cost
    of project

13
Benefits of improving programmer productivity
  • Influences other peoples productivity
  • QA
  • Marketing
  • Documentation
  • Management
  • Allows new styles of development
  • Test-driven development
  • Continuous integration
  • Lowers risk of trying new things
  • Libraries
  • Frameworks

14
Flow
  • Highly productive state of mind
  • Complex problems solved in much less time
  • Totally focused
  • See big picture
  • Make intuitive leaps
  • Think at a high level, in terms of concepts
    rather than procedures
  • Development flows along gracefully
  • Also occurs in sports, writing, conversation,
    problem solving
  • Everybody experiences flow
  • Games Tetris, Minesweeper

15
How flow works
  • Rely on well-trained intuition for speed of
    thought
  • Eliminate self-doubt and worry over trivialities
  • As you work, you gain inspiration about what to
    do next, allowing you to flow from one task to
    the next

16
UI Flow Diagram
  • Programmer, desire curve, mountain path

Context switch
Desire
Actual path
17
Context Switching
  • Flow is susceptible to interruptions and context
    switching
  • Breaks flow
  • Takes time to get back into flow
  • Cost of context switching is high, especially
    if repeated frequently

18
Tools and flow
  • Eliminate extra steps
  • Soften or elliminate context-switches
  • Intelligent features allow higher-level thinking
  • Help get into flow and maintain flow with fewer
    context switches

19
Flow and IDEs
Desire
Actual path
20
Flow and IDEs
  • Tedious steps are something similar to context
    switch. They force you to think in low-level
    terms.
  • Good example of stripping out tedium is Smart
    Completion.
  • Keyboard shortcuts are a way to remove context
    switching. Also, there is a certain logic to the
    shortcuts, like a language.
  • Good example is shortcuts for extract and inline.

21
IDE Productivity
  • Programmers productivity interface into the
    project
  • Central to programmer productivity
  • Increasing programmer productivity can have a
    major impact on overall cost
  • IDE can have major effect on productivity, saving
    time and money while increasing quantity and
    quality of output
  • Most time-consuming task Java coding
  • Connects other tools together
  • Better integration means better overall
    productivity

22
IDE effect on project dimensions
  • Increase cost by price
  • Reduce time
  • User interface features
  • Increase Quality
  • Refactoring
  • Code Analysis
  • Integration with testing tools
  • Reduce complexity (Scope)
  • Code Analysis
  • Navigation features
  • These factors end up reducing cost overall

23
Price of tools, TCO
  • Price increases cost, so whats the
    justification?
  • Zero price (free) does not equal zero cost
  • Total Cost of Ownership (TCO)
  • Hidden costs
  • Learning how to use the tool
  • Limitations on the tool itself
  • Interactions with other tools
  • Support and maintenance
  • Finding components for whole-product
  • Technical and community support
  • Quality of the tool
  • Effect on productivity

24
TCO
  • Must compare tools by TCO, not price alone
  • TCO calculations should be equivalent
  • Similar features included in price
  • Increased productivity makes up for TCO, saving
    overall cost

25
Proof?
  • Is TCO really important?
  • Measuring productivity and TCO is difficult
  • Business success is undeniable
  • Proof is IntelliJ IDEA itself
  • Success of JetBrains
  • Loyal customers, who pay when all other
    alternatives are free

26
IntelliJ IDEA
  • 2 free, open-source competitors with hundreds of
    programmers
  • 3 years since Eclipse became mainstream
  • JBuilder collapsed, trying to rebuild on Eclipse
  • All other major Java IDEs are free
  • JetBrains, small company
  • Less than 50 developers
  • Only 10-15 core IntelliJ IDEA developers
  • Others have time to work on other projects,
    including researching new ideas
  • Loyal, satisfied customers
  • IntelliJ IDEA still going strong
  • Seems to be only Java IDE worth paying for -)

27
Question
  • Arent you worried about free competitors?
  • No, because productivity is a valuable thing.

28
IDE Philosophy
  • UI choices
  • Architecture
  • Trade-offs
  • Usability or raw performance
  • Integrated or modular
  • Productivity or whatever works

29
IDE philosophy trends
  • Most IDEs go for more stuff, with enough
    productivity
  • We go for more productivity, with enough stuff
  • Compare value of stuff versus value of
    productivity

Stuff
Productivity
Prod
Stuff
30
Productivity IDE Philosophy
  • Based on what real people do, rather than whats
    easy for IDE-programmer to implement
  • This is how it should work, so lets make it
    work that way, as opposed to, These are the
    tools available, heres one way of making them
    work together.
  • Tailored to kinds of people who program
  • Adapt to many styles of programming
  • Integrated modularity rather than modular
    integration

31
Modularity
  • Stuff is changing all the time
  • New libraries and frameworks
  • New versions
  • New methodologies (e.g. AOP)
  • Some stuff is only needed for small number of
    people, only special circumstances, etc.
  • Solution Extreme modularity?
  • Modularity sacrifices opportunities for
    productivity
  • Integration with IDE is more difficult when
    modular IDE.
  • Modular bytecode Cant refactor uncompilable
    code breaks flow lower productivity
  • Integrated PSI Not only can refactor nearly any
    code, but can also integrate static code analysis
    on-the-fly, even if code is broken
  • Modular IDEs will always be playing catch-up

32
Other limitations of modularity
  • Diff tool Editor features
  • GUI Builder Analysis
  • Many more

33
Examples of IDEs affecting productivity
  • Code completion
  • Test Driven Development
  • Refactoring
  • Code analysis
  • Web development
  • Team productivity

34
Code completion
  • Concern yourself with higher-level concepts,
    rather than syntax and spelling
  • Explore interfaces via object references
  • Eliminate unnecessary steps
  • Keep flow moving well

35
Test Driven Development
  • Waterfall
  • Analysis, Design, Programming, Testing,
    Integration, Release
  • Agile just iterates faster
  • IDE can automte each step, making the manual
    parts smaller and smaller
  • Faster cycles, more feedback and visibility
  • Able to adapt faster, be more agile
  • Tighter cycles result in capability for a new
    style of programming
  • Demo

36
Refactoring
  • Increases quality, so that adding features is
    easier rather than harder
  • Reduces complexity (scope)
  • Some amount of refactoring is always required

37
Code Analysis
  • Helps individual, but also helps team, above and
    beyond individual
  • To be able to sense what youve produced
  • To see the code
  • Improve quality
  • Reduce complexity for individual

38
Web development
  • More than just Java
  • Higher level of integration between different
    languages
  • Languages Multiple languages, dynamic languages,
    data languages, scripting langauges

39
Languages
  • Not just about Java anymore
  • Java becoming more productive, but more and more
    reliance on other languages, especially in the
    Web 2.0 world
  • Language API, IntelliLang, Ruby
  • IDEA is the most language-aware IDE, period.

40
Team productivity
  • 5 oclock check in

41
TeamCity
  • Broken build problem (general problem, many
    facets)
  • Collaboration problem (code pointers, stack
    traces)
  • Offloading work to server (analysis, testing,
    building, etc.)
  • Tracking/managing the build, which after all is
    the most important product you are concerned
    with.
  • TeamCity

42
Conclusion
  • IntelliJ IDEA 6.0
  • http//www.jetbrains.com/idea
  • Submit your Name and Email address to Ahmed
    Hashim for a chance to win a free license!
  • 5 conference participants will win a free license
    (value 500 USD)
Write a Comment
User Comments (0)
About PowerShow.com