On “Effective Team Management with VSTS and TFS”

Hi, friends!

I read the first book from my reading list now (or to be precise: I read the introduction and the skimmed the rest of it).

This book is not on how to manage a team effectively. This book is on a specific software tool called Visual Studio Team Services (VSTS) and Team Foundation Server (TFS) by Microsoft.
VSTS/TFS seems to be a heavy-weight software that offers to support processes over all the life cycle of a software project; you can create team structures, backlogs, remote estimation sessions, road maps, test status reports, but tickets and much more.
The book explains how to use all the features of that software. So if you’re trying to learn something about team management practices, it’s not worth reading!
Maybe if you have all these processes in place anyway and you are using a mess of different tools for them, it can be interesting to check if this software would provide a better experience. But coming from a small agile team with the mindset to not produce organisational overhead (the only tool we use is a lean backlog), I fear that using VSTS/TFS would rather slow you down by requiring additional org work to have everything in that software.

There is one statement from the introduction that I want to mention though:
They say, the project management role in modern projects/products is moving towards servant leadership, the role is more of a delivery enabler than a manger.

First of all, the statement is funny because I feel, when you start using VSTS/TFS like described in the book the project manager becomes more of a servant of the tool, that requires effort to maintain all the different views and also requires to train your team on the tool, instead of enabling the delivery.

But apart from that irony, I like the statement. The good project manager (or team lead in a product team, since I don’t like projects) has the main task to enable the team to deliver working software.
From my point of view, this includes getting all the ressources the team needs, keeping distraction away, knowing the strengths and weeknesses of the team members in order to assign tasks properly, keeping up motivation (and regularly check if and why motivation is dropping) and teaching and mentoring the younger devs in the team, given that the team lead is actually an experienced software developer and not somebody who stopped coding because it’s too hard.

I’m still looking for other books on the topic of engineering management, I will keep you updated!

On my reading list

I go to the library every feew weeks and bring home a pile of educational/scientific books I want to read. Here is the list of titles I picked this time:

PHP

PHP for absolute beginners“, Thomas Hanson and Jason Lengsdorf, 2014.
Einstieg in PHP 7 und MySQL 5.6” (in English: Introduction to PHP 7 and MySQL 5.6), Thomas Theis, 2016.
Two pretty generic books on PHP, that popped up in the search. I picked them because they are relatively new and not too specific, I hope they will provide me a decent overview.
Head first PHP & MySQL“, Lynn Beighley and Michael Morrison, 2009. I would not recommend to read a 10 year old book when your goal is to learn a technology; it’s probably outdated. But I loved the “Head first” book series when I was new to Java, JavaScript, Servlets, Design Patterns and more. They are written very beginner friendly and practical, very different from scientific literature. So I read all books of the series that were close to any topic I was interested in, and I’m going to cross-read this one as well despite of its age.

Engineering Management

Inspired by Jonathan Nightingale (see previous blog post), I want to learn about Engineering Management. He mentioned two authors or books during the podcast, but I didn’t write them down and before going to the library I didn’t have time to find the references in the podcast again. I need to find them before I go next time, but this time I just searched for something related in the library. Most search results were about agile methods like Scrum, which I already know, or project management techniques – no, I don’t want to study how to to Gantt charts again!
I picked the only title that didn’t fall into one of these categories, “Effective Team Management with VSTS and TFS“, Chaminda Chandrasekara and Sanjaya Yapa, 2018, although I have no idea what VSTS and TFS are. I’ll let you know once I read the book.
In total, I was slightly disappointent about the available content on this topic. I hope to gather some more useful references after reading the first books on this, hints are welcome!

By-catch

When intelligence services try to gather information on a specific topic or purpose, and they accedentally catch some unrelated, but useful information, they call that “by-catch”.
Nearly every time I visit the library there is some by-catch: I walk down the shelves to fetch a specific book that I found in the search engine, and suddenly I see an interesting book cover on a topic I was not looking for.
This time my by-catch is “Thoughtful machine learning with python“, Matthew Kirk, 2017. Of course I’m skeptic about the current hype on machine learning/A.I. by jounalists and politicians… based on the number of jobs and produced value this topic is way overrepresented in the media compared to ordinary software development (as in “just build stuff that works”…). But on the other hand, why not have a look and keep track on what’s going on. I don’t expect to require machine learning knowledge to apply for any job in the near future, but it’s quite thin and has a little coati on it. So there we go.

On engineering management

When I resigned from my developer job at a company once, some middle managers suggested a 2-on-1 meeting with me to see if they could convince me to stay. They asked me for my mid term career plans, and I replied: “I want to be a world class software developer, working five times faster than average, and I expect to earn an appropriate salary that matches my productivity.”
They realized they could not offer me a career path like that; because being a service company, their business model is to rent out lots of low-paid developers to customer projects and produce as many billable hours as possible, not letting a highly skilled and expensive team build an awesome product in a few weeks. I already anticipated that earlier and had applied to a couple of product companies, so there was no way I was going to stay.

