Merken

How to become a software developer in science?

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
please welcome mentally then the chance of finding new 1 so we are all after lunch so let's get up a bit and let's do some 10 tenderizing exercises so please arise your hand if you are working in science could and the size of a hand if you ever went to university and these rights were if you are programming invited are very nice now and more serious question what does it mean successful software in science the but similarly documents as fast as installed really is about published my guess is side that so OK not as useful so we will we all want to be to get there and 20 minutes you know free tools that support software development in science this stuff is target as people who want to move from right industrial deriving software in science so don't for a case study of more than a software it was written in
Python and his over 23 thousand line of
culture it was developping for years but for by 4 people no let get to modernize moods 7 years ago researcher
Professor ruined skiing look at me over his square glasses and said no I want to write a program which predicts free the structure of aid nobody done it before and I told you I I
I will win the Nobel Prize but have do you start such a big projects so yes explained you want to
achieve model of error name molecule so we need to find out x y and z coordinates for each of the outcome in this molecule as an input you will have a sequence for your target molecule which is
technically a stream and that this strange tells you about about residues about pieces you have in your model and you will also have a 2nd structure that is senior our but has a different sequence that target I can understand the idea of Professor Remy scheme because of my biological vagrants I thought what a nice I was so excited I was motivated under started to
coach after 6 years after 6 months we had 1st prototype it where free very very very long scripts as set of structures that could use them for modeling and 100 of experimental structures that we could use for testing at this moment I started to realize that if I continue this way I am in deep trouble the cost the
fact and they're not really sure
which features we already have the and which features needs to be still implemented together the the programs the project things I was not sure how reliable
is my program how to detect and how to remove box effectively and changing something started to be very difficult it was long I had to test manually after adding 1 feature whether all previous approaches still works some In became a kind of stressful the project isn't so much fun anymore fortunately I had I had quite a
nice balls that every optimistic Christian around and he just jump out set of paper currency and he said
Leonard let's have let's write the software thanks in part time change we make in our development process was the defining
small clear achievable goal before I was going at full speed into promissory of program that models freeze fracture of RNA which was as defined as 1 goal a very huge and on you will pass so we started to define the
small steps clearly the findings in
1 short sentence you're writing them then without of single sentence on past carts afterward we defining how difficult it will need to implement this priority this task has and finally who will do do the implementation so for example here and we
wanted to change the name is in PDB file so there are some problems that have wrong names and wanted to
correct the defined such unit costs helped us to write your cold because answering a question I want to change Apple names each month is much easier than answering a question the I
want to model and this small question is much more concrete and the answer can you find easier so as a result we were able to write
1 that does exactly 1 being the name of and is self explanatory and the documentation of face face is clearly what the coal dust and the cold has just 7 lines so what else we were doing with the past parts we are keeping
them invisible we'll the market with 3 columns to do in progress and that and you can imagine how nice feeling that this move card to have done column we also
experimented with setting willing to in progress called I noticed that I 1 of the most effectively when I am allowed only for it to be in in progress so when I want to place for of pattern that I need to 1st get 1 thing that as soon as we had all our class imbalance column we're sitting together again and when doing retrospective so we checked how our estimation for a level of priority and level of difficult whether it estimations were correct and thanks to that we could better estimate in the next iteration so during the last year of the project we also started to combine our integration of cards with releases it meant that we were getting the cost and the but for our
users and then we're keeping our project moving and we had a constant motion there self what are the costs of cards moved for they help reduce the violence of the big picture you're
being goal into smaller achievable pieces with tasks that you you can make progress of your project to be usable you can eat
arrays so defines set of as cards and then when they're gone unnoticed and and dual retrospective after each iteration to improve your working process but in very getting other problems so after integration we have to check when our new features more and more over that our all features from previous iterations still war what would have to do what we have
we started to use that driven development and you need to so low that means that work there you collect exemplary then you define reach out and you should get out of it and that In the financing your financing that you are testing on your input and check when the data that we got is the same as that they expect here is a live example extends our previous financing about fixing up domains so there we
employed unit test module which is standard model from Python then we define the class and there we have our functions and in this function since we have a structure with their 2 names so with some problems we're on this however financing for fixing up some names and afterward we check whether the names I mean correct when looking for an acid test cases dynamic put on the
Frenchman their names user there was irreplaceable we spend 4 yeah sitting back to back in 1 room the and whenever
I have a common size and 2 why Mory's flower-filled to me that new tests where colonies to give you some numbers in more than we
have uh 700 to test functions in comparison to 700 61 called functions and whenever we developed a new feature or whenever we did refactoring we were running this 17 700 to find the test functions and this is what would have everything went around
this 1 even though it looks a bit dramatically it's actually an easy case it probably means that there's some do you go back like 1 variable names but in some basic facts so it was easy to fix which labeled have such case
everything like boring the development of nothing to Don accepts thinking 0 how great I and this 1 this 1 is actually the most interesting so let that
happen that new functions new feature we're having affected other places in the code we wouldn't think about before without automated testing it will be impossible to detect Dutch so for this
case so this is actually a situation when where tests are the most used for so again why should we get the prove
that because that's what it what it is supposed to do how to make it closer security that your program is the producible and automated teller also help to to define the requirements and document design there was
also a lot of fun for me and it makes me Jones the last point to having defined and being excited about what they do helps me to keep going achieving things and getting things done doing developing more than we have a lot of fun working
together defining small tasks and implementing test don't we also had some troubles and challenges for example I don't enjoy it so much documenting and making my coat preaching it was a bit more so we found the solution we started to use violence
by makes score over a cold it's checks whether it is documented and whether it seeks to pack a as standard it also thus other useful things for example it points to places in your code which are too complicated and which should be refactoring
so I seem fires which were minus 100 but I and not to the so that was very motivating for me to boost my coat to move my court and mine my programs In the quality of the quote improve after starting using prize and so that's during the development of more than we had a small balls we had tests and we have a lot of fun so was modern successful we got some ideas from the beginning so let's the project was published in 9
articles and get cited in 2008 Articles it is still maintained after 5 years from from the 1st release and most importantly all developers would like to work like this in the same way again so want to help us to get the defining small
achievable goal testing our cold and optimizing our working process so we had to find I think the model and the model and our heroes could is young youngish
and thank you for your attention and I will be happy to take questions the yeah so the from the
organization from what you ones and the question is whether I took the idea from so we so the copper and not actually know about so we were we are optimizing color process step by step at and these are things that are not like they can entirely for us this is they can mostly for all a from a giant techniques and so you can for our task cards you can for example finds so more official name it like you their stories and so will the Internet of experimenting with with agile development now this is a plant that you some of these other of but you know this is probably also that um OK so the question is whether I could apply the methods really we learned in developing model in a more general way in science or inside OK as you are of course is In the literature on this is the result of the a lot these were obtained OK so whether we could use these methods that to not only produce software but also other results yes I I think that I'm adults who could be used also but in the labs and so In in wet labs and in other fields of science not only software development definitely yes of the use of tools to be use in yeah and so and as I said the threat so the question is how long it took to get this process optimized so as 1st 6 months work we with no real framework for working and after that we keep improving step by step and it took us like things this 2 years and then the last year of the project the parent the 4 the year of the project was the most organized and so it's it was moving the fastest that 1 yes this is a lot of people you on the 1 hand the most of the and was here at the moment I there is the of going on on and on and on on on to learn from home the old thing the case I understand so the question is whether having just 3 tasks in in progress is really possible and so I will say yes is very difficult to so as to reach the with yourself and allowed just 3 tasks but it's possible and we tried with with software and that it simply helps us to get faster so we also like phrase had a longer list of tasks but then when we review the past the development when faster and we also tried it at home with so with our costs that and we need to manage our household and we also then only unique our paper award for the things that we need to do at home away being more then we also have a lenient and also helps yes there is a difference in the of of 1st also my God my so the question is that is difficult to gets people from unstructured way of working to the structure way of working and how to motivate and hold forget it happens so my answer is that it's to use a small steps so as I said we didn't do everything at 1 time we were improving our approaches in small steps and and also we were giving each other very positive feedback so we will for the thing you shouldn't have to do is like you are working in sort of structure where and this is very and motivating so whenever you try to do a small change and you see someone just a bit adjusting to this change like telling what all was incredible reason it's it's very motivating and helps people to want to change
Arithmetisches Mittel
Beobachtungsstudie
Softwareentwickler
Software
Bit
Software
Rechter Winkel
Code
Vorlesung/Konferenz
Softwareentwickler
Grundraum
Physikalischer Effekt
Metropolitan area network
Softwareentwickler
Software
Funktion <Mathematik>
ATM
Datenerfassung
Programm
Datenstruktur
Personal Area Network
Gerade
Computeranimation
Informationsmodellierung
Folge <Mathematik>
Funktion <Mathematik>
Projektive Ebene
Ein-Ausgabe
Maskierung <Informatik>
Computeranimation
Fehlermeldung
Softwaretest
Folge <Mathematik>
Subtraktion
Momentenproblem
Nummerung
Computeranimation
Informationsmodellierung
Funktion <Mathematik>
Menge
Residuum
Ein-Ausgabe
Skript <Programm>
Vorlesung/Konferenz
Datenstruktur
Prototyping
Metropolitan area network
Funktion <Mathematik>
Ein-Ausgabe
Programm
Projektive Ebene
Computeranimation
Software
Menge
Quader
Modem
Programm
Projektive Ebene
Computeranimation
Software
Informationsmodellierung
Prozess <Physik>
Software
Mereologie
Programm
Softwareentwickler
Sommerzeit
Task
Software
Task
Elektronische Publikation
Standardabweichung
ATM
Entscheidungsmodell
Implementierung
Einfache Genauigkeit
Computeranimation
Kreisbogen
Elektronische Publikation
Task
Einheit <Mathematik>
Standardabweichung
ATM
Mathematisierung
Elektronische Publikation
Computeranimation
Resultante
Metropolitan area network
Informationsmodellierung
Total <Mathematik>
Mereologie
Vorlesung/Konferenz
Reelle Zahl
Gerade
Computeranimation
Summengleichung
Schätzwert
Task
Arithmetische Folge
Klasse <Mathematik>
Mustersprache
Iteration
Projektive Ebene
Computeranimation
Übergang
Integral
Chipkarte
Task
Iteration
Arithmetische Folge
Division
Vorlesung/Konferenz
Projektive Ebene
Bitrate
Computeranimation
Chipkarte
Division
Iteration
Ein-Ausgabe
Domänenspezifische Programmiersprache
Computeranimation
Chipkarte
Integral
Softwaretest
Uniforme Struktur
Iteration
Task
Funktion <Mathematik>
Menge
Ein-Ausgabe
Zoom
Reelle Zahl
Softwareentwickler
Bitrate
Array <Informatik>
Softwaretest
Metropolitan area network
Lineares Funktional
Komponententest
Atomarität <Informatik>
Standardmodell <Elementarteilchenphysik>
Klasse <Mathematik>
Extrempunkt
Datenstruktur
Modul
Computeranimation
Softwaretest
Managementinformationssystem
Lineares Funktional
Distributionenraum
Code
Zahlenbereich
Vorlesung/Konferenz
Paarvergleich
Computeranimation
Inklusion <Mathematik>
Metropolitan area network
Bit
Softwareentwickler
Computeranimation
Softwaretest
Metropolitan area network
Lineares Funktional
Softwaretest
Code
Computeranimation
Softwaretest
Punkt
Code
Computersicherheit
Programm
Vorlesung/Konferenz
Computeranimation
Task
Softwaretest
Bit
Code
Leistungsbewertung
Vorlesung/Konferenz
Code
Computeranimation
Softwaretest
Kreisbewegung
Softwareentwickler
ATM
Programm
Projektive Ebene
Softwareentwickler
Computeranimation
Data Mining
Softwaretest
Software
Softwareentwickler
Informationsmodellierung
Softwaretest
Prozess <Physik>
Code
Computeranimation
Resultante
Bit
Subtraktion
Prozess <Physik>
Momentenproblem
Selbst organisierendes System
Mathematisierung
Framework <Informatik>
Internetworking
Eins
Task
Informationsmodellierung
Arithmetische Folge
Software
Vererbungshierarchie
Vorlesung/Konferenz
Softwareentwickler
Datenstruktur
Mailing-Liste
Quick-Sort
Chipkarte
Datenfeld
Grundsätze ordnungsmäßiger Datenverarbeitung
Projektive Ebene
Kantenfärbung

