Article
0 comment

Agility in different domains

Agility

Working with agile processes is a best practice approach by now for the software development industry. It allows for small but fast steps towards a greater goal of a project or product vision. You could also apply agile thinking to research projects. Classical research is not that different from an agile process, nay? You take some small step, test a hypothesis, evaluate the result and continue with a next step.

Agility in science

But there is a fundamental difference in the concept of these processes: research allows to dismiss one or even several of the previous steps. In software development you normally don’t throw away the artifacts you built to move where you are now. For research to be agile it needs to be allowed to discard previous steps, or as Alfred North Whitehead said in “Adventures of ideas”:

A science that hesitates to forget its founders is lost.

It’s part of changing paradigms in the classical sense of Thomas S. Kuhn’s ideas in “The structure of scientific revolutions”.

There and back again

Having broadened the view on agility for research, let’s look back at software development. In agile sprints your teams makes decisions that will influence the path of the whole product. So you eventually make fast paced decisions whose effects will stay for a long time. Most software development teams are prepared to make quick technological decisions based on the problem at hand. They are normally not prepared to make estimates on the long term feasability of said decisions.

Take away

So you may accumulate technological debt even if you try to avoid. Take some pressure out of the technological decision making process by allowing for revision of architectural decisions. And last but not least establish a culture allowing to make errors. Because being under pressure to avoid errors and increase velocity makes developers susceptible for making errors. But this is a topic for another post.

Article
0 comment

Podcast Roll

Some time ago I was asked which podcasts I like and hear. There are a lot of them and I’m only listening to a few on a regular basis. This has something to do with my preferences when hearing. I don’t like long podcasts (more than 1 hour). So there are a lot podcasts of high quality that I listen to from time to time.

I tried to sort them roughly by topic and add small flags for the language of the podcast (german  or english  (I apologize for not being able to list an american and a british flag ;) ), so here we go.