Sure as hell I did not plan to quit coding and start drawing pictures of systems as a so called architect, or even worse, become a project manager. During my career, I got used to see my supervisors as the people who stopped being engineers because they were not good at it, or were not smart enough to become engineers in the first place. While my job was to solve interesting problems and build real working stuff, those lower managers had to attend meetings, fill out excel sheets and attend more meetings.
I was totally aware that some of them were good at their job and others were not. The bad
project managers would interfere with engineerings decisions they were not qualified to make, try to push away responsibility for everything that goes wrong and always report to their superiors that the project is progressing as planned (ha, ha!).
The good managers set clear priorities for the upcoming work, shield the team against most of the communication noise from other parts of the organization, and keep motivation high by recognizing good work and maintaining a nice atmosphere. Although I appreciated that someone did the job, it seemed absolutely not desirable for me.

Last week I listened to an episode of software engineering radio featuring Jonathan Nightingale on engineering management, which changed my perspective a bit.
You should definitely go and listen to the whole interview, but I’m going to give you the most impacting statements right here.

He raises the question from a start up companie’s perspective: Why should I put someone as manager on a team of engineers, and pay an additional salary although he is not producing anything? But the point is: If you have a team of eight engineers without effective management, you pay eight salaries but probably get three or four engineers worth of productivity out of it, for various reasons.
He mentiones products that are half built and than abandoned, or products that are fully built but useless because they are not aligned with the means of the company.
(I buy his explanation immediately: I have in fact seen the productivity of a six person engineering team approaching zero, because we were told to work on components supposed to contribute to a huge system, but nobody was making sure that the pieces actually worked together (I mean in code, not on the drawings) or even the specification made sense. A year after the planned delivery date, there was still no release in sight, management removed nearly everybody from the teams and sent other people in to rescue the project…)

A good engineering manager may cost an additional salary, but if he can get seven or eight developers worth of work out of the team, that extra money has easily paid off. Jonathan states, that manager’s job is to make the team as productive as possible. Providing mentorship to the team members (so the manager should be a former developer himself), aligning the team’s work with the business needs, and establish good practices in the team.

You know what? That’s what I love to do anyways!

As I said, I just enjoy feeling productive and contribute as much as possible to great products. I also like it to teach younger developers whatever they can learn from me, and discuss possible approaches with more experienced developers to find out what works best for the current situation.
One time Jonathan mentions starting as a senior engineer and evolving into that role of a team lead. This path sounds very appealing to me.

An other interesting point from the interview is, that managing requires skills that should be learned, not simply “being good with people”. This might be another reason why it didn’t seem desirable to me to become a manager: The feeling that there is nothing else to it than doing the busy work of communicating all the time.
But if there are skills to be mastered and value to be created – challenge accepted!

On a name for my blog

Hi, friends!
After some brainstorming, I narrowed down the possible names for my blog to three options:

The third best option was TotalSurpriseException, because that’s the name of my YouTube channel since two years or so, where I’m publishing coding tutorial videos. The name was intended to be somewhat technology related and humorous, but it does better as a nickname for a content creator than as a name for a product like this blog. Because it doesn’t say what this is about.

My second best idea was ThatGermanProgrammer. The “programmer” part is clear enough on the field of topics I may cover here. The fact that I’m German will probably come up from time to time, when I need to put my perspective on things on context. Also it reminds me of a sentence my American host said to his mother, after I showed to him that his bike tire valve was not broken, but rather French valves need to be unscrewed before pumping: (slightly annoyed) “The German fixed it.”
And starting with “That” the name has a tone of randomness, which I find funny as well. (I’m playing video games as RandomGuy from time to time.)

But the name I finally decided to go with is On Coding. First I had something like Thoughts On Coding or Thoughts For Coders, to imply that this blog is no tutorial but rather by room for any technology and career related topics. But generally in writing (and also in naming things) the shortest terms are the most powerful and most expressive. Also, I remember a scene from the Colbert Report some years back, when Henry Kissinger just had published a book and was a guest on Colbert, who asked him with a straight face: “You new book is called ‘On China’. What is it on?” This was hillarious. I’m sorry that I cannot find a link to that clip.

So there we go. On Coding.

