Software development

Short overview ...
  • As a PhD physicist and senior software developer yout get "two experts in one"

  • You profit from my experience of more than 20 years of professional software development as freelancer. Also before I have programmed several years in university research.

  • "Clean code" software is your reliable basis for the future. Neither perfectionism nor technical dept are acceptable: like a growing burden of debts it threatens your software development efforts. Instead it is desirable to have a code which has a transparent structure, is reliable and easy to maintain.

  • Analysis, design, implementation, documentation, tests, user training are all part of my experience

  • C/C++, Java, script languages (Python, shell, awk, Perl, make, Ruby), html + xml, version and change management,
    on UNIX, Linux, Windows

  • Specialities: university and industry research, logistics, automotive/factory steering, image analysis in difficult scenery, X-ray and millimeter wave optics, performance tuning, source code quality

How can we get a cleanly built, reliably and easy-to-maintain software ?

When did you last have this thought or feeling?

  • "We should quickly cleanup this part of the software, we will run into trouble here".
  • This interface should be documented in a better way.
  • These software modules are entangledi, this is not healty
  • Our coding standard is really helpful
  • this part of the code has poor test coverage. The existing tests are not really meaningful.
  • The documentation is outdated, important concepts are not documented and can only be found in some e-mails.
  • now it has taken days to locate this bug. We could have saved ourselves that if we ...
  • This project was so chaotic, we had so many unexpected difficulties, and to finish it iwe really screwed up some parts.
  • This event did not help the company culture and the team.
  • All departments of the company are under pressure, this is the reason there is often bickering.
  • I am thankful for the open and communication and the good cooperation in my team: I could solve this problem really fast.

Technical debts is a metaphor for the possible consequences of "bad" software: the implied cost of additional rework caused by choosing too simple, problematic code. It will cause extra effort when changes and enhancements have to be done. of the software. To stay in a "positive zone" and not glitch into technical debt, not only developers but also project managers are responsible. They try to "keep up the spirit" also in times of difficult outer conditions:

  • Follow common state-of-the-art design principles
  • A well thought-out concept of code standards that is also lived by the developers
  • Meaningful level of documentation that is regularly maintained and accessible to all team members
  • Good infrastructure
  • Good code coverage of tests
  • Clear structure of the source code
  • Common "best practice" strategies are familiar to all members of the team
  • Static source code analysis and attention to compiler warnings
  • Open and trusting teamwork and a good error culture
  • A balance between an agile approach and anticipation of future requirements
  • Sensible weighting of short-term requirements of the current project and long-term success
  • Pleasant external working conditions: climate, brightness, no noise, enough work space
  • Continuous Integration (CI) process and use of software metrics