SlideShare a Scribd company logo
1 of 18
The Neo Developer
Modern Software Development
The Ice Age
• I, test not!
• Single language.
• I care only about the code (not about: build, staging, qa, quality
of data…).
• Sprints are for Carl Lewis.
The DevOps Revolution
• Everybody is into CI/CD and considering continuous
deployment.
• Every developer should be familiar with a stack like:
• Jenkins.
• Ansible/Chef/Puppet..
• Docker.
• K8S.
• Terraform.
CI/CD
• Always keep motivation in mind!
• Main motivation is finding bugs as early as possible.
• Also, shorten time-to-market.
Company Culture
• And it’s not only the tech-stack.
• The technology is important.
• Company’s culture even more!
• A good pipeline depends on:
• How we treat the staging!
• Quality of tests!
Staging == Production
• Staging should be treated like it is production.
• Should be up 24/7.
• New versions should be deployed like they are in production.
• No manual SSH and hot fixes!
Everything as Code
• As software developers we are very disciplined about code.
• We use SCM.
• Write tests.
• Do code reviews.
• Document.
• Have a bug management system.
• Pipelines.
Everything as Code
• The modern trends try to treat everything as code:
• Data as code.
• Pipeline as code.
• Deployment as code.
• …
Data
• Whether we are doing machine learning or not, data is
important.
• And we need relations.
• Between different pieces of data!
• JSON-LD as a standard!
The DB
• Once there was the O***** (SQL DB).
• Then came NoSQL (we have some of those).
• Then we combine that with Micro-Services (each one should
have its separate DB/Schema).
• Much more difficult.
• Or not?!
Micro Services
• Should we split?
• What about consistency?
• Event sourcing?
• Not for everyone.
Polyglot
• What is your favorite language?
• The rise of “functional” languages.
• JavaScript is everywhere. (WebAssembly behind the corner).
• Pyhton for Data Scientists.
• Java + Scala + Kotlin.
• Jenkins Pipelines (Groovy).
• Golang!
Polyglot
• Important to distill the key ideas behind a language.
• Static/Dynamic types – current trends favor a more dynamically-
typed languages.
• Major Use-cases.
• Concurrency Management.
• Functional? (side-effects).
The Free Lunch is Over
• Happy single-threaded applications.
• Multi-threading is hard. Hard to avoid bugs and nearly
impossible to fully optimize.
• Transition into multi-cores.
• Transition into GPU.
• Cloud computing.
• FPGA & ASICs.
Hard Problem
public class Padding {
private static int COUNTER = 1 << 26;
public static class Pair {
private long c1;
private long c2;
}
private static Pair pair = new Pair();
public static class MyRunnable implements Runnable {
private final boolean firstLoop;
public MyRunnable(boolean firstLoop) {. this.firstLoop = firstLoop; }
@Override
public void run() {
Hard Problem
public class Padding {
private static int COUNTER = 1 << 26;
public static class Pair {
private long c1;
private long q1,q2,q3,q4,q5,q6,q7,q8;
private long c2;
}
private static Pair pair = new Pair();
public static class MyRunnable implements Runnable {
private final boolean firstLoop;
public MyRunnable(boolean firstLoop) {. this.firstLoop = firstLoop; }
@Override
public void run() {
Hot Technologies
• Well, there is blockchain.
• Not for everyone.
• Machine learning, on the other hand is for everyone.
• Finding patterns in the data.
• Bad data + good ML  very bad outcome.
• Also, there is big data and stream processing.
The Modern Developer
• Should be process aware (CI/CD).
• Should have at least base knowledge of the tools (pipeline
syntax, container files (Dockerfile), terraform, helm charts).
• Should be open-minded about the data (always ML
possibilities).
• Avoid mutable-shared objects.

More Related Content

What's hot

Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
Ruslan Shevchenko
 
A Taste of Pharo 7.0
A Taste of Pharo 7.0A Taste of Pharo 7.0
A Taste of Pharo 7.0
ESUG
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Igalia
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
Ricardo Sanchez
 
20140626 red dotrubyconf2014
20140626 red dotrubyconf201420140626 red dotrubyconf2014
20140626 red dotrubyconf2014
Hiroshi SHIBATA
 

What's hot (20)

eZ Publish nextgen
eZ Publish nextgeneZ Publish nextgen
eZ Publish nextgen
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 
Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.
 
Hello istio
Hello istioHello istio
Hello istio
 
Implementing a JavaScript Engine
Implementing a JavaScript EngineImplementing a JavaScript Engine
Implementing a JavaScript Engine
 
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
 
Experiences with Microservices at Tuenti
Experiences with Microservices at TuentiExperiences with Microservices at Tuenti
Experiences with Microservices at Tuenti
 
A Taste of Pharo 7.0
A Taste of Pharo 7.0A Taste of Pharo 7.0
A Taste of Pharo 7.0
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
 
SIL - All you need to know about Swift Intermediate Language
SIL - All you need to know about Swift Intermediate LanguageSIL - All you need to know about Swift Intermediate Language
SIL - All you need to know about Swift Intermediate Language
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devops
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?
 
20140626 red dotrubyconf2014
20140626 red dotrubyconf201420140626 red dotrubyconf2014
20140626 red dotrubyconf2014
 
Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6
 
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
 
A Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and UnderstandingA Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and Understanding
 
An introduction and future of Ruby coverage library
An introduction and future of Ruby coverage libraryAn introduction and future of Ruby coverage library
An introduction and future of Ruby coverage library
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
 

Similar to Neodev

August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)
SATOSHI TAGOMORI
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!
All Things Open
 

Similar to Neodev (20)

Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
 
Monorepo at Pinterest
Monorepo at PinterestMonorepo at Pinterest
Monorepo at Pinterest
 
GoLang - Why It Matters
GoLang -  Why It MattersGoLang -  Why It Matters
GoLang - Why It Matters
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?
 
What we talk about when we talk about DevOps
What we talk about when we talk about DevOpsWhat we talk about when we talk about DevOps
What we talk about when we talk about DevOps
 
Pipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as Code
 
Hardware Prototyping for Software Developers
Hardware Prototyping for Software DevelopersHardware Prototyping for Software Developers
Hardware Prototyping for Software Developers
 
Go fundamentals
Go fundamentalsGo fundamentals
Go fundamentals
 
Introduction to multicore .ppt
Introduction to multicore .pptIntroduction to multicore .ppt
Introduction to multicore .ppt
 
Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and Economics
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
Kotlin Multiplatfom In Action
Kotlin Multiplatfom In ActionKotlin Multiplatfom In Action
Kotlin Multiplatfom In Action
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!
 
Go programming language
Go programming languageGo programming language
Go programming language
 
Coding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applicationsCoding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applications
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 

Neodev

  • 1. The Neo Developer Modern Software Development
  • 2. The Ice Age • I, test not! • Single language. • I care only about the code (not about: build, staging, qa, quality of data…). • Sprints are for Carl Lewis.
  • 3. The DevOps Revolution • Everybody is into CI/CD and considering continuous deployment. • Every developer should be familiar with a stack like: • Jenkins. • Ansible/Chef/Puppet.. • Docker. • K8S. • Terraform.
  • 4. CI/CD • Always keep motivation in mind! • Main motivation is finding bugs as early as possible. • Also, shorten time-to-market.
  • 5. Company Culture • And it’s not only the tech-stack. • The technology is important. • Company’s culture even more! • A good pipeline depends on: • How we treat the staging! • Quality of tests!
  • 6. Staging == Production • Staging should be treated like it is production. • Should be up 24/7. • New versions should be deployed like they are in production. • No manual SSH and hot fixes!
  • 7. Everything as Code • As software developers we are very disciplined about code. • We use SCM. • Write tests. • Do code reviews. • Document. • Have a bug management system. • Pipelines.
  • 8. Everything as Code • The modern trends try to treat everything as code: • Data as code. • Pipeline as code. • Deployment as code. • …
  • 9. Data • Whether we are doing machine learning or not, data is important. • And we need relations. • Between different pieces of data! • JSON-LD as a standard!
  • 10. The DB • Once there was the O***** (SQL DB). • Then came NoSQL (we have some of those). • Then we combine that with Micro-Services (each one should have its separate DB/Schema). • Much more difficult. • Or not?!
  • 11. Micro Services • Should we split? • What about consistency? • Event sourcing? • Not for everyone.
  • 12. Polyglot • What is your favorite language? • The rise of “functional” languages. • JavaScript is everywhere. (WebAssembly behind the corner). • Pyhton for Data Scientists. • Java + Scala + Kotlin. • Jenkins Pipelines (Groovy). • Golang!
  • 13. Polyglot • Important to distill the key ideas behind a language. • Static/Dynamic types – current trends favor a more dynamically- typed languages. • Major Use-cases. • Concurrency Management. • Functional? (side-effects).
  • 14. The Free Lunch is Over • Happy single-threaded applications. • Multi-threading is hard. Hard to avoid bugs and nearly impossible to fully optimize. • Transition into multi-cores. • Transition into GPU. • Cloud computing. • FPGA & ASICs.
  • 15. Hard Problem public class Padding { private static int COUNTER = 1 << 26; public static class Pair { private long c1; private long c2; } private static Pair pair = new Pair(); public static class MyRunnable implements Runnable { private final boolean firstLoop; public MyRunnable(boolean firstLoop) {. this.firstLoop = firstLoop; } @Override public void run() {
  • 16. Hard Problem public class Padding { private static int COUNTER = 1 << 26; public static class Pair { private long c1; private long q1,q2,q3,q4,q5,q6,q7,q8; private long c2; } private static Pair pair = new Pair(); public static class MyRunnable implements Runnable { private final boolean firstLoop; public MyRunnable(boolean firstLoop) {. this.firstLoop = firstLoop; } @Override public void run() {
  • 17. Hot Technologies • Well, there is blockchain. • Not for everyone. • Machine learning, on the other hand is for everyone. • Finding patterns in the data. • Bad data + good ML  very bad outcome. • Also, there is big data and stream processing.
  • 18. The Modern Developer • Should be process aware (CI/CD). • Should have at least base knowledge of the tools (pipeline syntax, container files (Dockerfile), terraform, helm charts). • Should be open-minded about the data (always ML possibilities). • Avoid mutable-shared objects.