productive java from start to finish rob harwood technology evangelist
TRANSCRIPT
Productive Java From Productive Java From Start to FinishStart to Finish
Rob Harwood
Technology Evangelist
22
About UsAbout Us
Rob HarwoodRob Harwood Professional developer for 7 yearsProfessional developer for 7 years Technology evangelistTechnology evangelist
JetBrainsJetBrains Makers of IntelliJ IDEA, and moreMakers of IntelliJ IDEA, and more ““Develop with pleasure!”Develop with pleasure!”
IntelliJ IDEA 6.0IntelliJ IDEA 6.0 The Most Intelligent Java IDEThe Most Intelligent Java IDE Award winningAward winning
33
OverviewOverview
Productivity is becoming more and more Productivity is becoming more and more important for Java programmersimportant for Java programmers
This lends importance to tools that This lends importance to tools that enhance productivity, specifically the IDEenhance productivity, specifically the IDE
… … but not all IDEs are the samebut not all IDEs are the same
44
Trends in Java DevelopmentTrends in Java Development
Java 5, 6, 7, …Java 5, 6, 7, …Methodology - Less rigid, more fluidMethodology - Less rigid, more fluidAgilityAgilityInternet / Web 2.0Internet / Web 2.0Competition - Time to MarketCompetition - Time to MarketDynamic languagesDynamic languagesPush for higher productivityPush for higher productivity No sign of slowing!No sign of slowing!
55
How can I be productive in Java?How can I be productive in Java?
Many possibilities for Many possibilities for improvementimprovement OrganizationOrganization ProjectProject TeamTeam ProgrammerProgrammer ToolsTools
Programmer is key Programmer is key personpersonIDE is key toolIDE is key tool
Organization
Project/Team
Programmers
Tools
Other Members
IDE
Skills
66
What is Productivity?What is Productivity?
Project size variablesProject size variables Increase ScopeIncrease Scope Increase QualityIncrease Quality Lower TimeLower Time Same CostSame Cost
Productivity is ability to Productivity is ability to create greater value for create greater value for less costless cost
Cost Time
Scope Quality
Cost
Value
Value
77
Four variablesFour variables
Quality is usually non-negotiableQuality is usually non-negotiable
Time is usually fixed or continuousTime is usually fixed or continuous
Cost is under tight restrictionsCost is under tight restrictions
Scope is best variable to negotiateScope is best variable to negotiate
88
QualityQuality
Software quality is not like manufacturing qualitySoftware quality is not like manufacturing quality
Increasing quality actually increases productivityIncreasing quality actually increases productivity Many people depend on code, amplifying cost of bugsMany people depend on code, amplifying cost of bugs Fewer bugs means lower cost and timeFewer bugs means lower cost and time High quality code can handle greater scope than low High quality code can handle greater scope than low
qualityquality Speeds up all programmers, plus other peopleSpeeds up all programmers, plus other people
Increase quality as much as possible until you Increase quality as much as possible until you hit the sweet spothit the sweet spot
99
Importance of productivityImportance of productivity
OrganizationOrganization
Lower costLower cost
Better qualityBetter quality
Competitive agilityCompetitive agility
Move up-marketMove up-market
Handle more projectsHandle more projects
Satisfied customersSatisfied customers
Fewer staff neededFewer staff needed
ProgrammerProgrammer
Productive ‘flow’ is Productive ‘flow’ is enjoyableenjoyable
Think at higher levelThink at higher level
Less stressLess stress
Professional Professional developmentdevelopment
““Develop with Develop with pleasure!”pleasure!”
1010
Fixed variablesFixed variables
Quality is maxedQuality is maxed
Time fixed or continuousTime fixed or continuous
Primary factor in cost is scopePrimary factor in cost is scope
How to improve productivity to reduce How to improve productivity to reduce cost?cost?
1111
Factors affecting productivityFactors affecting productivity
PeoplePeopleToolsToolsProgramming languagesProgramming languagesLegacy architectureLegacy architectureMethodologyMethodologyOrganizational (project, team, etc.)Organizational (project, team, etc.)#1 factor is people#1 factor is people SkillsSkills TeamworkTeamwork ManagementManagement
1212
Importance of ProgrammersImportance of Programmers
Needed to finish projectNeeded to finish projectCentral to ability to produce value in codeCentral to ability to produce value in codeProgrammer cost strongly affects project costProgrammer cost strongly affects project costProgrammer time equals organization moneyProgrammer time equals organization moneyProgrammer heavily affects quality, a major variableProgrammer heavily affects quality, a major variableHigh effect of productivity enhancementHigh effect of productivity enhancement
Effects of ‘flow’Effects of ‘flow’ ToolsTools Skill enhancementSkill enhancement
In terms of overall project value, programmer productivity In terms of overall project value, programmer productivity has major effect on mapping to cost of projecthas major effect on mapping to cost of project
1313
Benefits of improving programmer Benefits of improving programmer productivityproductivity
Influences other people’s productivityInfluences other people’s productivity QAQA MarketingMarketing DocumentationDocumentation ManagementManagement
Allows new styles of developmentAllows new styles of development Test-driven developmentTest-driven development Continuous integrationContinuous integration
Lowers risk of trying new thingsLowers risk of trying new things LibrariesLibraries FrameworksFrameworks
1414
FlowFlow
Highly productive state of mindHighly productive state of mindComplex problems solved in much less timeComplex problems solved in much less timeTotally focusedTotally focusedSee big pictureSee big pictureMake intuitive leapsMake intuitive leapsThink at a high level, in terms of concepts rather than Think at a high level, in terms of concepts rather than proceduresproceduresDevelopment ‘flows’ along gracefullyDevelopment ‘flows’ along gracefullyAlso occurs in sports, writing, conversation, problem Also occurs in sports, writing, conversation, problem solvingsolvingEverybody experiences flowEverybody experiences flowGames: Tetris, MinesweeperGames: Tetris, Minesweeper
1515
How flow worksHow flow works
Rely on well-trained intuition for speed of Rely on well-trained intuition for speed of thoughtthought
Eliminate self-doubt and worry over Eliminate self-doubt and worry over trivialitiestrivialities
As you work, you gain inspiration about As you work, you gain inspiration about what to do next, allowing you to ‘flow’ from what to do next, allowing you to ‘flow’ from one task to the nextone task to the next
1616
UI Flow DiagramUI Flow Diagram
Programmer, desire curve, mountain path Programmer, desire curve, mountain path
Desire
Actual path
Context switch
1717
Context SwitchingContext Switching
Flow is susceptible to interruptions and Flow is susceptible to interruptions and context switchingcontext switching
Breaks flowBreaks flow
Takes time to get back into flowTakes time to get back into flow
““Cost” of context switching is high, Cost” of context switching is high, especially if repeated frequentlyespecially if repeated frequently
1818
Tools and flowTools and flow
Eliminate extra stepsEliminate extra steps
Soften or elliminate context-switchesSoften or elliminate context-switches
Intelligent features allow higher-level Intelligent features allow higher-level thinkingthinking
Help get into flow and maintain flow with Help get into flow and maintain flow with fewer context switchesfewer context switches
1919
Flow and IDEsFlow and IDEs
Desire
Actual path
2020
Flow and IDEsFlow and IDEs
Tedious steps are something similar to context Tedious steps are something similar to context switch. They force you to think in low-level switch. They force you to think in low-level terms.terms.
Good example of stripping out tedium is Smart Good example of stripping out tedium is Smart Completion.Completion.
Keyboard shortcuts are a way to remove context Keyboard shortcuts are a way to remove context switching. Also, there is a certain logic to the switching. Also, there is a certain logic to the shortcuts, like a language. shortcuts, like a language.
Good example is shortcuts for extract and inline.Good example is shortcuts for extract and inline.
2121
IDE ProductivityIDE Productivity
Programmer’s productivity interface into the Programmer’s productivity interface into the projectprojectCentral to programmer productivityCentral to programmer productivityIncreasing programmer productivity can have a Increasing programmer productivity can have a major impact on overall costmajor impact on overall costIDE can have major effect on productivity, IDE can have major effect on productivity, saving time and money while increasing quantity saving time and money while increasing quantity and quality of outputand quality of outputMost time-consuming task: Java codingMost time-consuming task: Java codingConnects other tools togetherConnects other tools together Better integration means better overall productivityBetter integration means better overall productivity
2222
IDE effect on project dimensionsIDE effect on project dimensions
Increase cost by priceIncrease cost by priceReduce timeReduce time User interface featuresUser interface features
Increase QualityIncrease Quality RefactoringRefactoring Code AnalysisCode Analysis Integration with testing toolsIntegration with testing tools
Reduce complexity (Scope)Reduce complexity (Scope) Code AnalysisCode Analysis Navigation featuresNavigation features
These factors end up reducing cost overallThese factors end up reducing cost overall
2323
Price of tools, TCOPrice of tools, TCO
Price increases cost, so what’s the justification?Price increases cost, so what’s the justification?Zero price (free) does not equal zero costZero price (free) does not equal zero costTotal Cost of Ownership (TCO)Total Cost of Ownership (TCO)Hidden costsHidden costs
Learning how to use the toolLearning how to use the tool Limitations on the tool itselfLimitations on the tool itself Interactions with other toolsInteractions with other tools Support and maintenanceSupport and maintenance Finding components for whole-productFinding components for whole-product Technical and community supportTechnical and community support Quality of the toolQuality of the tool Effect on productivityEffect on productivity
2424
TCOTCO
Must compare tools by TCO, not price Must compare tools by TCO, not price alonealone
TCO calculations should be equivalentTCO calculations should be equivalent Similar features included in priceSimilar features included in price
Increased productivity makes up for TCO, Increased productivity makes up for TCO, saving overall costsaving overall cost
2525
Proof?Proof?
Is TCO really important?Is TCO really important?
Measuring productivity and TCO is difficultMeasuring productivity and TCO is difficultBusiness success is undeniableBusiness success is undeniable
Proof is IntelliJ IDEA itselfProof is IntelliJ IDEA itself Success of JetBrainsSuccess of JetBrains Loyal customers, who pay when all other Loyal customers, who pay when all other
alternatives are freealternatives are free
2626
IntelliJ IDEAIntelliJ IDEA
2 free, open-source competitors with hundreds of 2 free, open-source competitors with hundreds of programmersprogrammers3 years since Eclipse became mainstream3 years since Eclipse became mainstreamJBuilder collapsed, trying to rebuild on EclipseJBuilder collapsed, trying to rebuild on EclipseAll other major Java IDEs are freeAll other major Java IDEs are freeJetBrains, small companyJetBrains, small company
Less than 50 developersLess than 50 developers Only 10-15 core IntelliJ IDEA developersOnly 10-15 core IntelliJ IDEA developers Others have time to work on other projects, including Others have time to work on other projects, including
researching new ideasresearching new ideas
Loyal, satisfied customersLoyal, satisfied customersIntelliJ IDEA still going strongIntelliJ IDEA still going strong
Seems to be only Java IDE worth paying for ;-)Seems to be only Java IDE worth paying for ;-)
2727
QuestionQuestion
““Aren’t you worried about free Aren’t you worried about free competitors?”competitors?”
No, because productivity is a valuable No, because productivity is a valuable thing.thing.
2828
IDE PhilosophyIDE Philosophy
UI choicesUI choices
ArchitectureArchitecture
Trade-offsTrade-offs Usability or raw performanceUsability or raw performance Integrated or modularIntegrated or modular Productivity or whatever worksProductivity or whatever works
2929
IDE philosophy trendsIDE philosophy trends
Most IDEs go for Most IDEs go for more ‘stuff’, with more ‘stuff’, with enough productivityenough productivity
We go for more We go for more productivity, with productivity, with enough ‘stuff’enough ‘stuff’
Compare value of Compare value of ‘stuff’ versus value of ‘stuff’ versus value of productivityproductivity
Stuff
Prod
Stuff
Productivity
3030
Productivity IDE PhilosophyProductivity IDE Philosophy
Based on what real people do, rather than Based on what real people do, rather than what’s easy for IDE-programmer to implementwhat’s easy for IDE-programmer to implement““This is how it should work, so let’s make it work This is how it should work, so let’s make it work that way,” as opposed to, “These are the tools that way,” as opposed to, “These are the tools available, here’s one way of making them work available, here’s one way of making them work together.”together.”Tailored to kinds of people who programTailored to kinds of people who programAdapt to many styles of programmingAdapt to many styles of programmingIntegrated modularity rather than modular Integrated modularity rather than modular integrationintegration
3131
ModularityModularity
‘‘Stuff’ is changing all the timeStuff’ is changing all the time New libraries and frameworksNew libraries and frameworks New versionsNew versions New methodologies (e.g. AOP)New methodologies (e.g. AOP)
Some stuff is only needed for small number of people, only special Some stuff is only needed for small number of people, only special circumstances, etc.circumstances, etc.Solution: Extreme modularity?Solution: Extreme modularity?Modularity sacrifices opportunities for productivityModularity sacrifices opportunities for productivityIntegration with IDE is more difficult when modular IDE.Integration with IDE is more difficult when modular IDE.
Modular bytecode: Can’t refactor uncompilable code = breaks flow = Modular bytecode: Can’t refactor uncompilable code = breaks flow = lower productivitylower productivity
Integrated PSI: Not only can refactor nearly any code, but can also Integrated PSI: Not only can refactor nearly any code, but can also integrate static code analysis on-the-fly, even if code is brokenintegrate static code analysis on-the-fly, even if code is broken
Modular IDEs will always be playing “catch-up”Modular IDEs will always be playing “catch-up”
3232
Other limitations of modularityOther limitations of modularity
Diff tool: Editor featuresDiff tool: Editor features
GUI Builder: AnalysisGUI Builder: Analysis
Many moreMany more
3333
Examples of IDEs affecting Examples of IDEs affecting productivityproductivity
Code completionCode completion
Test Driven DevelopmentTest Driven Development
RefactoringRefactoring
Code analysisCode analysis
Web developmentWeb development
Team productivityTeam productivity
3434
Code completionCode completion
Concern yourself with higher-level Concern yourself with higher-level concepts, rather than syntax and spellingconcepts, rather than syntax and spelling
Explore interfaces via object referencesExplore interfaces via object references
Eliminate unnecessary stepsEliminate unnecessary steps
Keep flow moving wellKeep flow moving well
3535
Test Driven DevelopmentTest Driven Development
WaterfallWaterfall Analysis, Design, Programming, Testing, Integration, Analysis, Design, Programming, Testing, Integration,
ReleaseRelease
Agile just iterates fasterAgile just iterates faster IDE can automte each step, making the manual parts IDE can automte each step, making the manual parts
smaller and smallersmaller and smaller Faster cycles, more feedback and visibilityFaster cycles, more feedback and visibility
Able to adapt faster, be more agileAble to adapt faster, be more agile
Tighter cycles result in capability for a new style Tighter cycles result in capability for a new style of programmingof programmingDemoDemo
3636
RefactoringRefactoring
Increases quality, so that adding features Increases quality, so that adding features is easier rather than harderis easier rather than harder
Reduces complexity (scope)Reduces complexity (scope)
Some amount of refactoring is always Some amount of refactoring is always requiredrequired
3737
Code AnalysisCode Analysis
Helps individual, but also helps team, Helps individual, but also helps team, above and beyond individualabove and beyond individual
To be able to sense what you’ve producedTo be able to sense what you’ve produced
To ‘see’ the codeTo ‘see’ the code
Improve qualityImprove quality
Reduce complexity for individualReduce complexity for individual
3838
Web developmentWeb development
More than just JavaMore than just Java
Higher level of integration between Higher level of integration between different languagesdifferent languages
Languages: Multiple languages, dynamic Languages: Multiple languages, dynamic languages, data languages, scripting languages, data languages, scripting langaugeslangauges
3939
LanguagesLanguages
Not just about Java anymoreNot just about Java anymore Java becoming more productive, but more Java becoming more productive, but more
and more reliance on other languages, and more reliance on other languages, especially in the Web 2.0 worldespecially in the Web 2.0 world
Language API, IntelliLang, RubyLanguage API, IntelliLang, Ruby
IDEA is the most language-aware IDE, IDEA is the most language-aware IDE, period.period.
4040
Team productivityTeam productivity
5 o’clock check in5 o’clock check in
4141
TeamCityTeamCity
Broken build problem (general problem, many Broken build problem (general problem, many facets)facets)Collaboration problem (code pointers, stack Collaboration problem (code pointers, stack traces)traces)Offloading work to server (analysis, testing, Offloading work to server (analysis, testing, building, etc.)building, etc.)Tracking/managing ‘the build’, which after all is Tracking/managing ‘the build’, which after all is the most important product you are concerned the most important product you are concerned with.with.TeamCityTeamCity
4242
ConclusionConclusion
IntelliJ IDEA 6.0IntelliJ IDEA 6.0 http://www.jetbrains.com/ideahttp://www.jetbrains.com/idea
Submit your Submit your NameName and and Email addressEmail address to to Ahmed Hashim for a chance to win a free Ahmed Hashim for a chance to win a free license!license! 5 conference participants will win a free 5 conference participants will win a free
license (value $500 USD)license (value $500 USD)