SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
HOW TO SURVIVE THE FIRST WEEKS AS A
DEVELOPER IN A FAST GROWING STARTUP?
STEFAN ADOLF
YOU’RE LISTENING TO…
STEFAN ADOLF
▸ PHP, Java, JavaScript & a little go
▸ Señor lead developer at Locadi/
Check24 Berlin
▸ founded his own startup & worked
for 3 more + Samsung SDS, 3ys
freelancing experience
▸ Scrum, Node and Symfony
evangelist
▸ more work, less talk
▸ @stadolf (everywhere)
WHAT IS A
“FAST GROWING” STARTUP?
▸ “fast growing” != “huge scale” (yet)
▸ things go constantly and unpredictably wrong
▸ it has a sufficient funding for ~12 months
▸ there’s more than 1 developer in the team
▸ there’s at least 1 developer in the team that’s massively
overworked
▸ chances are: not everything is working perfectly
LET’S MAKE IT
PERFECT.
WEEK 1-2
WEEK 1-2
PROFILING, LEVEL 1: OBSERVE AND LISTEN
▸ who’s there for the longest time?
▸ who does most of the work?
▸ who knows all the things?
▸ who will support / distract you?
▸ who splits the team, who keeps it together?
▸ who can push/merge to master?
▸ who knows to get around system restrictions?
▸ who can you have a beer with? 🍺
▸ who has had a hangover after a drinkout night with the investors?
UNDERSTAND AN
UNDOCUMENTED CODE BASE
DEBUGGER
USAGE SEARCH
GIT BLAME / GIT LOG
APPLICATION LOGS
GENERATED UML
DATABASE REPRESENTATION
READ THE CODE. THEN READ IT
AGAIN. THEN: GIT LOG.
TEXT
USE THE TERMINAL, LUKE!
EST’D 1971, MUCH FASTER THAN FINDER
WEEK 1-2
TERMINAL SETUP: HELPFUL ALIASES
▸ alias ll=“ls -la”
▸ alias ..=“cd ..” && alias …=“cd ../..”
▸ alias gop=“cd ~/projects/myproj”
▸ alias tailapp=“tail -f /var/log/app/prod.log”
▸ alias sf=“bin/console”
▸ alias getdb="ssh prod 'mysqldump -uuser -p
somedb | gzip > dump.gz' && scp prod:~/
dump.gz .”
WEEK 1-2
TERMINAL SETUP: THE PROMPT
▸ Mac: ~/.profile, Linux: ~/.bashrc
▸ https://github.com/alebcay/awesome-shell
▸ https://github.com/magicmonty/bash-git-prompt
▸ http://ezprompt.net/
WEEK 1-2
TERMINAL SETUP: COMMAND COMPLETION
▸ git: https://github.com/git/git/blob/master/contrib/
completion/git-completion.bash
▸ composer: https://github.com/iArren/composer-bash-
completion.git
▸ Symfony: https://hauck.io/symfony-bash-completion-mac-
linux/
▸ Wordpress CLI: https://wp-cli.org/#tab-completions
▸ NPM: https://docs.npmjs.com/cli/completion
WEEK 2-4
WEEK 2-4
GET PRODUCTIVE
▸ ask for a meaningful feature to implement
▸ take responsibility for it until it’s rolled out.
▸ understand the existing coding culture
▸ write tests for code that wasn’t written by yourself
▸ actively question workarounds and understand the answers
▸ ask for an supervised deployment
▸ understand the company’s culture
▸ have lunch/dinner with a “stakeholder” and another developer
WEEK 2-4
PROFILING, LEVEL 2: DEVELOPER CHARACTERS
Doesn’t talk much, works on his own.
Delivers stuff that works but doesn’t play
well with others.
Shares the funniest cat memes first on
#random.
THE INTROVERTED
Always knows immediately what to do.
Creates a working prototype by next day,
Stops at 90% and tells others to “fix” the
rest.
THE MAZE RUNNER
thinks that all problems can be solved
with a major version update, a platform
or language switch or a new database
technology.
THE CLOUDHEAD
Draws 30 pages of UML.
Writes more tickets than code
Creates time tables, QA/test-plans and
communication strategies before writing
one line of code.
THE STRATEGIST
WEEK 2-4
DON’T MENTION ON EVERY OCCASION THAT
▸ the codebase is one big mess
▸ documentation is missing
▸ they didn’t follow a consistent code style
▸ It’s by far the most irrelevant rule of “clean” code!
▸ you know better ways to achieve things
▸ the chosen architecture won’t scale
YOU’RE NEVER THE WISEST
ELEPHANT IN THE ZOO.
WEEK 2-4
WEEK 2-4
ACCEPTANCE (E2E) TESTING
▸ test a project without having insights into the code
✓ simple to write, maintain, understand and run
✗ con: quite slow, needs full project setup
▸ ideal for smoke testing
▸ should be run as a separate test suite
▸ Codeception, Protractor (Angular), SauceLabs
CODECEPTION
TEST WITHOUT KNOWING ANY CODE
WEEK 2-4
CODECEPTION
▸ test real pages or APIs from the client side
▸ google-chrome-driver: no need for selenium or PhantomJS
WEEK 4-8
WEEK 4-8
PROFILING, LEVEL 3: TEAM SETUP
▸ feedback should always start positive.
▸ utilize weaknesses and strengths of your colleagues:
▸ assign introverts’ PRs to cloudheads and strategists
▸ they’ll integrate working code with architecture
▸ break down cloudheads’ ideas to workable tasks
▸ assign them to introverts to see if it could work out
▸ let maze runners deploy their code
▸ so they learn that breaking things comes at a cost.
▸ Goal: everyone can blindly trust each other and everyone improves
WEEK 4-8
START LEAVING YOUR MARK
▸ take review responsibility for pull requests
▸ refactor a component
▸ improve some process component
▸ e.g. send a Slack notification when deployment has finished
▸ dive into the headache issues
▸ scale & stability
▸ insights
▸ get things done: if your first task/project still hasn’t been rolled out:
dismiss it, delegate it or finish it.
WEEK 4-8
PULL REQUESTS AND CODE REVIEWS
▸ If it works, it’s good. If it doesn’t break anything, it’s better.
▸ prefer personal discussions over github review comments
▸ open a PR on top of the original PR
▸ favor rebase over merge whenever possible
▸ git checkout ——track origin/feature/123-feature
▸ git rebase -i master
▸ git push ——force
▸ deploy review apps and have your Product Owner test the PR
▸ tell them what they should take care of
▸ let an experienced developer test the review app
▸ he knows how to break things you’ve overlooked
DONE IS BETTER THAN
PERFECT.
TEXT
WEEK 4-8
NAMING BRANCHES
▸ quite good if you have lots of branches
▸ feature/1234-add-countdown
▸ bugfix/CR-5678-repair-mails
IMPLEMENTATION-SCOPE TICKET-ID SHORT-TITLE/ -
YOURNAME TICKET-ID SHORT-TITLE/ -
▸ quite good for small teams and iterative pull requests / reviews
▸ elmariachi/1234-add-countdown
▸ stefan/CR-5678-repair-mails
KNOW YOUR SERVERS GO
DOWN BEFORE THEY DO.
WEEK 4-8
APPLICATION ERROR LOGGING
▸ use logging libraries
▸ PHP: Monolog
▸ node.js: winston
▸ airbrake.io for frontend logging
▸ writing application logs as JSON simplifies the ingestion in
log services
▸ use the CRITICAL level only for horrible defuncts (only
eventually uncaught exceptions) and send emails when
they occur.
WEEK 4-8
KNOW YOUR SERVERS GO DOWN BEFORE THEY DO.
▸ send all logs from all machines to one platform to analyse them
▸ Log analysis platforms
▸ loggly, logz.io, papertrail, ELK
▸ Instance and uptime monitoring
▸ Pingdom, New Relic, PagerDuty, Munin
▸ avoid sending logs directly from your app.
▸ Use (r)syslog(d)
▸ sysout (captured by container)
▸ or file watchers instead
WEEK 9-12
WEEK 9-12
SUPPORT THE GROWTH
▸ actively start cleaning up workarounds and hacks that
slow you down.
▸ usually it’s cheaper to buy than to build
▸ you can still switch to your own solution later
▸ profile your app to find bottlenecks
▸ don’t trust only gut feelings
TEXT
REQUIREMENTS ENGINEERING
▸ teach your stakeholders to
▸ formulate precisely
▸ focus on low hanging fruits
▸ minimalize user stories’ content
▸ housekeep your scrum / kanban board
▸ listen frequently and closely to people working with your
software
▸ they love to be understood and appreciate the discussion
APPLICATION
PROFILING
WEEK 9-12
APPLICATION PROFILING
▸ xdebug: profiler that creates cachegrind files. Enable in xdebug.ini
▸ great for local development
▸ viewer embedded in IntelliJ PHPStorm
▸ qcachegrind for more information
▸ blackfire.io
▸ profile running web applications
▸ compare results
▸ plays well with PaaS / heroku
MOST PERFORMANCE ISSUES
CAN BE SOLVED USING MONEY
OR CACHES
TEXT
WEEK 9-12
I’VE SEEN PEOPLE WRITING THEIR OWN…
WEB SERVERS
it’s faster!