Metadaten

Formale Metadaten

Titel How to become a software developer in science?
Serientitel EuroPython 2014
Teil 53
Anzahl der Teile 120
Autor Rother, Magdalena
Lizenz CC-Namensnennung 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
DOI 10.5446/19998
Herausgeber EuroPython
Erscheinungsjahr 2014
Sprache Englisch
Produktionsort Berlin

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Magdalena Rother - How to become a software developer in science? My path from 'Hello world' to software development was long and hard. The approach I learned during my research may help you to create high quality software and improve as a developer. The talk covers how you can benefit from your non-IT knowledge, atomize your project and how collaboration accelerates your learning. ----- **Goal**: give practical tools for improving skills and software quality to people with a background other than IT. Eight years ago, as a plant biologist, I knew almost nothing about programming. When I took a course in python programming, I found myself so fascinated that it altered my entire career. I became a scientific software developer. It was long and hard work to get from the level of 'Hello world' to the world of software development. The talk will cover how to embrace a non-IT education as a strength, how and why to atomize programming tasks and the importance of doing side projects. ### 1. Embrace your background Having domain specific knowledge from a field other than IT helps you to communicate with the team, the users and the group leader. It prevents misunderstandings and helps to define features better. A key step you can take is systematically apply the precise domain specific language to the code e.g when naming objects, methods or functions. Another is to describe the underlying scientific process step by step as a Use Case and write it down in pseudocode. ### 2. Atomisation Having a set of building block in your software helps to define responsibilities clearly. Smaller parts are easier to test, release and change. Modular design makes the software more flexible and avoids the Blob and Lava Flow Anti-Patterns. When using object oriented programming a rule of thumb is that an object (in Python also a method) does only one thing. You can express this Single Responsibility Principle as a short sentence for each module. Another practical action is to introduce Design Patterns that help to decouple data and its internal representation. As a result, your software becomes more flexible. ### 3. Participating in side projects Learning from others is a great opportunity to grow. Through side projects you gain a fresh perspective and learn about best practices in project management. You gain new ideas for improvement and become aware of difficulties in your own project. You can easily participate in a scientific project by adding a small feature, writing a test suite or provide a code review on a part of a program. Summarizing, in scientific software development using domain-specific knowledge, atomisation of software, and participation in side projects are three things that help to create high quality software and to continuously improve as a developer. The talk will address challenges in areas where science differs from the business world. It will present general solution one might use for software developed in a scientific environment for research projects rather then discussing particular scientific packages. ### Qualifications During my PhD I developed a software on 3D RNA modeling that resulted in 7 published articles. I am coauthor on a paper on bioinformatic software development. Currently I am actively developing a system biology software in Python at the Humboldt University Berlin.
Schlagwörter EuroPython Conference
EP 2014
EuroPython 2014

Zugehöriges Material

Ähnliche Filme

Loading...