Science and Science Communication

  • 2Scientists  Curious about the cosmos? Intrigued by evolution? Two scientists put their heads together to help answer your questions.
  • ABCoholics  Vier Themen aus Wisschenschaft und Gesellschaft. Innerhalb von 10 Minuten bringen wir’s auf den Punkt, den Blick immer auf das Wichtigste gerichtet. Einziges Kriterium für die Themenwahl: Der richtige Anfangsbuchstabe.
  • Ada Lovelace Day Podcast  Ada Lovelace Day is an international celebration of the achievements of women in science, technology engineering and maths which aims to increase the profile of women in STEM and create new role models for both girls and women studying or working in STEM.
  • Anekdotisch Evident  Katrin Rönicke und Alexandra Tobor färben graue Theorie mit persönlichen Erfahrungen ein. In jeder Folge unterhalten sie sich über ein Thema, das ihnen am Herzen liegt – so finden Anekdoten und wissenschaftliche Evidenz auf unterhaltsame Art zueinander.
  • Base Pairs  Cold Spring Harbor Laboratory’s Base Pairs podcast ​tells​ stories that ​convey​ the power of genetic information – past and present. Named among the 2018 Webby Awards’ “five best podcasts in the world” for the subjects of science and education.
  • Bold Signals  Behind every scientific innovation and discovery are the efforts of a diverse group of hard-working, dedicated people. Beneath every conversation about the structure, function, laws, and theories of science are people using their skill, knowledge, and creativity to make incremental advances to human knowledge. Between the lines of every scientific article, snippet of science reporting, and all scientific nonfiction are people boldly working against frustration, and uncertainty. From students, teachers, and professors of science, to technicians, administrators, and research assistants, to science researchers, communicators, and educators, to people who produce, consume, or apply science outside the laboratory- Bold Signals features interviews with the people involved in this wonderful, messy, awe-inspiring thing we call science.
  • Brain Science with Ginger Campbell  Brain Science was launched in 2006 by Dr. Ginger Campbell, an experienced emergency physician with a passion for exploring how recent discoveries in neuroscience are revealing how our brains make us who we are. This podcast is for non-scientists, scientists, and everyone in between. We interview scientists and discuss the latest books about the brain. Monthy episodes resume in June 2017, but all episodes posted since January 2013 are available for FREE in iTunes. Please visit our website for more episodes and transcripts.
  • Chemical Dependence  A podcast about the incredible chemistry that surrounds you. Weekly episodes featuring a new chemical compound each week.
  • Die 3 Formeltiere  Ungefähr einmal im Monat ziehen Florian (Astronom), Franzi (Bioinformatikerin) und Jojo (Informatiker) aus Jena ihre Lieblings-Onesies an und diskutieren ausschweifend-wissenschaftlich über ihre Lieblingsformeln und -strukturen.
  • ExploreAStory  A podcast about museums, science and storytelling, hosted by Emily Graslie. ExploreAStory is supported by the Field Museum in Chicago, Illinois.
  • Forschergeist  Moderator Tim Pritlove spricht mit Wissenschaftlern und anderen Aktiven des Wissenschaftssystems über aktuelle und zukünftige Trends und Praktiken für die Bildung, der Forschung und der Organisation und Kommunikation der Wissenschaft. Die ausführlichen Interviews wenden sich vor allem an junge und angehende Wissenschaftler, die nach Möglichkeiten suchen, ihre Forschung und Lehre den neuen Bedürfnissen der Zeit anzupassen und weiter zu entwickeln. Forschergeist ist ein Projekt des Stifterverbands für die Deutsche Wissenschaft und erscheint im Schnitt alle drei Wochen neu.
  • Good Night Stories for Rebel Girls  A fairy tale podcast about the extraordinary women who inspire us. This show is based on Good Night Stories for Rebel Girls, the global best-selling book series written by Elena Favilli and Francesca Cavallo, inspiring millions of girls and women around the world to dream bigger, aim higher and fight harder.
  • Open Science Radio  Das Open Science Radio ist ein unregelmäßig erscheinender Podcast von Matthias Fromm, der sich mit dem Thema Open Science in seinen vielseitigen und -schichtigen Aspekten beschäftigt – von Open Access über Citizen Science und Open Data bis hin zu Öffentlicher Wissenschaft und Open Education. Dieser Podcast soll ein grundlegendes Verständnis schaffen, vor allem aber auch über aktuelle Entwicklungen informieren.
  • People Behind the Science Podcast  Dr. Marie McNeely, featuring top scientists speaking about their life and career in science! Featuring experts in neuroscience, physics, chemistry, biology, life sciences, natural sciences, science, science policy, science communication, open journals, and more! Inspired by other scietists, Bill Nye, StarTalk, Neil deGrasse Tyson, Brain Science, Radiolab, Science Friday, Carl Sagan, grad student, post doc, Ted, Tedx, cosmos, and more.
  • Publish, Perish or Podcast  Take a look behind the scenes of science. Join three researchers as they discuss the issues and topics behind modern research and share funny stories from their lives as scientists.
  • Science Communication with Dr. Mike  Hi everyone and welcome to SciComm, your number one stop for science communication. Join me, Dr. Mike, every week where I’ll be talking to a new guest about their experiences in the scientific world. This may include PhD students, science communicators, industrial scientists or those simply interested in discussing the latest scientific news.
  • Science for Societal Progress  academia, the sciences, and their intersections with society, and governance.
  • Science Friday  Brain fun for curious people.
  • Sternengeschichten  Das Universum ist voll mit Sternen, Galaxien, Planeten und jeder Menge anderer cooler Dinge. Jedes davon hat seine Geschichten und die Sternengeschichten erzählen sie. Der Podcast zum Blog “Astrodicticum Simplex”.
  • The Collapsed Wavefunction  The Collapsed Wavefunction is a podcast to talk about chemistry and demystify the scientific process. Hosted by Chad Jones (PhD candidate, Physical Chemistry), Sam Matthews, (MSc Organic Chemistry), and Dorea Reeser (PhD, Environmental Chemistry). New episodes every other week.
  • The GeekGirlWeb Show  The GeekGirlWeb Show is tech meets creativity, entrepreneurship and passion. We breakdown the barriers to learning and self-development. This is life as version control. Hosted by Rebecca Garcia, self-taught developer, speaker and STEM education advocate. Her purpose is to empower people through technology.
  • The Life Scientific  Professor Jim Al-Khalili talks to leading scientists about their life and work, finding out what inspires and motivates them and asking what their discoveries might do for mankind.
  • Transistor  Transistor is podcast of scientific curiosities and current events, featuring guest hosts, scientists, and story-driven reporters. Presented by radio and podcast powerhouse PRX, with support from the Sloan Foundation.
  • Undiscovered  A podcast about the left turns, missteps, and lucky breaks that make science happen.
  • WRINT: Wissenschaft  Worin Holger Klein und Florian Freistetter ohne wissenschaftlichen Anspruch über Wissenschaft plaudern.
  • ZellKultur  @_adora_belle_ und @moepern erklären euch die Biologie. Vom Einzeller bis zum Homo Sapiens.