We don’t need all these
features!


That way we understand
what’s going on!


We can control security on
our own!
DEPLOYMENT TOOLS
I wasn’t able to ssh into our
live machine with
capistrano!
I needed to modify our
configuration file for the
stage!
I had to log what’s
happening during the
deployment phase
FRAMEWORKS
feature xyz wasn’t in all of
them!
The bootstrap phase took to
long!
The caching component
didn’t work well with NFS!
I know OO-design better
than Martin Fowler!
YOU’RE NOT THE FIRST ONE
WITH THAT IDEA!
TEXT
TEXT
IMPLEMENT A DEVELOPERS FIRST CULTURE
▸ developers know the product better than anyone else!
▸ so why shouldn’t they have the better ideas?
▸ don’t simply accept all user stories: Question everything.
▸ Find people that support you doing that and share your
opinion with them.
▸ good interfaces are a matter of evolution and out-of-the-
box thinking
TL;DR
TEXT
TAKE AWAY
▸ use the terminal and your tools like a boss!
▸ gather all logs to a unique place where you can analyse
them. Logging will save your life!
▸ use e2e tests to get a minimum of security
▸ if you’re wondering what part is slow: use profiler tools!
▸ profile your comrades and learn how to handle them
▸ take responsibility and go the extra mile!
THANKS FOR
SURVIVING!
Stefan Adolf