Do you like it? What makes a good name in your opionion?
What I figured out:
The name should create an expectation on what to find in the blog.
Of course, the domain has to be available. A downside for On Coding is, that the .com domain with that name is already taken. I wasn’t planning to take the .com anyway, rather .io or .org, but the .de came free with the hosting, so cheap little me went with that one. But I definitly see the risk that someone types my url by hand into the adress bar (since it’s short) and then unconciously adds .com, which will take him to a totally different thing. If I was going to start a business here, this fact would have been a show stopper for the name! But it’s just my private blog, so it’s okay.
And the hardest part for finding a good name: It needs to sound good!
Would you agree, that all the three mentioned options have a good melody, when you say the words in your head? For me, they do. This is the reason, why I didn’t consider ThatGermanDeveloper or OnProgramming, which are basically synonyms for the options that were my favorites. Developer is even more true than programmer, because we consider software development to include more activities than programming, right? But for whatever reason, I feel they don’t sound that nice. Is there some magic going on about the number of syllables?

In coding, finding good names is very important. Names for objects need to be precise, self-explaining, understandable. Which also means: as short as possible, as long as necessary.
Finding a good name as a brand is even harder. It should sound appealing.
I’m very happy with On Coding.

On increasing your foodprint

Hi, friends!

There is one more reason to start blogging, in addition to documenting your thoughts for yourself, producing helpful content for your fellow readers and enjoying the attention:

No matter if you just starting your career or you’re already senior level – sooner or later you want to apply for the next job. Of course, most important is to match the required core skills, like X years of experience in developing systems of kind Y with framework Z and so on. But you also want to demonstrate that you care about your field more than just doing your job. So what is your little extra engagement that tells you apart from your peers and lets you qualify for a higher level job than your current one?

It’s up to you! Anything could fit your specific skills, passions and profession. As a college graduate, it may be your GitHub page to show some interesting pet projects. As a young professional, perhaps you are proud of some some contributions to a popular open source project? As a senior, have you given a talk on a conference yet?

This is what I refer to as your food print. What ever way you choose to increase it – just think about it ahead of time! The moment you want to send out your resume, it’s to late to start doing something.

When I appliead for a new position in early 2018, I put the link to my Youtube channel onto my CV, where I gave tutorials to Java Web Programming for beginners (German). I wasn’t sure if this was a good idea; but in one interview, my potential future boss had actually looked at my channel and liked it. He even said from my video he had now understood a topic which he had only heard about but never dug into (I didn’t ask which one, but I would bet on Dependency Inversion… he was a database person). That was a great compliment for me and boosted my confidence during that interview.

I turned down that job offer a week later and joined my current company instead, but that episode still confirmed my assumption: Don’t be shy. If you do something unusual, that could proof you have an additional skill related to your work, own it! Put it into your profile, don’t be afraid that it reads silly, just because your blog / channel / talk / project is amateur level. I’m not asking you to present it as your top qualification, but put it to the less important section amongst language skills and certifications. Most of the time it will not come up in the interview anyway, but eventually you will be asked what you did there and why – then go and collect some extra points.

(But: Clean up after some years! What’s on your CV today, doesn’t have to stay there forever. When your proficiency level has moved on, that extra may not demonstrate an additional skill any more. Then mentioning it make you look smaller, not better. The same holds for each line on your CV, though. After your second full-time position, you may stop mentioning the internship you did at college. The level of detail of your less recent job description should decrease over time, and so on.)

I think, writing a decent blog is one of these extras, that you can easily do. Of course, don’t expect that your blogging will be so impressive that they would throw a director’s position at you for that reason. But for sure there will come situations when your qualifications are just on the line of being sufficient or not, or you’re in a close race against another candidate. Maybe then your writing just demonstrates a deeper understanding of some technology, or the talent to explain and teach, or your involvement with related fields like business and management. And finally it’s your wider food print that will give you the edge.

On blogging

Hi, friends!

My next pet project will be to learn PHP. I’m planning to create some real-world web application, similar to what I routinely build with my favorite technology stack (Spring Boot, Kotlin, Angular), and explore on the fly how to do that in today’s PHP ecosystem. That includes a bunch of initial reading, probably picking some libraries and so on, figuring out test automation and of course writing lots of code.

(Before you go “waht? php??”: I’ll tell you about the reason later.)

While still waiting for the opportunity to start that, last week I thought: “Oh, I could blog about that!” The project will probably be stretched over a couple of months, because my job, family and studies don’t leave me a lot of spare time to work on it. That’s why blogging about each step would do a great job of documenting my learnings and decisions for myself, so I could quickly get going again even after a break of some weeks.

Also, I could both pave the way for others who want to learn the same later, and expose my approach for feedback from more experienced PHP devolopers.

Now, it will probably take a while until I get to start with the PHP project: That plan is already in my mind for two months now, and I haven’t started yet – too many things keep popping up, each more urgent than (kind of randomly) learning another programming language.

I still like the idea of blogging though. So since things keep popping up, as I say, and most of them are related to career and technology – why not write about them, too?

My special thanks for inspiring me to start blogging goes to Markus, who blogs about his progress on his masters degree (the same remote course I take), and to Oleksii, a fellow software developer and great coach whom I had the pleasure to work with for a while. He writes about my favorite programming language Kotlin.