Technology, Data Science, Computers and Software Development

  • audiodump  Malik, Johnny, Axel und Flowinho reden über Macs, Hacks und anderes Techzeug.
  • CaSE  CaSE is an interview podcast for software developers and architects about Software Engineering and related topics. We release a new episode every three weeks.
  • Coding History  Eine Softwareentdeckungsreise zu Anfang und Gegenwart digitaler Kultur. Weltaneignung ohne Software ist mittlerweile unvorstellbar – aber wie ist sie entstanden und wie hat sie sich seither verändert? In Gesprächen und Reportagen versucht sich dieser Podcast an der Ent-Mystifizierung digitaler Artefakte.
  • Data Crunch  Whether you like it or not, your world is shaped by data. We explore how it impacts people, society, and llamas perched high on Peruvian mountain peaks—through interviews, inquest, and inference. We talk to interesting people doing intriguing things with data, artificial intelligence, machine learning, data science, and all things revolving around them.
  • Data Science Imposters Podcast  Explore data science, analytics, big data, machine learning as we discuss these topics. Join us on our journey.
  • Developer Tea  Developer Tea exists to help driven developers connect to their ultimate purpose and excel at their work so that they can positively impact the people they influence. With over 7 million downloads to date, Developer Tea is a short podcast hosted by Jonathan Cutrell (@jcutrell), CTO at Whiteboard. We hope you’ll take the topics from this podcast and continue the conversation, either online or in person with your peers.
  • Greater Than Code  A podcast about humans and technology. Brought to you by @therubyrep.
  • import this  Ein Podcast über die Programmiersprache Python, ihre Community, ihre beigelegten Batterien, Erweiterungen, ihre Frameworks und das ganze PyUniversum.
  • Mastermind.fm  Join James Laws from WP Ninjas and Jean Galea from WP Mayor as they discuss the trials and tribulations on building a WordPress business. Learn how to go from freelancing to building a business, managing employees, growth hacking and more.
  • Mein Scrum ist kaputt  Scrum kann doch inzwischen eh jeder? Von wegen! Denn – ganz unter uns: genug falsch machen kann man ohne Probleme. Daher möchten wir über Stolpersteine sprechen, über Smells und unsere Erfahrungen mitteilen. Wir, das sind Sebastian Bauer und Dominik Ehrenberg.
  • PHPUgly  The podcast your mother warned you about. Ramblings of a few overworked PHP Developers. Hosted By @shocm, @realrideout, and @johncongdon.
  • Python Bytes  Python Bytes is a weekly podcast hosted by Michael Kennedy and Brian Okken. The show is a short discussion on the headlines and noteworthy news in the Python, developer, and data science space.
  • Self-hosted Web  The podcast showcasing and discussing software to host on your own server or webspace, including interviews with creators and maintainers, tips and tricks and other fascinating tidbits.
  • Syntax – Tasty Web Development Treats  Full Stack Developers Wes Bos and Scott Tolinski dive deep into web development topics, explaining how they work and talking about their own experiences. They cover from JavaScript frameworks like React, to the latest advancements in CSS to simplifying web tooling.
  • t3n Podcast  m t3n Podcast sprechen die t3n-Chefredakteure Luca Caracciolo und Stephan Dörner in kompakten Episoden von 30 bis 45 Minuten Länge mit wechselnden Gästen über New-Work, E-Commerce, digitales Marketing, die Startup-Szene und die digitale Transformation in Wirtschaft und Gesellschaft.
  • Talk Python To Me  Talk Python to Me is a weekly podcast hosted by Michael Kennedy. The show covers a wide array of Python topics as well as many related topics (e.g. MongoDB, AngularJS, DevOps).The format is a casual 45 minute conversation with industry experts.
  • The Bike Shed  On The Bike Shed, hosts Derek Prior, Sean Griffin, and guests discuss their development experience and challenges with Ruby, Rails, JavaScript, and whatever else is drawing their attention, admiration, or ire this week.
  • TWiML&AI (This Week in Machine Learning & Artificial Intelligence)  This Week in Machine Learning & AI is the most popular podcast of its kind. TWiML & AI caters to a highly-targeted audience of machine learning & AI enthusiasts. They are data scientists, developers, founders, CTOs, engineers, architects, IT & product leaders, as well as tech-savvy business leaders. These creators, builders, makers and influencers value TWiML as an authentic, trusted and insightful guide to all that’s interesting and important in the world of machine learning and AI. Technologies covered include: machine learning, artificial intelligence, deep learning, natural language processing, neural networks, analytics, deep learning and more.
  • Toolsday  Toolsday is a 20-ish-minute podcast hosted by Una Kravets & Chris Dhanaraj. Toolsday is about the latest in tech tools, tips, and tricks on Tuesdays at 2! (Our alliteration game is so strong).