https://www.facebook.com/stadolf

https://twitter.com/stadolf

https://github.com/elmariachi111

https://www.linkedin.com/in/stadolf/
I am
https://github.com/elmariachi111/farodevday

Weitere ähnliche Inhalte

Andere mochten auch

Finding HMAS Sydney Chapter 9 - Search for Sydney
Finding HMAS Sydney Chapter 9 - Search for SydneyFinding HMAS Sydney Chapter 9 - Search for Sydney
Finding HMAS Sydney Chapter 9 - Search for SydneyElk Software Group
 
Big Data Commercialization and associated IoT Platform Implications by Ramnik...
Big Data Commercialization and associated IoT Platform Implications by Ramnik...Big Data Commercialization and associated IoT Platform Implications by Ramnik...
Big Data Commercialization and associated IoT Platform Implications by Ramnik...Data Con LA
 
Plan de transport 2014: le Brabant Flamand
Plan de transport 2014: le Brabant FlamandPlan de transport 2014: le Brabant Flamand
Plan de transport 2014: le Brabant FlamandSNCB
 
codeless/serverless develop
codeless/serverless develop codeless/serverless develop
codeless/serverless develop Tomoyuki Obi
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Filipe Barretto
 
High Availability Architecture for Legacy Stuff - a 10.000 feet overview
High Availability Architecture for Legacy Stuff - a 10.000 feet overviewHigh Availability Architecture for Legacy Stuff - a 10.000 feet overview
High Availability Architecture for Legacy Stuff - a 10.000 feet overviewMarco Amado
 
Info qiy foundation digital me - dappre-eng-aug17
Info qiy foundation   digital me - dappre-eng-aug17Info qiy foundation   digital me - dappre-eng-aug17
Info qiy foundation digital me - dappre-eng-aug17BigDataExpo
 
