SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Dmitri Nesteruk
dmitrinesteruk@gmail.com

http://nesteruk.wordpress.com
   dnesteruk
   dmitri.nesteruk
!   Circa ~10yrs in .Net
   !   C#, F#, Web (HTML+REST), WinForms, etc.
!   Founder & co-ordinator @ St. Petersburg
    Alt.Net User Group (est. 2008, http://spbalt.net)
   !   Podcast: http://spbaltnet.podfm.ru
!   Co-ordinator of the St. Petersburg .Net User
    Group (Ineta, http://sp.ineta.ru)
!   Microsoft MVP – Visual C# (since 2009)

!   Developer evangelist @ JetBrains
!   Passionate .Net developer/consultant
!   Efficiency =
   !   How quickly you write code
   !   How good the code is
!   Efficiency is relative
   !   Relative to how quickly other people code and
       how good their code is
!   This talk is about
    individual efficiency
!   No
    !   Business model not conducive (e.g., monopoly)
    !   Management doesn’t care
    !   Billable hours (outsourcing, etc.)

!   Yes!!!
    !   Product company
    !   Start-up
    !   Company with ‘engineering culture’
!   Intrinsic motivation a.k.a “professionalism”
   !   “Programming is my pride and joy, I must improve
       and do things better”

!   Extrinsic motivation
   !   If I do things better, I’ll get more
       money/respect/casual sex/whatever

!   Efficiency is largely individual.
    Team efficiency is ƒ(individuals).
!   How quickly can you write code?
   !   Especially mundane code
!   How quickly can you
   !   Compile
   !   Run tests
   !   Deploy
!   Do you need to recompile to fix a program?
Demo I
!   Mnemonics
   !   Used to create data structures
!   Code gen features
   !   Create routine code quickly
!   Custom-written features, e.g.,
   !   Dispose(), IDisposable
   ! INotifyPropertyChanged
!   Compilation and testing eats local CPU
   !   VS2010 and earlier also freezes UI :(
!   You need results now, not after check-in
!   Single-machine solution:
   !       Use other (fast) machines to build/test
   !       Use Dropbox (or similar) to sync
   !       Build via MSBuild with /m option
   !       Use a test runner that automatically re-runs tests
           when binaries change
           !   E.g., Gallio Icarus
!   Multi-machine solution:
!   Compilation:
   !       Build project dependency graph
   !       Topological sort
   !       Run MSBuild on individual projects
   !       File sync
!   Testing:
   !   Quantize by assembly (DLL), fixture or method
   !   Execute on separate machines
   !   Collate results (XML merge) and present
!   Existing solutions: IncrediBuild, Electric Cloud
!   What about Continuous Integration?
!   Multiple TC configurations on multiple
    machines
   !   All will (probably) have to compile everything
   !   But different agents can run different things
!   Difficult to coordinate!
!   Only worth it if
   !   Cost is high (e.g., compilation time > 5sec.)
   !   Is automated
      ! Spolsky’s “Can you make a build in one step?”
   !   Parallelizable (often, not always)
   !   Does not have cryptic dependencies, magic
       artefacts
!   Caveat: on remote machines, you lose out on
    VS integration
Demo II
!   Conditionally show a lightweight editor
   !   I use ActiPro, so I have some IntelliSense
!   Instantiate new component and update usage
   !   Stick to one-class-per-file rule
   !   Judicious use of dependency injection
!   Write modified source code to original file
!   Benefits:
   !   Eliminate close-recompile-restart cycle
   !   Preserve memory state
   !   See new features immediately
!   Code generation - R#, code-gen/UML/MDA
    tools
!   AOP - PostSharp, your own MSBuild post-build
    task for IL rewriting (via Mono.Cecil)
!   Dynamic programming - DynamicMethod,
    LINQ Expression compiler, DLR
! Metaprogramming – Boo/Nemerle, Project
    Roslyn (post-C#5), D (!)
   !   Breaks language services (VS, C#)
!   DSLs – F#, MPS
!   Do developers have the best tools money can
    buy? (as per Joel’s Test)
!   Tools =
  !   Best software for development, quality control
  !   Best hardware for development, compilation/
      testing, virtualization, etc.
  !   Best workspace equipment (here be dragons)
!   Do developers make their own development
    tools?
!   Do developers perform R&D on new tools,
    languages, frameworks?
Demo III
!   IDE, refactoring support
   !   IDEA, VS + ReSharper
!   Code insight tools
   ! FxCop, NDepend
!   Infrastructure tools
   !   (D)VCS – Git, Mercurial
      !   Yes, people do host commercial projects on Github
   !   CI systems – TeamCity, Hudson, CC.Net
   ! Collabotartion tools – issue tracking, wiki,
       VSAnywhere
!   Bare minimums
  !   Modern CPU
  !   Enough RAM (~16Gb+ as of 2011)
     !   Laptops notwithstanding
  !   SSDs (still using HDDs?!?)
  !   Multiple monitors
  !   Fast internet connection (duh!..)
!   Assume that dev software (e.g., VS) is power-
    hungry and always expects top-end computers
!   Fast computers allow a lot more intelligence on
    developers’ machines
   !   Resource-heavy code analysis
     !   R# misspelt naming (GPGPU)
   !   Larger, faster, mode detailed caches
   !   Fuzz/Monte-Carlo testing/simulation
   !   Integration tests (VMs etc.)
!   More time is spent on solving problems rather than
    implementation
!   Strong AI ain’t here yet
!   Development depends on lots of other things
   !   Quiet and adequate working conditions
       (Joel’s Test)
   !   Sensible management practices
   !   Whether people are happy with their pay
   !   … and a lot more.
!   YMMV – efficiency may or may note give you
    anything.
!   No substitute for good business model.
!     Questions?
!     Answers?
!     Hate mail?
!     MOAR?!?

Contenu connexe

Tendances

Best Practices For Writing Super Readable Code
Best Practices For Writing Super Readable CodeBest Practices For Writing Super Readable Code
Best Practices For Writing Super Readable CodeAnsviaLab
 
Groovy - Why and Where?
Groovy  - Why and Where?Groovy  - Why and Where?
Groovy - Why and Where?Naresha K
 
React Native
React NativeReact Native
React NativeAlicia G
 
Dark side of JS development framework
Dark side of JS development frameworkDark side of JS development framework
Dark side of JS development frameworkAJAY NAYAK
 
Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !Adam Hill
 
5 reasons why NetBeans should be in every developers toolkit (devfest2014)
5 reasons why NetBeans should be in every developers toolkit (devfest2014)5 reasons why NetBeans should be in every developers toolkit (devfest2014)
5 reasons why NetBeans should be in every developers toolkit (devfest2014)idrsolutions
 
Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...
Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...
Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...Anthony D. Paul
 
Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)Adrian Spinei
 
React Native? A developer's perspective
React Native? A developer's perspectiveReact Native? A developer's perspective
React Native? A developer's perspectiveBorisConforty
 
Writing code for others
Writing code for othersWriting code for others
Writing code for othersAmol Pujari
 

Tendances (10)

Best Practices For Writing Super Readable Code
Best Practices For Writing Super Readable CodeBest Practices For Writing Super Readable Code
Best Practices For Writing Super Readable Code
 
Groovy - Why and Where?
Groovy  - Why and Where?Groovy  - Why and Where?
Groovy - Why and Where?
 
React Native
React NativeReact Native
React Native
 
Dark side of JS development framework
Dark side of JS development frameworkDark side of JS development framework
Dark side of JS development framework
 
Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !
 
5 reasons why NetBeans should be in every developers toolkit (devfest2014)
5 reasons why NetBeans should be in every developers toolkit (devfest2014)5 reasons why NetBeans should be in every developers toolkit (devfest2014)
5 reasons why NetBeans should be in every developers toolkit (devfest2014)
 
Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...
Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...
Responsive Prototyping with WordPress and Atomic UI Libraries - anthonydpaul ...
 
Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)
 
React Native? A developer's perspective
React Native? A developer's perspectiveReact Native? A developer's perspective
React Native? A developer's perspective
 
Writing code for others
Writing code for othersWriting code for others
Writing code for others
 

Similaire à Developer Efficiency

Test Essentials @mdevcon 2012
Test Essentials @mdevcon 2012Test Essentials @mdevcon 2012
Test Essentials @mdevcon 2012Maxim Zaks
 
Developer Job in Practice
Developer Job in PracticeDeveloper Job in Practice
Developer Job in Practiceintive
 
HTML5 Is the Future of Book Authorship
HTML5 Is the Future of Book AuthorshipHTML5 Is the Future of Book Authorship
HTML5 Is the Future of Book AuthorshipSanders Kleinfeld
 
What every C++ programmer should know about modern compilers (w/ comments, AC...
What every C++ programmer should know about modern compilers (w/ comments, AC...What every C++ programmer should know about modern compilers (w/ comments, AC...
What every C++ programmer should know about modern compilers (w/ comments, AC...Sławomir Zborowski
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Jacek Tomaszewski
 
Modeling on the Web
Modeling on the WebModeling on the Web
Modeling on the WebIcinetic
 
What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?Syed Hassan Raza
 
Go language presentation
Go language presentationGo language presentation
Go language presentationparamisoft
 
Presentation of programming languages for beginners
Presentation of programming languages for beginnersPresentation of programming languages for beginners
Presentation of programming languages for beginnersClement Levallois
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community SupportWilliam Grosso
 
[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheel[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheelMateusz Klimczak
 
High-Performance Coding, and for Multiple Platforms and Devices
High-Performance Coding, and for Multiple Platforms and DevicesHigh-Performance Coding, and for Multiple Platforms and Devices
High-Performance Coding, and for Multiple Platforms and DevicesPerforce
 
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...Perforce
 
Simplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsSimplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsRui Carvalho
 
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?Albert Mietus
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 
仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要かKohei Otsuka
 

Similaire à Developer Efficiency (20)

Java
JavaJava
Java
 
Test Essentials @mdevcon 2012
Test Essentials @mdevcon 2012Test Essentials @mdevcon 2012
Test Essentials @mdevcon 2012
 
Developer Job in Practice
Developer Job in PracticeDeveloper Job in Practice
Developer Job in Practice
 
HTML5 Is the Future of Book Authorship
HTML5 Is the Future of Book AuthorshipHTML5 Is the Future of Book Authorship
HTML5 Is the Future of Book Authorship
 
What every C++ programmer should know about modern compilers (w/ comments, AC...
What every C++ programmer should know about modern compilers (w/ comments, AC...What every C++ programmer should know about modern compilers (w/ comments, AC...
What every C++ programmer should know about modern compilers (w/ comments, AC...
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
 
Modeling on the Web
Modeling on the WebModeling on the Web
Modeling on the Web
 
Modeling on the Web
Modeling on the WebModeling on the Web
Modeling on the Web
 
What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?
 
Go language presentation
Go language presentationGo language presentation
Go language presentation
 
Presentation of programming languages for beginners
Presentation of programming languages for beginnersPresentation of programming languages for beginners
Presentation of programming languages for beginners
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheel[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheel
 
Intro1
Intro1Intro1
Intro1
 
High-Performance Coding, and for Multiple Platforms and Devices
High-Performance Coding, and for Multiple Platforms and DevicesHigh-Performance Coding, and for Multiple Platforms and Devices
High-Performance Coding, and for Multiple Platforms and Devices
 
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
 
Simplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsSimplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and tools
 
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か
 

Plus de Dmitri Nesteruk

Good Ideas in Programming Languages
Good Ideas in Programming LanguagesGood Ideas in Programming Languages
Good Ideas in Programming LanguagesDmitri Nesteruk
 
Design Pattern Observations
Design Pattern ObservationsDesign Pattern Observations
Design Pattern ObservationsDmitri Nesteruk
 
CallSharp: Automatic Input/Output Matching in .NET
CallSharp: Automatic Input/Output Matching in .NETCallSharp: Automatic Input/Output Matching in .NET
CallSharp: Automatic Input/Output Matching in .NETDmitri Nesteruk
 
Design Patterns in Modern C++
Design Patterns in Modern C++Design Patterns in Modern C++
Design Patterns in Modern C++Dmitri Nesteruk
 
Introduction to Programming Bots
Introduction to Programming BotsIntroduction to Programming Bots
Introduction to Programming BotsDmitri Nesteruk
 
Converting Managed Languages to C++
Converting Managed Languages to C++Converting Managed Languages to C++
Converting Managed Languages to C++Dmitri Nesteruk
 
YouTrack: Not Just an Issue Tracker
YouTrack: Not Just an Issue TrackerYouTrack: Not Just an Issue Tracker
YouTrack: Not Just an Issue TrackerDmitri Nesteruk
 
Victor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UIVictor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UIDmitri Nesteruk
 
Dynamics CRM Data Integration
Dynamics CRM Data IntegrationDynamics CRM Data Integration
Dynamics CRM Data IntegrationDmitri Nesteruk
 
ReSharper Presentation for NUGs
ReSharper Presentation for NUGsReSharper Presentation for NUGs
ReSharper Presentation for NUGsDmitri Nesteruk
 
ReSharper Architecture & Extensions
ReSharper Architecture & ExtensionsReSharper Architecture & Extensions
ReSharper Architecture & ExtensionsDmitri Nesteruk
 

Plus de Dmitri Nesteruk (20)

Good Ideas in Programming Languages
Good Ideas in Programming LanguagesGood Ideas in Programming Languages
Good Ideas in Programming Languages
 
Design Pattern Observations
Design Pattern ObservationsDesign Pattern Observations
Design Pattern Observations
 
CallSharp: Automatic Input/Output Matching in .NET
CallSharp: Automatic Input/Output Matching in .NETCallSharp: Automatic Input/Output Matching in .NET
CallSharp: Automatic Input/Output Matching in .NET
 
Design Patterns in Modern C++
Design Patterns in Modern C++Design Patterns in Modern C++
Design Patterns in Modern C++
 
C# Tricks
C# TricksC# Tricks
C# Tricks
 
Introduction to Programming Bots
Introduction to Programming BotsIntroduction to Programming Bots
Introduction to Programming Bots
 
Converting Managed Languages to C++
Converting Managed Languages to C++Converting Managed Languages to C++
Converting Managed Languages to C++
 
Monte Carlo C++
Monte Carlo C++Monte Carlo C++
Monte Carlo C++
 
Tpl DataFlow
Tpl DataFlowTpl DataFlow
Tpl DataFlow
 
YouTrack: Not Just an Issue Tracker
YouTrack: Not Just an Issue TrackerYouTrack: Not Just an Issue Tracker
YouTrack: Not Just an Issue Tracker
 
Проект X2C
Проект X2CПроект X2C
Проект X2C
 
Domain Transformations
Domain TransformationsDomain Transformations
Domain Transformations
 
Victor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UIVictor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UI
 
Distributed Development
Distributed DevelopmentDistributed Development
Distributed Development
 
Dynamics CRM Data Integration
Dynamics CRM Data IntegrationDynamics CRM Data Integration
Dynamics CRM Data Integration
 
ReSharper Presentation for NUGs
ReSharper Presentation for NUGsReSharper Presentation for NUGs
ReSharper Presentation for NUGs
 
ReSharper Architecture & Extensions
ReSharper Architecture & ExtensionsReSharper Architecture & Extensions
ReSharper Architecture & Extensions
 
Web mining
Web miningWeb mining
Web mining
 
Data mapping tutorial
Data mapping tutorialData mapping tutorial
Data mapping tutorial
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive Extensions
 

Dernier

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Dernier (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Developer Efficiency

  • 2. !   Circa ~10yrs in .Net !   C#, F#, Web (HTML+REST), WinForms, etc. !   Founder & co-ordinator @ St. Petersburg Alt.Net User Group (est. 2008, http://spbalt.net) !   Podcast: http://spbaltnet.podfm.ru !   Co-ordinator of the St. Petersburg .Net User Group (Ineta, http://sp.ineta.ru) !   Microsoft MVP – Visual C# (since 2009) !   Developer evangelist @ JetBrains !   Passionate .Net developer/consultant
  • 3. !   Efficiency = !   How quickly you write code !   How good the code is !   Efficiency is relative !   Relative to how quickly other people code and how good their code is !   This talk is about individual efficiency
  • 4. !   No !   Business model not conducive (e.g., monopoly) !   Management doesn’t care !   Billable hours (outsourcing, etc.) !   Yes!!! !   Product company !   Start-up !   Company with ‘engineering culture’
  • 5. !   Intrinsic motivation a.k.a “professionalism” !   “Programming is my pride and joy, I must improve and do things better” !   Extrinsic motivation !   If I do things better, I’ll get more money/respect/casual sex/whatever !   Efficiency is largely individual. Team efficiency is ƒ(individuals).
  • 6. !   How quickly can you write code? !   Especially mundane code !   How quickly can you !   Compile !   Run tests !   Deploy !   Do you need to recompile to fix a program?
  • 8. !   Mnemonics !   Used to create data structures !   Code gen features !   Create routine code quickly !   Custom-written features, e.g., !   Dispose(), IDisposable ! INotifyPropertyChanged
  • 9. !   Compilation and testing eats local CPU !   VS2010 and earlier also freezes UI :( !   You need results now, not after check-in !   Single-machine solution: !   Use other (fast) machines to build/test !   Use Dropbox (or similar) to sync !   Build via MSBuild with /m option !   Use a test runner that automatically re-runs tests when binaries change !   E.g., Gallio Icarus
  • 10. !   Multi-machine solution: !   Compilation: !   Build project dependency graph !   Topological sort !   Run MSBuild on individual projects !   File sync !   Testing: !   Quantize by assembly (DLL), fixture or method !   Execute on separate machines !   Collate results (XML merge) and present !   Existing solutions: IncrediBuild, Electric Cloud
  • 11. !   What about Continuous Integration? !   Multiple TC configurations on multiple machines !   All will (probably) have to compile everything !   But different agents can run different things !   Difficult to coordinate!
  • 12. !   Only worth it if !   Cost is high (e.g., compilation time > 5sec.) !   Is automated ! Spolsky’s “Can you make a build in one step?” !   Parallelizable (often, not always) !   Does not have cryptic dependencies, magic artefacts !   Caveat: on remote machines, you lose out on VS integration
  • 14. !   Conditionally show a lightweight editor !   I use ActiPro, so I have some IntelliSense !   Instantiate new component and update usage !   Stick to one-class-per-file rule !   Judicious use of dependency injection !   Write modified source code to original file !   Benefits: !   Eliminate close-recompile-restart cycle !   Preserve memory state !   See new features immediately
  • 15. !   Code generation - R#, code-gen/UML/MDA tools !   AOP - PostSharp, your own MSBuild post-build task for IL rewriting (via Mono.Cecil) !   Dynamic programming - DynamicMethod, LINQ Expression compiler, DLR ! Metaprogramming – Boo/Nemerle, Project Roslyn (post-C#5), D (!) !   Breaks language services (VS, C#) !   DSLs – F#, MPS
  • 16. !   Do developers have the best tools money can buy? (as per Joel’s Test) !   Tools = !   Best software for development, quality control !   Best hardware for development, compilation/ testing, virtualization, etc. !   Best workspace equipment (here be dragons) !   Do developers make their own development tools? !   Do developers perform R&D on new tools, languages, frameworks?
  • 18. !   IDE, refactoring support !   IDEA, VS + ReSharper !   Code insight tools ! FxCop, NDepend !   Infrastructure tools !   (D)VCS – Git, Mercurial !   Yes, people do host commercial projects on Github !   CI systems – TeamCity, Hudson, CC.Net ! Collabotartion tools – issue tracking, wiki, VSAnywhere
  • 19. !   Bare minimums !   Modern CPU !   Enough RAM (~16Gb+ as of 2011) !   Laptops notwithstanding !   SSDs (still using HDDs?!?) !   Multiple monitors !   Fast internet connection (duh!..) !   Assume that dev software (e.g., VS) is power- hungry and always expects top-end computers
  • 20. !   Fast computers allow a lot more intelligence on developers’ machines !   Resource-heavy code analysis !   R# misspelt naming (GPGPU) !   Larger, faster, mode detailed caches !   Fuzz/Monte-Carlo testing/simulation !   Integration tests (VMs etc.)
  • 21. !   More time is spent on solving problems rather than implementation !   Strong AI ain’t here yet !   Development depends on lots of other things !   Quiet and adequate working conditions (Joel’s Test) !   Sensible management practices !   Whether people are happy with their pay !   … and a lot more. !   YMMV – efficiency may or may note give you anything. !   No substitute for good business model.
  • 22. !   Questions? !   Answers? !   Hate mail? !   MOAR?!?