Business

  • Freelancer Podcast  Interviews, Stories & praktische Tipps für deinen Freelancer Alltag. Yannick und Lukas sprechen mit Freelancern über ihre Anfänge, Kundenakquise, Erfolge, Niederlagen und den ganz normalen Wahnsinn des Freelancer Alltags.
  • FRICTION with Bob Sutton  Part organizational design. Part therapy. Organizational psychologist and Stanford Professor Bob Sutton is back to tackle friction, the phenomenon that frustrates employees, fatigues teams and causes organizations to flounder and fail. Loaded with raw stories of time pressure, courage under ridiculous odds and emotional processing, FRICTION distills research insights and practical tactics to improve the way we work. Listen up as we take you into the friction and velocity of producing made-for-TV movies, scaling up design thinking, leading through crisis and more. Guests include Harvard Business School historian Nancy Koehn, Eric Ries of Lean Startup fame, and restaurateurs Craig and Annie Stoll; as well as academic leaders from Stanford University and beyond. FRICTION is a Stanford eCorner original series.
  • Führung auf den Punkt gebracht  In Bernd Geropp‘s Podcast dreht sich alles um Führung: Unternehmensführung, Mitarbeitermotivation, Leadership und Strategie auf den Punkt gebracht. Kein Beraterdeutsch oder Konzerngeschwätz sondern Inspiration, Tipps und Impulse für Führungskräfte, Manager und Unternehmer. Der Geschäftsführercoach spricht Klartext über Unternehmensstrategie, nachhaltige Führung, Zeitmanagement, Delegieren, Vision und Ziele. Wie bekommen Sie ein engagiertes Team und motivierte Mitarbeiter? Wie bringen Sie Ihre Unternehmensvision und Ihr operatives Tagesgeschäft in Einklang?
  • Leben – Führen  Führen. Die wohl wichtigste Tätigkeit in unserer heutigen Berufswelt. In diesem Podcast geht es um führen, Führung, um Wirksamkeit, um Ergebnisse. Und um Spaß dabei zu haben denn all das ist nur Teil von etwas größerem: Von Ihrem Leben, liebe Führungskraft! Wie das zusammen passt? Hören Sie doch einfach rein.
  • Indiedotes Podcast  Stories of indie creators
  • Pursuit Podcast  The Pursuit Podcast offers advice and new perspectives on getting things done in tech through half hour conversations with tech’s great thinkers each week. Want to learn to code? Land that great new job? Learn about how to manage your new reports? We’ve got you covered. This weekly podcast and carefully curated resources aims to leave you inspired and prepared to tackle that cool new thing.
  • Work in Progress  Behind every working human, there’s a story. Work in Progress is a new show about the meaning and identity we find in work. Each week, hear stories of personal ambition and debilitating insecurities, great successes and abject failures, the plans we make and the luck that…happens. Hosted by Dan Misener, produced by Slack. Follow along @slackstories or slack.com/podcast