Projectmanagement en systemisch werken
Projectmanagement en systemisch werkenProjectmanagement en systemisch werken
Projectmanagement en systemisch werkenOkke Jan Douma
 
Workshop 2: Building a streaming data platform on AWS
Workshop 2: Building a streaming data platform on AWSWorkshop 2: Building a streaming data platform on AWS
Workshop 2: Building a streaming data platform on AWSAmazon Web Services
 
Elk Reporting Ii
Elk Reporting IiElk Reporting Ii
Elk Reporting Iimwmiller12
 
SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...
SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...
SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...DIWUG
 
A4 drive dev_ops_agility_and_operational_efficiency
A4 drive dev_ops_agility_and_operational_efficiencyA4 drive dev_ops_agility_and_operational_efficiency
A4 drive dev_ops_agility_and_operational_efficiencyDr. Wilfred Lin (Ph.D.)
 
SQL saturday 623 TLV - SQL AZURE
SQL saturday 623 TLV - SQL AZURESQL saturday 623 TLV - SQL AZURE
SQL saturday 623 TLV - SQL AZUREPini Krisher
 
Running Business Critical Workloads on AWS – Nam Je Cho
Running Business Critical Workloads on AWS – Nam Je ChoRunning Business Critical Workloads on AWS – Nam Je Cho
Running Business Critical Workloads on AWS – Nam Je ChoAmazon Web Services
 
Brown Bag Lunch sur Hazelcast
Brown Bag Lunch sur HazelcastBrown Bag Lunch sur Hazelcast
Brown Bag Lunch sur HazelcastSylvain Wallez
 
Digital transformation - DevOps Day - 02/02/2017
Digital transformation - DevOps Day - 02/02/2017Digital transformation - DevOps Day - 02/02/2017
Digital transformation - DevOps Day - 02/02/2017Clara Feuillet
 
Harmonizing Multi-tenant HBase Clusters for Managing Workload Diversity
Harmonizing Multi-tenant HBase Clusters for Managing Workload DiversityHarmonizing Multi-tenant HBase Clusters for Managing Workload Diversity
Harmonizing Multi-tenant HBase Clusters for Managing Workload DiversityHBaseCon
 
Production testing and disaster recovery
Production testing and disaster recoveryProduction testing and disaster recovery
Production testing and disaster recoveryBizTalk360
 

Andere mochten auch (19)

Finding HMAS Sydney Chapter 9 - Search for Sydney
Finding HMAS Sydney Chapter 9 - Search for SydneyFinding HMAS Sydney Chapter 9 - Search for Sydney
Finding HMAS Sydney Chapter 9 - Search for Sydney
 
Big Data Commercialization and associated IoT Platform Implications by Ramnik...
Big Data Commercialization and associated IoT Platform Implications by Ramnik...Big Data Commercialization and associated IoT Platform Implications by Ramnik...
Big Data Commercialization and associated IoT Platform Implications by Ramnik...
 
Plan de transport 2014: le Brabant Flamand
Plan de transport 2014: le Brabant FlamandPlan de transport 2014: le Brabant Flamand
Plan de transport 2014: le Brabant Flamand
 
codeless/serverless develop
codeless/serverless develop codeless/serverless develop
codeless/serverless develop
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
 
High Availability Architecture for Legacy Stuff - a 10.000 feet overview
High Availability Architecture for Legacy Stuff - a 10.000 feet overviewHigh Availability Architecture for Legacy Stuff - a 10.000 feet overview
High Availability Architecture for Legacy Stuff - a 10.000 feet overview
 
Info qiy foundation digital me - dappre-eng-aug17
Info qiy foundation   digital me - dappre-eng-aug17Info qiy foundation   digital me - dappre-eng-aug17
Info qiy foundation digital me - dappre-eng-aug17
 
Projectmanagement en systemisch werken
Projectmanagement en systemisch werkenProjectmanagement en systemisch werken
Projectmanagement en systemisch werken
 
