how to become a great developer

55
How to become a great developer Corsin Decurtins, Netcetera JavaDay 2014-11-22 / Skopje

Upload: netcetera

Post on 06-Jul-2015

734 views

Category:

Software


3 download

DESCRIPTION

At the core, the job of a software developer is and has always been the same: writing good, elegant, sustainable and bug-free software that exceeds the expectations of your clients. But the context in which we do our job is changing and with it the skills required to be a great software developer. In this talk, I want to go through a couple of things that I think make the difference between a developer and a great developer. This includes some technical skills and practices, but also non-technical things that you might not consider relevant for a developer at first.

TRANSCRIPT

Page 1: How to become a great developer

How to become a great developerCorsin Decurtins, Netcetera

JavaDay

2014-11-22 / Skopje

Page 2: How to become a great developer

How many people here are…… developers? … not developers? … application developers? … great developers?

Page 3: How to become a great developer

How to become a great developerCorsin Decurtins, Netcetera

JavaDay

2014-11-22 / Skopje

Page 4: How to become a great developer

NotesAbout this talkI do not consider myself a great developer. I have always wanted to become a better developer. I have learned a few things along the way that made me a better developer.

I have seen qualities in other people that I consider make them great developers.

This is what this talk is about.

Page 5: How to become a great developer

NotesAbout this talkObservations and interpretations of qualities of other people. Half-baked theories and predictions about the future. Retrospective observations about myself and things that made me a better developer.

Skills that I think are important for developers, and will be even more important in the future.

Page 6: How to become a great developer

Basics

Page 7: How to become a great developer

NotesBasicsI will not talk much about the basics. Of course you need to improve your development skills. Learn about things like Clean Code, Good Design, Test-Driven Development Agile Methodologies, Test Coverage, Complexity Design Patterns, Reactive Programming, …

But you already know that.

Page 8: How to become a great developer

Code

Page 9: How to become a great developer

NotesReading CodeCode is something we deal with every day Focus is usually on writing code. But reading code is a great way of

learning things. Coding style, design patterns, naming conventions, formatting,

algorithms, data structures, logging, … Create a habit of reading code Code reviews Other projects from your company, libraries, code on Github Look at the code of open-source components that you use

Page 10: How to become a great developer

Architecture

Page 11: How to become a great developer
Page 12: How to become a great developer

NotesSoftware ArchitectureDevelopers sometimes have negative connotations with architecture Software architects are the guys in shirts and ties that tell you what to do,

but do not really know what they are talking about Software Architecture is a property of a system It’s about the big picture; it’s about things that are difficult to change Software Architecture is way to important to leave it to the “Software

Architects” Be interested in Software Architecture and learn things about it Simon Brown’s Software Architecture for Developers is my recommendation

Page 13: How to become a great developer
Page 14: How to become a great developer

NotesLearning New LanguagesYou have probably already heard this one. Learn new languages, even if you will never really use them. Languages always come with a way of thinking, a way of looking at the world.

First-class citizens and concepts of programming languages.

Page 15: How to become a great developer

NotesLearning New LanguagesYou learn a new language. You are confronted with a new way of looking at the world and at computing / programming.

You can use ideas and concepts from one language in another language.

You learn about core concepts and different ways of looking at the world

You learn to learn new languages

Page 16: How to become a great developer
Page 17: How to become a great developer

NotesSoftware DevelopmentWriting Code Avoiding Bugs Well-structured, clean code Automated tests Robust design, flexible, scalable, adaptable, extensible Delivering value to the customer

Page 18: How to become a great developer

NotesThe great software developerA great software developer is great at writing code Learn about good architecture, clean code, automated testing, continuous integration, design patterns and principles, …

But software development is about a lot more than just writing code, particularly when we are talking about application code rather than frameworks, libraries and components.

Page 19: How to become a great developer

Software Development

User Experience

Testing Quality Assurance

Interaction Graphics

Operations

Marketing

Architecture

Management

Business

Security

Product Management

Legal

Requirements Engineering

Page 20: How to become a great developer

NotesThere are lots of other parties involved in a Software Development project.

The actual software development is just one part of the overall process.

People who are experts in other domains contribute to the software development project.

So how do you collaborate with all these parties … from a software developers point of view.

Page 21: How to become a great developer

Group N-1

Group N

Group N+1

Page 22: How to become a great developer

Group N-1

Group N

Group N+1

Page 23: How to become a great developer

Group N-1

Group N

Group N+1

Group N+2

Group N+3

Group N+4

Page 24: How to become a great developer

NotesCollaboration used to be from one group to another, usually through some formal artefacts like documents, code or similar deliverables.

Feedback was not very prominent in this old model of collaboration.

Essentially, this is waterfall thinking.

Page 25: How to become a great developer

Software Development

User Experience

Testing Quality Assurance

Interaction Graphics

Operations

Marketing

Architecture

Management

Business

Security

Product Management

Legal

Requirements Engineering

DevOps

Analytics

Analytics

ScrumDDD

Test Automation

Scrum A/B Testing

Page 26: How to become a great developer

NotesCollaboration between the different groups is changing. Lots of buzzwords are around nowadays (as seen on the previous slide). What a lot of them have in common is that they include a much closer collaboration between different groups of people.

Devops is a good example for this. At the core is promotes a very close collaboration between software developers and operations people.