History and Culture

  • 2debate  12 minute Oxford style debating – engaging, fun and interesting short form arguments on contemporary issues…
  • Anerzählt  Ein täglicher 5-10 minuten langer Beitrag zum Staunen und Wundern. Teil-experimentell.
  • Breitband – Medien und digitale Kultur  Magazin für Medien und digitale Kultur, immer samstags 13:05 im Deutschlandfunk Kultur
  • Dan Snow’s HISTORY HIT  History! The most exciting and important things that have ever happened on the planet! Featuring reports from the weird and wonderful places around the world where history has been made and interviews with some of the best historians writing today. Dan also covers some of the major anniversaries as they pass by and explores the deep history behind today’s headlines – giving you the context to understand what is going on today. Join the conversation on twitter: @HistoryHit
  • Das geheime Kabinett  In geheimen Kabinetten landete früher alles, was man in Museen der Öffentlichkeit vorenthalten wollte, weil man es für zu anstößig hielt. Dieser Podcast erzählt Skurriles, Witziges und Unglaubliches, was es nicht in die regulären Geschichtsbücher geschafft hat.
  • Die kleine schwarze Chaospraxis  Ein prozessorientierter Podcast. Ninia LaGrande und Denise M’Baye lassen es fließen, im perfekten Imperfektionismus. Ninia LaGrande ist Autorin, Slam-Poetin und Moderatorin und lebt im Internet und in Hannover. Sie ist Teil der Lesebühne „Nachtbarden“ und wurde mehrfach ausgezeichnet, u.a. mit dem Kabarett-Nachwuchspreis „Fohlen von Niedersachsen“ und als „Kreativpionierin Niedersachsens“. Ihr Buch „… Und ganz, ganz viele Doofe!“ erschien im August 2014. http://www.ninialagrande.de/ Denise M’Baye ist Schauspielerin und Sängerin. Sie hat zwei Soloalben veröffentlich und war Gastsängerin u.a. bei “Pee Wee Ellis“ und der „Jazzkantine”. Seit vielen Jahren ist sie mit dem Worldmusikprojekt „Mo’Horizons” weltweit live unterwegs. Als Schauspielerin ist sie seit 2009 im Cast in der erfolgreichen deutschen Serie “Um Himmels Willen“ und in anderen Film und Fernsehproduktionen zu sehen. Sie arbeitet auch als Sprecherin und Moderatorin. http://www.denisembaye.de
  • Durch die Gegend  Interviews mit Musikern, Schriftstellern, Künstlern und Philosophen finden viel zu oft in sterilen Hotellobbys oder öden Büros statt. Man sitzt sich den Hintern platt und knabbert trockene Kekse. Also sagt sich der Kölner Radiojournalist Christian Möller: Rausgehen! Rumlaufen! Reden! An Orten, die mit den Interviewpartnern zu tun haben: Wohnviertel, Geburtsstadt, Lieblingsplatz. Denn die guten Gedanken kommen im Gehen.
  • In trockenen Büchern  Sachbücher gelten als trockene, oft schwer zu bewältigende Lektüre. Zu Unrecht! Autorin Alexandra Tobor pickt die Rosinen aus den Wissensbuchregalen und fasst deren Inhalt aus ihrem persönlichen Blickwinkel in 20-minütigen Podcast-Episoden zusammen.
  • Kiezrekorder  Wer ist der Mann, der jeden Tag an der nächsten Straßenecke sitzt? Wohnt neben mir eine berühmte Künstlerin? Und welchen Zugang hat der blinde Musiker von nebenan zu seinem Schaffen? Im “Kiezrekorder” porträtieren Nicolas Semak und Christoph Michael Menschen der Großstadt, die ihnen auffallen und die alle etwas Besonderes tun. Ganz alltäglich. Der Kiezrekorder bietet noch eine Besonderheit: Zu jeder Folge gibt es zusätzlich eine Audio-Slideshow mit Fotografien.
  • Systemfehler  In dem Podcast “Systemfehler” geht Christian Conradi dem Defekt auf den Grund. Wieviel Platz haben Fehler, Defekte und Abweichungen in einer Gesellschaft, die in sämtlichen Bereichen nach Perfektion strebt? Projizieren wir die vermeintliche Plan- und Steuerbarkeit, die wir mit Technologie erreichen, zunehmend auch auf uns? Wie gehen wir mit Fehlern um? “Ich will die Vielfalt des Zufalls untersuchen und die Abweichung vom Normalwert erforschen. Kurz gesagt: Ich will Geschichten über den Defekt erzählen”, verspricht Christian. Unterhaltsam, lehrreich, akustisch bunt und kurzweilig.
  • Young in the 80s  Young in the 80s ist ein Audio-Podcast über die Zeit, in der die heute 30-jährigen groß geworden sind: die 80er-Jahre. Die Brüder Christian und Peter Schmidt gehen auf Erinnerungsreise zu den Fernsehsendungen, Filmen, der Musik und Mode, dem Spielzeug und den Alltagsthemen, die das Wesen dieser Generation geprägt haben. Warum war Knight Rider die beste Fernsehserie der Welt? Warum hören Zigtausende auch heute noch „Die drei Fragezeichen“, aber niemand mehr „Arborex und der Geheimbund KIM“? Wie kann es sein, dass irgendwer jemals Modern Talking gut gefunden hat? Wer in den 80ern aufgewachsen ist, muss diesen Podcast hören – und wer nicht, der lernt durch uns ein Jahrzehnt kennen, das von den Massenmedien geprägt wurde wie kein zweites.
  • Zeitsprung  Zeitsprung ist ein Podcast, in dem vergessene Ereignisse, überraschende Anekdoten und Zusammenhänge der Geschichte in kurzen Episoden erzählt werden. Häufig mit ein ganz bisschen Augenzwinkern – aber immer kompetent, knallhart und quellennah recherchiert.