Workshop 2: Building a streaming data platform on AWS
Workshop 2: Building a streaming data platform on AWSWorkshop 2: Building a streaming data platform on AWS
Workshop 2: Building a streaming data platform on AWS
 
Elk Reporting Ii
Elk Reporting IiElk Reporting Ii
Elk Reporting Ii
 
SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...
SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...
SPSNL17 - Securing Office 365 and Microsoft Azure like a rock star (or groupi...
 
A4 drive dev_ops_agility_and_operational_efficiency
A4 drive dev_ops_agility_and_operational_efficiencyA4 drive dev_ops_agility_and_operational_efficiency
A4 drive dev_ops_agility_and_operational_efficiency
 
Azure OMS
Azure OMSAzure OMS
Azure OMS
 
SQL saturday 623 TLV - SQL AZURE
SQL saturday 623 TLV - SQL AZURESQL saturday 623 TLV - SQL AZURE
SQL saturday 623 TLV - SQL AZURE
 
Running Business Critical Workloads on AWS – Nam Je Cho
Running Business Critical Workloads on AWS – Nam Je ChoRunning Business Critical Workloads on AWS – Nam Je Cho
Running Business Critical Workloads on AWS – Nam Je Cho
 
Brown Bag Lunch sur Hazelcast
Brown Bag Lunch sur HazelcastBrown Bag Lunch sur Hazelcast
Brown Bag Lunch sur Hazelcast
 
Digital transformation - DevOps Day - 02/02/2017
Digital transformation - DevOps Day - 02/02/2017Digital transformation - DevOps Day - 02/02/2017
Digital transformation - DevOps Day - 02/02/2017
 
Harmonizing Multi-tenant HBase Clusters for Managing Workload Diversity
Harmonizing Multi-tenant HBase Clusters for Managing Workload DiversityHarmonizing Multi-tenant HBase Clusters for Managing Workload Diversity
Harmonizing Multi-tenant HBase Clusters for Managing Workload Diversity
 
Production testing and disaster recovery
Production testing and disaster recoveryProduction testing and disaster recovery
Production testing and disaster recovery
 

Mehr von Stefan Adolf

Blockchains - Technical foundations
Blockchains - Technical foundationsBlockchains - Technical foundations
Blockchains - Technical foundationsStefan Adolf
 
HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?Stefan Adolf
 
Digitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler TechnologienDigitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler TechnologienStefan Adolf
 
Digitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der DezentralitätDigitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der DezentralitätStefan Adolf
 
Decentralized technology: a (short) survey
Decentralized technology: a (short) surveyDecentralized technology: a (short) survey
Decentralized technology: a (short) surveyStefan Adolf
 
Productive web applications that run only on the frontend
Productive web applications that run only on the frontendProductive web applications that run only on the frontend
Productive web applications that run only on the frontendStefan Adolf
 
DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)Stefan Adolf
 
DePA - die dezentrale Patientenakte
DePA - die dezentrale PatientenakteDePA - die dezentrale Patientenakte
DePA - die dezentrale PatientenakteStefan Adolf
 
Was ist eine Datenbank - und was hat Blockchain damit zu tun?
Was ist eine Datenbank - und was hat Blockchain damit zu tun?Was ist eine Datenbank - und was hat Blockchain damit zu tun?
Was ist eine Datenbank - und was hat Blockchain damit zu tun?Stefan Adolf
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsStefan Adolf
 
Decentralize all the things
Decentralize all the thingsDecentralize all the things
Decentralize all the thingsStefan Adolf
 
Indexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphIndexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphStefan Adolf
 
Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Stefan Adolf
 
A micro service story
 A micro service story A micro service story
A micro service storyStefan Adolf
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformStefan Adolf
 
Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)Stefan Adolf
 
Testing API platform with Behat BDD tests
Testing API platform with Behat BDD testsTesting API platform with Behat BDD tests
Testing API platform with Behat BDD testsStefan Adolf
 
Hack it like its hot!
Hack it like its hot!Hack it like its hot!
Hack it like its hot!Stefan Adolf
 
api-platform: the ultimate API platform
api-platform: the ultimate API platformapi-platform: the ultimate API platform
api-platform: the ultimate API platformStefan Adolf
 
Webpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of usWebpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of usStefan Adolf
 

Mehr von Stefan Adolf (20)

Blockchains - Technical foundations
Blockchains - Technical foundationsBlockchains - Technical foundations
Blockchains - Technical foundations
 
HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?
 
Digitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler TechnologienDigitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler Technologien
 
Digitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der DezentralitätDigitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der Dezentralität
 
Decentralized technology: a (short) survey
Decentralized technology: a (short) surveyDecentralized technology: a (short) survey
Decentralized technology: a (short) survey
 
Productive web applications that run only on the frontend
Productive web applications that run only on the frontendProductive web applications that run only on the frontend
Productive web applications that run only on the frontend
 
DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)
 
DePA - die dezentrale Patientenakte
DePA - die dezentrale PatientenakteDePA - die dezentrale Patientenakte
DePA - die dezentrale Patientenakte
 
Was ist eine Datenbank - und was hat Blockchain damit zu tun?
Was ist eine Datenbank - und was hat Blockchain damit zu tun?Was ist eine Datenbank - und was hat Blockchain damit zu tun?
Was ist eine Datenbank - und was hat Blockchain damit zu tun?
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
 
Decentralize all the things
Decentralize all the thingsDecentralize all the things
Decentralize all the things
 
Indexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphIndexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The Graph
 
Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019
 
A micro service story
 A micro service story A micro service story
A micro service story
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API Platform
 
Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)
 
Testing API platform with Behat BDD tests
Testing API platform with Behat BDD testsTesting API platform with Behat BDD tests
Testing API platform with Behat BDD tests
 
Hack it like its hot!
Hack it like its hot!Hack it like its hot!
Hack it like its hot!
 
api-platform: the ultimate API platform
api-platform: the ultimate API platformapi-platform: the ultimate API platform
api-platform: the ultimate API platform
 
Webpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of usWebpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of us
 

Kürzlich hochgeladen

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 