More interaction, more feedback, more informal communication and collaboration.

This is basically the idea mentioned in the Agile Manifesto.

Page 27: How to become a great developer

Agile ManifestoIndividuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

Page 28: How to become a great developer

Software Development

User Experience

Testing Quality Assurance

Interaction Graphics

Operations

Marketing

Architecture

Management

Business

Security

Product Management

Legal

Requirements Engineering

Page 29: How to become a great developer

NotesAgile CollaborationFewer formal interfaces between the different teams. Focus on collaboration and communication. Much more feedback. Redefinition of the “team” as a group of people with a common goal (and completely different skills) rather than just a group of people with the same skills and tasks.

This has an impact on us as software developers and on the skills that we need.

Page 30: How to become a great developer

Software Development

Page 31: How to become a great developer

NotesMaking your skills availableIt’s not just about having good technical skills and knowledge It’s also about making those skills available to your clients The value of a developer lies within what he or she knows and can do, but also how well the team and the client can make use of this knowledge and skills

Think of it as the functionality that you provide and the API through which you expose this functionality

Page 32: How to become a great developer

Software Development

User Experience

Testing Quality Assurance

Interaction Graphics

Operations

Marketing

Architecture

Management

Business

Security

Product Management

Legal

Requirements Engineering

Page 33: How to become a great developer

NotesCollaboration with other ExpertsVarious groups of non-experts are often involved software projects These are actually not non-experts, but just experts in other domains than yours

Having some basic knowledge about these other domains help in the communication and collaboration

You do not need to be an expert, but it helps to know some things, particularly what drives the people, how they think, what they care about and what they value.

Page 34: How to become a great developer

Business Domain Knowledge

Page 35: How to become a great developer

NotesBusiness Domain KnowledgeKnowledge about the business domain is particularly important. At the end, this is the area where you as a developer are trying to provide value. Do not

be scared about the business domain. Understanding the customer/client. This means multiple things: -Actually understanding what the client or customer is talking about. Terms, words,

expressions, … -Understanding what the client/customer is interested in and cares about. -Understanding how what you are doing creates value for the customer.

Formalizing the (often informal) concepts of the customer. In the end you have to explain this to the most stupid (but extremely reliable) worker of a company: the computer.

Page 36: How to become a great developer
Page 37: How to become a great developer

NotesDomain-Driven DesignDDD is a framework that builds on this idea It is about a lot of things, but in particular, it also contains the idea that:

All the people involved in the software project should use the same concepts (although at different levels of abstract) and speak the same language (at very different levels of detail and with very different focusses)

Page 38: How to become a great developer

Business Domain Knowledge

Page 39: How to become a great developer

Learning as an Attitude

Page 40: How to become a great developer

NotesLearning as an AttitudeTo some people, this might be obvious; to some it’s not I have often encountered resistance to learning about the business, i.e. developers who do not want to know about the business details and almost actively reject to learn anything

I do not think that you get very far with this A great developer in my opinion should embrace this or at least accept that he or she might learn something about the business by mistake

Page 41: How to become a great developer

Management

Page 42: How to become a great developer

NotesManagementThe management is another red flag for many developers. You do not have to become a manager, if you do not want to.

But to know how managers work and what they care about, is extremely useful for a software developer.

Page 43: How to become a great developer

Languages

Page 44: How to become a great developer
Page 45: How to become a great developer

NotesEnglishEnglish is the de-facto standard language in IT (and business) Everybody needs basic English skills Advanced English skills make your live much easier Communication and conversation in English should be effort-less Accents are perfectly fine Investing in improving your English helps you to become a more

valuable developer Make use of opportunities to read, write, listen to and speak English

Page 46: How to become a great developer

Presentation Skills

Page 47: How to become a great developer

NotesPresentation SkillsPresentation skills are very useful for developers. Presenting at conferences with Powerpoint etc. are only one form of this.

The essence is the ability to summarise complex concepts, explain them to people with different knowledge backgrounds.

A talk at a conference is one form of this; asking a lead developer about making a refactoring can be another form.

Page 48: How to become a great developer

Open Source

Page 49: How to become a great developer

NotesOpen Source ProjectsContributing to open source projects are another great way to learn a lot of things.

You collaborate people who work differently than the colleagues in your day job.

You can learn a lot about technical topics, but also about collaboration and communication.

Page 50: How to become a great developer

Conferences, Talks, …

Page 51: How to become a great developer

NotesConferences, Talks, …I can only encourage developers to attend conferences, talks, user groups, meet-ups, …

You can learn a lot at these events and you meet a lot of interesting people.

Make use of opportunities, attend events and maybe even contribute actively to such events.

Page 52: How to become a great developer

Software Development

Page 53: How to become a great developer

NotesSummaryA great developer needs excellent technical skills. But that is not enough. It’s also about making those skills available to other people The value of a developer lies within what he or she knows and can do, but also how well the team and the client can make use of this knowledge and skills

This “API layer” is already very important today and I believe that it will be even more important in the future

Page 54: How to become a great developer

Corsin Decurtins, Netcetera Chief Technology Officer

[email protected] @corsin

Page 55: How to become a great developer

How to become a great developerCorsin Decurtins, Netcetera

JavaDay

2014-11-22 / Skopje