Cooking and Eating

  • genusscast  Ein Podcast über den Genuss
  • WDR 2 Jetzt Gote!  Er ist der universelle Küchenhelfer: WDR 2 Feinschmecker Helmut Gote gibt wertvolle Tipps rund ums Kochen – von praktischen Hilfsmitteln bis zu exotischen Zutaten.
  • WDR 5 Alles in Butter  Alltagsrezepte und Luxustipps zum Genießen: Helmut Gote und Uwe Schulz nehmen kulinarische Zeitschriften unter die Lupe. – Im Studio: Moderator Uwe Schulz und Genussexperte Helmut Gote.
Article
0 comment

Management problems and how to avoid them

The last days I listened to some episodes of a german management podcast. They discussed some common management problems or mistakes and how to avoid them. This got me thinking about my own experiences and this post is a combination of ideas from the podcast and my own thoughts. And it certainly is by no means complete or authoritative.

Micromanagement

One of the most demotivating habits is not only to set a goal but also explicitly to define how to reach it. If you are at every stage of a project informed about every detail and progress of every task, if you always work on the important tasks yourself, if you think you know more than your coworkers and can do better, if you are able to jump in with any task at hand you probably are micromanaging your team. This is demotivating since you express a lack of trust. Try to delegate tasks. Have confidence in your coworkers because without they don’t have either. Sometimes the line between giving enough information to work on a task and giving too much information so the task can be done without thinking about is a fine one. Especially founders often never learned to delegate by specifying a task at hand as detailed as needed but not more. When the results don’t match their expectations they feel confirmed in their distrust.
Additionally don’t request status information each and every day. This holds true for management, but does certainly not apply to agile processes. So what is the difference between a manager requesting to be updated every day and a daily standup, you may ask. Well the standup is the spreading of information you as a reporting team member think is noteworthy for all (!) other team members. Reporting to your manager socio-dynamically is a totally different process. There is an imbalance in power right from the setting. The (im)balance of power in conversations in general is a topic worth its own post.

The undercover expert

This is a special type of micromanager. All by themselves they think that they can accomplish the technical problems better than anybody else because there is nothing they love as much as fiddling with details and technology. The result is that they work in their company not on their company. And since they are the A-Team, made of Chuck Norris and MacGyver in one person, their idea of management is to control everything. But they will think of this as support for their coworkers. Such a manager also will never give up control, even if they try. This is because stepping out of the way because they trusts someone else to do the job is not part of their worldview.

Parsimony

To pay too much is bad, but to pay poor is even worse. So don’t pay less than average. In fact if you like to get excellent work pay more than average. Money is not everything but money can be a form of appreciation. Or rather paying poor wages is a sign of lack of appreciation. If you now say that you cannot afford to pay competitive wages then you perhaps should not hire additional employees. This sounds sharp but if your revenue is so bad that you need to cut on the wages maybe your business model or way to manage is not optimal. The laws of economy say that you can not expect to buy an excess of any good by paying poor. If you pay poor for any deliverable you have to add for the risk to do so. If you take that into account you have a bit more margin to pay.
And while we’re at it: don’t work with a bonus system. Bonuses have shown to be counterproductive to create engagement with a company or job position. Most people will do anything to comply to the results defined in their agreement on objectives. This includes taking shortcuts that in the short term work to reach a goal but might harm your company if it is not the intended way to reach the goal.

Authenticity

Be authentic. Don’t try. Be it. If you commit to deliver something do so. If you give deadlines or goals, be specific. „Somewhere around March“ is not a date. “Monday, the 25 March at 10am“ is a date. If you define dates or deadlines, take a note and write a mail so everyone knows and can keep track. If you give positive feedback, do so in public, if you have to express criticism, do it in a one-on-one. Meetings with two or more managers and one employee are not feedback but a jury. Avoid this setting in any case. You remember my remark on imbalance of power from above?

One-on-Ones