Kürzlich hochgeladen (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

How to survive the first weeks as a developer in a fast growing startup?

  • 1. HOW TO SURVIVE THE FIRST WEEKS AS A DEVELOPER IN A FAST GROWING STARTUP? STEFAN ADOLF
  • 2. YOU’RE LISTENING TO… STEFAN ADOLF ▸ PHP, Java, JavaScript & a little go ▸ Señor lead developer at Locadi/ Check24 Berlin ▸ founded his own startup & worked for 3 more + Samsung SDS, 3ys freelancing experience ▸ Scrum, Node and Symfony evangelist ▸ more work, less talk ▸ @stadolf (everywhere)
  • 3. WHAT IS A “FAST GROWING” STARTUP? ▸ “fast growing” != “huge scale” (yet) ▸ things go constantly and unpredictably wrong ▸ it has a sufficient funding for ~12 months ▸ there’s more than 1 developer in the team ▸ there’s at least 1 developer in the team that’s massively overworked ▸ chances are: not everything is working perfectly
  • 6. WEEK 1-2 PROFILING, LEVEL 1: OBSERVE AND LISTEN ▸ who’s there for the longest time? ▸ who does most of the work? ▸ who knows all the things? ▸ who will support / distract you? ▸ who splits the team, who keeps it together? ▸ who can push/merge to master? ▸ who knows to get around system restrictions? ▸ who can you have a beer with? 🍺 ▸ who has had a hangover after a drinkout night with the investors?
  • 10. GIT BLAME / GIT LOG
  • 14. READ THE CODE. THEN READ IT AGAIN. THEN: GIT LOG. TEXT
  • 15. USE THE TERMINAL, LUKE! EST’D 1971, MUCH FASTER THAN FINDER
  • 16. WEEK 1-2 TERMINAL SETUP: HELPFUL ALIASES ▸ alias ll=“ls -la” ▸ alias ..=“cd ..” && alias …=“cd ../..” ▸ alias gop=“cd ~/projects/myproj” ▸ alias tailapp=“tail -f /var/log/app/prod.log” ▸ alias sf=“bin/console” ▸ alias getdb="ssh prod 'mysqldump -uuser -p somedb | gzip > dump.gz' && scp prod:~/ dump.gz .”
  • 17. WEEK 1-2 TERMINAL SETUP: THE PROMPT ▸ Mac: ~/.profile, Linux: ~/.bashrc ▸ https://github.com/alebcay/awesome-shell ▸ https://github.com/magicmonty/bash-git-prompt ▸ http://ezprompt.net/
  • 18. WEEK 1-2 TERMINAL SETUP: COMMAND COMPLETION ▸ git: https://github.com/git/git/blob/master/contrib/ completion/git-completion.bash ▸ composer: https://github.com/iArren/composer-bash- completion.git ▸ Symfony: https://hauck.io/symfony-bash-completion-mac- linux/ ▸ Wordpress CLI: https://wp-cli.org/#tab-completions ▸ NPM: https://docs.npmjs.com/cli/completion
  • 20. WEEK 2-4 GET PRODUCTIVE ▸ ask for a meaningful feature to implement ▸ take responsibility for it until it’s rolled out. ▸ understand the existing coding culture ▸ write tests for code that wasn’t written by yourself ▸ actively question workarounds and understand the answers ▸ ask for an supervised deployment ▸ understand the company’s culture ▸ have lunch/dinner with a “stakeholder” and another developer
  • 21. WEEK 2-4 PROFILING, LEVEL 2: DEVELOPER CHARACTERS Doesn’t talk much, works on his own. Delivers stuff that works but doesn’t play well with others. Shares the funniest cat memes first on #random. THE INTROVERTED Always knows immediately what to do. Creates a working prototype by next day, Stops at 90% and tells others to “fix” the rest. THE MAZE RUNNER thinks that all problems can be solved with a major version update, a platform or language switch or a new database technology. THE CLOUDHEAD Draws 30 pages of UML. Writes more tickets than code Creates time tables, QA/test-plans and communication strategies before writing one line of code. THE STRATEGIST
  • 22. WEEK 2-4 DON’T MENTION ON EVERY OCCASION THAT ▸ the codebase is one big mess ▸ documentation is missing ▸ they didn’t follow a consistent code style ▸ It’s by far the most irrelevant rule of “clean” code! ▸ you know better ways to achieve things ▸ the chosen architecture won’t scale
  • 23. YOU’RE NEVER THE WISEST ELEPHANT IN THE ZOO. WEEK 2-4
  • 24. WEEK 2-4 ACCEPTANCE (E2E) TESTING ▸ test a project without having insights into the code ✓ simple to write, maintain, understand and run ✗ con: quite slow, needs full project setup ▸ ideal for smoke testing ▸ should be run as a separate test suite ▸ Codeception, Protractor (Angular), SauceLabs
  • 26. WEEK 2-4 CODECEPTION ▸ test real pages or APIs from the client side ▸ google-chrome-driver: no need for selenium or PhantomJS
  • 28. WEEK 4-8 PROFILING, LEVEL 3: TEAM SETUP ▸ feedback should always start positive. ▸ utilize weaknesses and strengths of your colleagues: ▸ assign introverts’ PRs to cloudheads and strategists ▸ they’ll integrate working code with architecture ▸ break down cloudheads’ ideas to workable tasks ▸ assign them to introverts to see if it could work out ▸ let maze runners deploy their code ▸ so they learn that breaking things comes at a cost. ▸ Goal: everyone can blindly trust each other and everyone improves
  • 29. WEEK 4-8 START LEAVING YOUR MARK ▸ take review responsibility for pull requests ▸ refactor a component ▸ improve some process component ▸ e.g. send a Slack notification when deployment has finished ▸ dive into the headache issues ▸ scale & stability ▸ insights ▸ get things done: if your first task/project still hasn’t been rolled out: dismiss it, delegate it or finish it.
  • 30. WEEK 4-8 PULL REQUESTS AND CODE REVIEWS ▸ If it works, it’s good. If it doesn’t break anything, it’s better. ▸ prefer personal discussions over github review comments ▸ open a PR on top of the original PR ▸ favor rebase over merge whenever possible ▸ git checkout ——track origin/feature/123-feature ▸ git rebase -i master ▸ git push ——force ▸ deploy review apps and have your Product Owner test the PR ▸ tell them what they should take care of ▸ let an experienced developer test the review app ▸ he knows how to break things you’ve overlooked
  • 31. DONE IS BETTER THAN PERFECT. TEXT
  • 32. WEEK 4-8 NAMING BRANCHES ▸ quite good if you have lots of branches ▸ feature/1234-add-countdown ▸ bugfix/CR-5678-repair-mails IMPLEMENTATION-SCOPE TICKET-ID SHORT-TITLE/ - YOURNAME TICKET-ID SHORT-TITLE/ - ▸ quite good for small teams and iterative pull requests / reviews ▸ elmariachi/1234-add-countdown ▸ stefan/CR-5678-repair-mails
  • 33. KNOW YOUR SERVERS GO DOWN BEFORE THEY DO.
  • 34. WEEK 4-8 APPLICATION ERROR LOGGING ▸ use logging libraries ▸ PHP: Monolog ▸ node.js: winston ▸ airbrake.io for frontend logging ▸ writing application logs as JSON simplifies the ingestion in log services ▸ use the CRITICAL level only for horrible defuncts (only eventually uncaught exceptions) and send emails when they occur.
  • 35. WEEK 4-8 KNOW YOUR SERVERS GO DOWN BEFORE THEY DO. ▸ send all logs from all machines to one platform to analyse them ▸ Log analysis platforms ▸ loggly, logz.io, papertrail, ELK ▸ Instance and uptime monitoring ▸ Pingdom, New Relic, PagerDuty, Munin ▸ avoid sending logs directly from your app. ▸ Use (r)syslog(d) ▸ sysout (captured by container) ▸ or file watchers instead
  • 37. WEEK 9-12 SUPPORT THE GROWTH ▸ actively start cleaning up workarounds and hacks that slow you down. ▸ usually it’s cheaper to buy than to build ▸ you can still switch to your own solution later ▸ profile your app to find bottlenecks ▸ don’t trust only gut feelings
  • 38. TEXT REQUIREMENTS ENGINEERING ▸ teach your stakeholders to ▸ formulate precisely ▸ focus on low hanging fruits ▸ minimalize user stories’ content ▸ housekeep your scrum / kanban board ▸ listen frequently and closely to people working with your software ▸ they love to be understood and appreciate the discussion
  • 40. WEEK 9-12 APPLICATION PROFILING ▸ xdebug: profiler that creates cachegrind files. Enable in xdebug.ini ▸ great for local development ▸ viewer embedded in IntelliJ PHPStorm ▸ qcachegrind for more information ▸ blackfire.io ▸ profile running web applications ▸ compare results ▸ plays well with PaaS / heroku
  • 41. MOST PERFORMANCE ISSUES CAN BE SOLVED USING MONEY OR CACHES TEXT
  • 42. WEEK 9-12 I’VE SEEN PEOPLE WRITING THEIR OWN… WEB SERVERS it’s faster! 
 We don’t need all these features! 
 That way we understand what’s going on! 
 We can control security on our own! DEPLOYMENT TOOLS I wasn’t able to ssh into our live machine with capistrano! I needed to modify our configuration file for the stage! I had to log what’s happening during the deployment phase FRAMEWORKS feature xyz wasn’t in all of them! The bootstrap phase took to long! The caching component didn’t work well with NFS! I know OO-design better than Martin Fowler!
  • 43. YOU’RE NOT THE FIRST ONE WITH THAT IDEA! TEXT
  • 44. TEXT IMPLEMENT A DEVELOPERS FIRST CULTURE ▸ developers know the product better than anyone else! ▸ so why shouldn’t they have the better ideas? ▸ don’t simply accept all user stories: Question everything. ▸ Find people that support you doing that and share your opinion with them. ▸ good interfaces are a matter of evolution and out-of-the- box thinking
  • 45. TL;DR
  • 46. TEXT TAKE AWAY ▸ use the terminal and your tools like a boss! ▸ gather all logs to a unique place where you can analyse them. Logging will save your life! ▸ use e2e tests to get a minimum of security ▸ if you’re wondering what part is slow: use profiler tools! ▸ profile your comrades and learn how to handle them ▸ take responsibility and go the extra mile!