Software Architecture Summit, Munich
This is a slightly longer version than the one presented at O'Reilly's Software Architecture Conference in New York and London
3. The hardest single part of building a software
system is deciding precisely what to build.
No Silver Bullet: Essence and Accidents of Software Engineering
Frederick P. Brooks, Jr.
Developer advocate is not just someone who advocates TO developers, but ON BEHALF OF developers
- I have so much to learn off every one of you
- Going to share my stories and lessons learnt from my experiences
This is a developer role
Looks like an architect
We’re all architects
Who’s involved in the process of decing what to build?
- Analysts, developers, testers, ops
We’re all architects because of this
While the senior people decide exactly what to build, we all still do this to some extent
We’re all full stack polyglot devops developers / testers / business analysts / operations / management
Whether you have it in your job title or not
Whether you are doing it now, or want to do it at some point
Whether you’re business, development, testing, ops, management or in a glue-like role like mine
- What do you want?
- Why do you want it?
- What are the alternatives?
- What happens if…?
- What’s the impact of…?
- Why was this done this way?
Talking to humans – your team, the business, another team, customers
Writing emails
Slack
Pull requests / code reviews – giving constructive feedback
Meetings – including listening to people and making space for them
Teaching / explaining / documenting
Presenting / demoing
Even readable code requires good communication
- New libraries, frameworks, languages every day
- New processes, people, mindsets
- New domains,
- Business changes its mind, customers change, evolve
* No tabs vs spaces, no Kotlin vs Java
* Different people, different teams, different domains, different times call for different approaches.
* Don’t be dogmatic, it will reduce stress and improve team morale
Learning to say “no”
- Prioritising your own work, helping others to prioritise
- The business will always want everything P1 right now
- Tech debt will never be high priority, neither will scalability until it fails
* Time Management can help, windows of time can focus the mind
* It’s not just about work time, it’s about you time
* Always-on world. Make you time
* Burnout
The ability to learn, and demonstrate, technical skills, sure
But just having them? Not the hard bit.
None of these skills require you to move away from code
But you might get pulled away from the code
20 MINUTES?
We’re architects so we care about scaling our skills
Scaling means: improving existing skills, learning new skills, and Getting More Done with these skills
In addition, the following activities will all help the non-technical skills
Note that you don’t have to be a leader here
- Not just with programmers
- LMAX: learnt more in 6 months of pair programming than 10 years of experience
- Learn about: domain, code, standards, tools, tips for using tools
- Everyone levels up
- Increase bus factor
Code archaeology
Remember Wednesday night sessions to look through the code?
Lobby for it
Suggest projects
Evaluate projects
- Mandatory Stack Overflow time
- Learnt about product, how the users used it
- Improved the product based on this
- Built up a lot of good will in the community
Open Source
- Good for developers
- Improve the code for your use case
- Good for the organisation’s rep
- If we all do it, we all level up
- Physical books contain knowledge (often verified)
- Split book into chapters
- Assign to person/people
- Get together to present on each chapter
- If you do it at work, the stuff learnt for each chapter should be applied to your team/product/tech stack
- Can be formal or informal
- Can be on a new tech you’re thinking of using
- Can be on an area of the domain
- Can shine a light on dark code
- Can practice presentations
* Benefits of user groups but on work time and at your location
* Remember you should be focused on sharing there, present what you’re working on
- Attending is great to learn
- Speaking is fantastic for your career, and makes your company look good
- If you’re a woman you should really do it. I know you think you’re not ready, but you are and we will help you
* User groups are lower barrier to entry
* Good way to find real stories of people doing stuff
* Good way to share your stories and get feedback from other practitioners
Conferences and user groups are fantastic for recruitment
If you want to be a 10x developer help your team to learn
35 MINUTES?
In the olden days you ensured job security by being unique
Now siloed knowledge is a risk
Increase bus factor
Mentoring is great
Learning is a big reason we do this
All the scaling activities help you learn other “soft” skills
Teaching is amazing for your career
Distributed vs Bigger Box
Don’t just collect new skills
Share them
…and helps you learn new stuff too
Scaling by buying a bigger box vs scaling by going distributed
Focus on this second one because:
- Sharing helps you learn
- Sharing makes you Look Really Good