While we are at one-on-ones: it’s typical german management style to have exactly one annual personnel talk. This meeting is thought to contain feedback, objectives, personal growth (if this is a topic at all) and salary. That’s a lot of stuff that should not be combined and once a year is too infrequent. There are two main reasons why managers avoid one-on-ones.
First they might think they have not enough time for every coworker to meet once a week or biweekly. This signals „you are not important to me“. And let’s just do some math. The typical management span in a tech company is somewhere up to 10 team members. 10 conversations of half an hour make 5 hours. Every two weeks which has 80 hours if your full time week has 40 hours. That’s not very much for one of your core tasks.
Or they are afraid of the talk. Being afraid to talk to colleagues may have one of two reasons. One is you might be afraid of what you will hear. The other is that you just don’t like to communicate so much at all. If one of those applies to you you might want to think about your job choice. There is a swabian proverb: „Not beaten is praised enough“. Don’t live by that. It never has been true.


Photo by Freepik

Article
0 comment

Why I don’t like hackathons

Disclaimer: I never took part in a hackathon for the reasons I explain here. So all views are deduced from observing those events and their outcome.

Rant

Under which conditions would you say a software project goes bad? Let me gather some I really dislike:

  • We’re in a hurry i.e. we are short in time
  • We are actually so short in time that we can’t complete each and every task
  • We don’t have a good set of requirements
  • Outputting something counts more than doing it right (“quick and dirty is better than nothing”)
  • We have so much work to do that we ignore our health condition (at least for some “sprint time”)

Nearly every condition I mentioned above can be found in a hackathon. Because it is a challenge. Work fast, achieve most. And who attends a hackathon? Young people. Developers starting their career in tech.

What do they learn in a hackathon? Work fast, complete as many tasks as possible. Doing it quick and dirty is perfectly OK. If you don’t have a specification for a task, guess whatever you think will work and implement that. It’s OK to sit 3 days (and I mean DAYS including the nights) in a room and hack right away, ignoring how your body feels.

NO. Just fucking no.

I don’t want people to learn that quick and dirty is the standard way to do things! I don’t want them to learn that scarcity in manpower, time and quality is perfectly acceptable!

To be clear: in every project I worked there are phases when time is short and we needed to do something quick and dirty. But I always try to implement things the best way I can.

“We need people who can fix things quickly!”

Training people to quick and dirty as a standard might be exactly what the organizers aim at. I prefer my coworkers to learn to do things first right and then fast. And to find shortcuts where needed.

Article
0 comment

WoC: Detect non-iterable objects in foreach

https://www.flickr.com/photos/swedpix/36960629121/From time to time we use iterable objects, arrays, objects implementing the \Traversable interface (which iterators also do).

In the old days, real programmers didn’t check for data types, they set sort of canary flags like this:

This implements some sort of foreach {…} else {…} construct that PHP doesn’t have. Sure, it works. If you don’t turn on warnings, because if you do, you will be overwhelmed by warnings about foreach trying to act on a non-array/iterable object.

There is a solution: test your data type before running into the foreach! Yes, this means if you can not be 100% sure what sort of object you get, you have to enclose each and every foreach with an if construct. Since PHP 7.1 this block can make use of the is_iterable() function, which returns true, if the given parameter is any kind of iterable object:

For me this looks much better. The result is the same, but without warnings and the purpose is directly intelligible. The former example needs some thinking about the wtf factor of the code.

For PHP versions below 7.1 you can use some sort of polyfill function:

Thanks to the commentators of the PHP manual for this hint.

Article
0 comment

Same procedure as last year: switch dates for daylight savings time in PHP

The same procedure every year: part of the world switches to daylight savings time (DST). Don’t get me started on the topic if there is any sense in doing so. We have to deal with it.

There certainly are functions that deliver the correct time for the current timezone. But what if you would like to know the switch dates in advance? The rule for DST switch dates in Germany is quite simple:we switch to summertime at 2:00 in the morning on the last sunday in march and back to wintertime at 2:00 in the morning of the last sunday in october. So these dates are variable.

Here the PHP DateTimeZone comes to the rescue. The steps are simple enough:

  1. Get a DateTimeZone object for the timezone you’re interested in
  2. Get the transition dates for the year you are interested in by specifying the start and end dates to search for
  3. Clean up the returned array, since it always contains the start date itself

And here is a short piece of code to use:

The result is an array with two elements. For 2018 in Germany the results are:

 

Article
0 comment

Use a private repository as source of a composer package

Sometimes I need to make a small change to a composer package, often in a Symfony project. It is a really bad idea to just go into the vendor directory of the package and change some code. It’s much better to fork the corresponding repository, apply your change and build a new release. Then you can use that in a composer.json file.

Fork the repository

