SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque

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
Elk Software Group
 
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
BigDataExpo
 
Projectmanagement en systemisch werken
Projectmanagement en systemisch werkenProjectmanagement en systemisch werken
Projectmanagement en systemisch werken
Okke Jan Douma
 

Destaque (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
 

Mais de Stefan Adolf

Mais de 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
 

Último

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Último (20)

%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 

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!