For the purpoe of demonstration I will create a customized version of Javier Eguiluz’s EasyAdmin bundle for Symfony. So go to the github page of the EasyAdmin bundle and click on the “Fork” button in the top right corner. Github will create a fork for you under your own user account. Clone that repository and make your changes. For this is one line in the file src/Form/Util/LegacyFormHelper.php as I mentioned in the last posting.

Build a new release

Now we’re ready to build a new release. Go to the “releases” tab in your forked repository and click on “Draft a new release”. Define a new tag version (unimportant how you call it, I normally just count up the original release version). I normally enter something like “for private use only” into the “Release title” field but you just can leave that empty. Once you’re done you can submit via “Publish release”. You will be brought back to the release list and see your new release tagged with a green label saying “Latest release”. You just built your first release \o/

Use the release in a composer.json file

You now can change your composer.json file. First you need to add the repository. By default composer will look up the packagist repository. If you define a different one in the json file this local one will be searched first before falling back to the public repo. So we need to create a repository section and list the github repository. Mine looks like this:

The type is “vcs” (version control system) and the URL is your forked repository. I like to keep forks in a organization of its own called “vmgforks”. Now we can require the package by using its original name and the required version just is “*”:

Now update the composer.lock and download and install the package by:

Now you can check if the change made it to the vendor directory.

Article
3 comments

Getting to work the CKEditor plugin for EasyAdmin in Symfony 4

Developing with Symfony 4 can sometimes be a bit challenging as some of the most widely used bundles are not yet ported to Symfony 4 or never will be (like FOSUserBundle). And sometimes a bundle works pretty well but one of its third party plugins/bundles doesn’t. This is the case with the brilliant EasyAdmin bundle. Sometimes you might want to offer a WYSIWYG editor to a backend user. For this case there is a bundle called IvoryCKEditorBundle that integrates the famous CKEditor into the form component. But the Ivory bundle not (yet) supports Symfony 4 so a helpful soul created a fork and called the package hillrange/ckeditor so you can use CKEditors in nearly any form.

Nearly any but not EasyAdmin. We come to that later. First let’s see how it would work if it worked (that is a sentence, isn’t it?). In Symfony 4 the EasyAdmin config can be found in config/packages/easy_admin.yaml. For a simple entity that only contains a text attribute (of type “text” who would have guessed?) that we would like to WYSIWYG edit it would look something like this:

The field type is called “ckeditor”. For this to work EasyAdmin has an array of supported field types and this out of the box also contains an entry for the ckeditor type. It can be found in vendor/javiereguiluz/easyadmin-bundle/src/Form/Util/LegacyFormHelper.php and is called $supportedTypes. And this is why the Hillrange package doesn’t play well with EasyAdmin. The form class just has another name. The original line reads

and can be changed into

Doing so in the original EasyAdmin bundle in the vendor directory is a bad idea. My approach is a bit overkill but offers a clean and regular approach:

  1. Fork the EasyAdmin bundle on github
  2. Change the incriminating line as proposed
  3. Build a release of “your own EasyAdmin”
  4. Include that with the composer.json file to be pulled directly from github

How the latter works will be subject to the next posting. So stay tuned ;)

PS: At some point in the future the IvoryCKEditorBundle will be Symfony 4 ready (at least I hope so) and you will be able to turn back the composer.json entry to the original package.

Article
0 comment

Docker based dev environment with PHP 7, MariaDB, phpMyAdmin, Mailhog & ELK stack

Docker can be used as a flexible development environment for (web) applications. With docker-compose you can add up several services to a complete scenario. Here I would like to present a new setup that contains a lot of things to make a developers life more comfortable, notably:

If you don’t need all these components, you always can disable whatever you’re not going to use. Your application will reside in the html subdirectory, the MySQL/MariaDB db files will be in the mysql directory so nothing is lost when you shut down the services.

If you need something else (PostgreSQL e.g.) please let me know and I will add it. Have fun!

Article
0 comment

Run Oxid CE V6 locally using Docker and docker-compose

Recently the public availability of Oxid eShop V6.0.0 was announced. And it finally runs with PHP7 and is a major step towards a modern and comfortable web shop.

If you would like to test it locally or develop with it there are many options. Some time ago another one, flexible and versatile, opened: Docker.

In this GitHub repository I assembled an environment with:

  • Apache webserver with PHP 7.1 and all extensions needed (and xdebug)
  • MariaDB
  • phpMyAdmin
  • ELK stack to analyse and show apache log files

If you encounter any problems or bugs please file an issue with GitHub. I’m here and on Twitter to answer any question you might have. Have fun!