Hosk’s recommended Dynamics 365/Power Platform and other articles May 2019

 

Quotes

When the pressure is on you don’t rise to the occasion, you fall to your highest level of preparation – Chris Voss

Articles of the Month

awesome-1

Great resource below showing all the new certifications and resources to study

Great Dynamics 365/Power Platform articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – last 5 recommendations

Selected  HoskWisdom

  • There is nothing sexy about underwear when you are hanging it on the washing line
  • Don’t respond to anger with shouting, be silent and confuse them
  • Imagination exhausts itself with the endless possibilities of code
  • When a project isn’t working, you have to stop playing the game
  • Writing good code is like being sexy, if you have tell people you are, you aren’t
  • Code is as complex as you make it
  • Clothes matter, naked developers have little or no influence on projects
  • Good developers bring joy when they join a project; bad developers bring joy when they leave a project
  • Coding is mastered through relentless commitment to the fundamentals
  • When you approach the end of a project, you finally see the requirements and solution as they really are. If only we understood that at the start
  • no project plan survives contact with delivery
  • Customers are a welcome thorn in a developers side
  • You must have chaos within you to be able to dad dance
  • It’s not the skills of the people on team but how will they work together that makes the biggest difference
  • Earn confidence by being good at what you do
  • Everyone wants to be heard but no one wants to listen
  • If you only learn in work, prepare to be average

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

Recommended reading for software engineers

In my whole life, I have known no wise people who didn’t read all the time – none, zero. Charlie Munger

Books allow you to delve deep into a topic, stop focusing on doing and think about your situation, your approach and effectiveness.  Spending time on design before writing code creates better quality code, thinking about how you code, run a scrum team, deliver a project, work with people helps you do these things better.

Reading a book is conversing with an expert on that subject, you learn from their mistakes, success and experiences.  You get that knowledge and apply your adventures and conclusions on top.

Read why developers should read books if you are still not sure. If you don’t like reading it’s because you haven’t found a good book but you have come to the right place.  Those who read books, get wiser.

Coding

Coding is a fundamental skill software engineers should try to master.  Improving your coding will have a significant impact on your career.

It shocks me the number of developers who don’t learn how to design, write, test and refactor  code to a high standard.  They are paid cash money to write code, so be an expert in it.   Not being a great coder is like a chip shop that doesn’t make tasty chips, it makes no sense.

Let’s start with books to make your code shine brighter than a full moon

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin)

I love this book, it’s short, concise and focuses on the fundamentals of coding.  Every developer should read this book and earlier the better.  Master the fundamentals and you have a solid foundation to build on

Code Complete (Developer Best Practices – Steve McConnell

This is a monster of a book at 960 pages and it goes deep into the details of coding.  When you read a chapter on how to write a method, it helps you realise the skill that top programmers have.

The Pragmatic Programmer: From Journeyman to Master

Great advice for programmers with common sense, down-to-earth advice.  Less technical than Code Complete but still a great book.  Everyone software engineer who reads this will learn something, it improves your code and your approach.

The Art of Unit Testing: with Examples in .NET

Unit testing is an art, you need to write your code in a testable way but writing unit tests isn’t straightforward but it reduces the feedback loop, allowing the developer to test their code.  Unit testing is something you should master and this book will help.

Head First Design Patterns

This helped me understand Design patterns, I still admire the simplicity of well design code and the patterns featured here are beautiful.  Design patterns are great for seeing examples of well-designed code and giving you a common language to use with other software engineers.

Design patterns are common solutions to common problems, it’s worth the time to read up on them.  Without unit tests changing code becomes risky because without unit tests you can’t be sure you have not broken any code.

Refactoring: Improving the Design of Existing Code

All software engineers will spend time on legacy projects and looking after other developers dodgy code.  This book gives you a way to bring order to a legacy project and improve it.

Projects, Scrum and People

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

A story about a company who bring DevOps into their business, solving problems and adding drama with characters.  It’s useful to view a project from a different perspective because most people see little in their own projects because they are so focused on delivering the project.

The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity

An interesting look at the insanity of IT Projects, teams, offices and all aspects of being a software developer.  You may have had an inkling you must be mad to be a software developer, this book will help you understand why you feel that way.  It’s funny and enlightening.

Scrum Mastery: From Good To Great Servant-Leadership

Scrum and agile is a tool, it’s great or terrible depending on who is using it and it won’t be going away soon.  They will use it on many projects you work on, so spend time on understanding how it works and the theory behind the concepts.

Agile projects done well are effective and enjoyable to work on but few people understand the theory behind Scrum\Agile.

Read it, master it, it will help you deliver scrum/agile projects to a high level.

Radical Candor: How to Get What You Want by Saying What You Mean

The driving force behind any project is the people on it.  If you lead anyone, then this book will help you be honest with them and work more effectively.

Never Split the Difference: Negotiating as if Your Life Depended on It

This book contains great practical advice for communicating with people and using emotional intelligence.   The writer was an FBI hostage negotiator, so has experience dealing with pressure situations.  This was my favourite book from 2018.

Mastery – Robert Greene

This book gives many examples of people who devoted their lives to mastering something, it’s inspirational and motivating.

Being a software engineer needs people to master it with constant improvement, study, reflection.

Other recommended reading lists

Time is not wasted if you are reading a book

Why avoiding being wrong is slowing your progress

You got to go down a lot of wrong roads to find the right one. Bob Parsons

Is your goal being right or getting to the right solution?  People go to lengths to avoid being wrong but tomorrow will it matter whose was right or who came up with the idea?

Being wrong is the path to success with a detour.  We seek out when we are wrong, understand why and move on.  Our ego demands we right, our feelings hate being wrong but the quickest way to improve is by failing and feedback from others.

Admitting you are wrong is short-term pain for long-term gain.

When you can handle being wrong, you end up being right.  An interesting TED talk being wrong by Kathryn Schulz
https://www.ted.com/talks/kathryn_schulz_on_being_wrong?

People spend time to avoid being wrong but it’s quicker to try, be wrong and move on. The time wasted on avoiding being wrong could be used on working on trying new ideas.

Being wrong is painful, you feel stupid, frustrated but this is your reaction to the event, when you reflect later its positive, you learned a lesson and corrected your path.

It’s difficult to admit being wrong because it‘s initially painful to admit being wrong publicly.  The goal is to do it right, how you get there isn‘t important tomorrow, so try to keep your perspective long-term.  You learn by doing and often learn more by doing it wrong because you stop to understand your mistake so you can avoid it in the future.

We  learn less from success because we don’t reflect on what we did right and assume we will do it again

Is it important to be wise? do you want to be right or do you want the right answer?  If being right means you personally are wrong, would you take it?

Code reviews

Code reviews are great for learning, an experienced developer checks your code, highlights bad code and suggest improvements.  Despite the benefits it feels like the reviewer is critising your code but attacking you as person.  This is an emotional reaction to being wrong and being critised, we have to overcome this with logic and understand this feedback is a great way to improve quickly.  It leads to a higher quality code base and developers write better code, helping individual’s long-term prospects.  It’s beneficial but not easy but it gets easier with practice.

Reactions are emotional, they happen quickly and bypass thinking, the reaction is to defend your code.  You respond by attacking, they defend and then they react and attack.  The topic of the discussion is lost in the emotional responses, defending and attacking the ego.  Time  on your ego and being right, short-term gains drive this behaviour.

The long-term logical view is to focus on learning, getting feedback and getting to the right solution.   Winning arguments come at the cost of learning , you learn when listening.  Winning an argument means you end the discussion with the same view as you entered, talked more than you listened and learnt nothing.  There is no winning when arguing.

Your goal as a software engineer is continuous improvement, being wrong, making mistakes and honest feedback are good teachers.  We learn more from being wrong because we stop to analyse, when we are right we assume we have done it right once and we will do it right again.

knowledge is powerful

Long lasting change comes from knowledge and the ability to use that knowledge effectively and to write better solutions. Static Code analyzers help highlight code which breaks best practice.  This is frustrating initially when lots of your code triggers error but learning the logic behind the rules helps grow your knowledge.

When you copy and paste code you bypass the learning and don‘t acquire knowledge.  Its like getting the answers to a test, you pass that test but you don‘t have the knowledge to pass other tests on the same subject.

Understanding allows you to alter solutions and adapt your knowledge to solve to different problems.  If you have copied the answer from the internet this brittle solution will break as soon as problem changes.  You can’t adapt solutions which you don’t understand.

Conclusion

Embrace being wrong, it’s a step on the path to understanding and developing a deeper knowledge of your area of expertise.  Our fear of being wrong is exaggerated, people respect someone for admitting and fixing their mistakes.

Mistakes occur when pushing yourself and doing things you don‘t have experience in.  Getting out of your comfort zone, working through mistakes is how to improve at a fast rate.  Playing safe and avoiding errors results in not learning and highlights you are playing too safe.

The focus should not be on being right but creating the right solution.  If you can avoid fearing being wrong, you will try harder things and push yourself to do more.  Admitting mistakes and avoid wasting time arguing or avoiding being wrong allows you to do more.

Building your tolerance for mistakes is the path for faster growth and improvement.

Hosk’s recommended Dynamics 365 and other articles September 2018

Quotes

The pain of legacy code never goes away

Writing code is a long lesson in humility #HoskCodeWisdom

 

Power is like being a lady… if you have to tell people you are, you aren’t.” – Margaret Thatcher

Articles of the Month

awesome-1

Great Dynamics 365 articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – has read and recommends

Selected  HoskWisdom from September

  • No Developer likes to be told they have ugly code
  • Meaning can come from great suffering, just ask anyone who has worked on an IT project
  • You can’t refactor code until you understand what it does
  • To many people try to do Agile when they should focus on being Agile #HoskCodeWisdom
  • The complexity of code is proportionate to the stress of supporting it #hoskcodewisdom
  • There is a game Microsoft likes to play with developers, They call it Master and Servant. It’s a lot like life and that’s what’s appealing

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

Why apprentices work well with Dynamics development

Youth is the gift of nature, but age is a work of art. Stanislaw Jerzy Lec

It’s not the quality of the plan but the quality of the people that is vital to success #HoskWisdom

Capgemini has a degree apprentice scheme which offers an alternative to going to university, it allows you to study for a degree funded by Capgemini, whilst working full time.

In 2018 Capgemini are hoping to add 90 apprentices.   Watching apprentices grow and improve is like a home-grown player making the football team, it feels more rewarding.

The Capgemini Dynamics team added at least two apprentices each year for the last 2 years and it’s worked well.

The cost of degree?

The cost of degrees in the UK is huge, students pay back via a percentage of their wages for 20 years after graduation (the degree gets them a better paying job and worth the investment)

With degree’s costing so much money, I’m surprised alternatives or getting a degree at university is still the popular choice.

Alternatives such as

  • Making degrees into 2 years (do you need 3 months off for summer?)
  • Night school
  • smaller focused courses relevant to software engineering/programming or other specialisations

The cost of a degree is £9000 per year (tuition fees, excluding living costs) lasting 3 years, people should question

  1. Is a degree worth the money?
  2. is a degree worth the time?
  3. What are the alternatives?

The Capgemini Dynamics team experience

we had at least 2 apprentices each year for the past 2 years and it worked well.  The apprentices are put onto projects and work as Dynamics developers.

Recent articles on apprentices on the Capgemini Dynamics team blog

Apprentices often learn faster than experienced developers who have learnt bad habits.  The Capgemini Dynamics team bring the best practices of software engineering to Dynamics development

  • Plugin framework
  • Unit testing
  • code using business logic and repository pattern
  • DevOps (CI, CD)
  • GIT not TFS (pull requests differ from check ins :-))

The apprentices pick up the development process often quicker than experienced developers because they haven’t got use to writing code without designing their code or writing unit tests.

Some CRM developers don’t see the value of unit tests but if you are working on a large projects and don’t write unit tests the quality of your code base will deteriate.  The effects of reduce quality code is harder to read, maintain, test and extend your code; The project will slow down and make any changes costly in terms of time and money.

Articles on why you should unit test

Articles on designing code and technical debt

My experiences

The apprentices are are expected to

  • Contribute ideas
  • One Microsoft Dynamics Certification each year
  • Share information with the team (presentations, blog posts)

These help the software engineers learn about Dynamics 365, integrate and get engaged with the team.  Studying for Dynamics certification allows apprentices to learn Microsoft Dynamics 365 quickly and learning good software engineering principles takes longer.  Using frameworks and code reviews you can make sure junior developers creating code the right way.

Junior developers work best on a project with experienced developers who help them with the intricacies of Microsoft Dynamics development (which has it’s idiosyncratic ways of doing things).

Summary

Its a great way to get a degree and Dynamics project experience without the debt (it does take longer to get your degree)

You need to be hard working and dedicated to take this route but the benefit is you get your degree paid and project experience.  The downside is it takes longer to finish the degree and you need to study and work.

It’s amazing to think of the practical experience the apprentices get working on projects, learning from software engineers whilst people studying at university only have theoretical knowledge.

I look forward to the Capgemini Dynamics team getting more apprentices each year.  You can find out more here if you want to learn more about it.

The Hosk is writing again

Never be afraid to throw away all your ideas and start again with a blank page #HoskWisdom
Either write something worth reading or do something worth writing. Benjamin Franklin

Tasked with creating the social media strategy for the Capgemini Dynamics team, it has got me back into the habit of writing.  I have created a Capgemini Dynamics publication (https://medium.com/capgemini-dynamics-365-team) on Medium and share the good practices and great work the team are doing.  It will include other team members contributing posts as well my writing

This  prompted me to write on my blog – Why developers should read books, I enjoy thinking and writing (publishing your best thoughts).  Writing is a tool for teaching yourself and extracting knowledge from experience through reflection.

Busy busy busy

Why wait for tomorrow, when you can start today #HoskWisdom

I have been busy with project work, thinking and reading that I neglected to write, I got out of the habit.  Everyone is busy making excuses, to explain why they aren’t doing what they really want to be doing, you have to admit it and change.

It doesn’t feel I stopped writing blogs because there are tons of notepads and Evernote pages full of half-written blog posts.  Writing clarifies thought and helps you understand your approach to problems.

Writing

I enjoy the writing process because thinking about a subjects helps you understand.  Many thoughts don’t make the finished post because one thought leads to another.  The quality of thought and understanding grows with each thought.  At the end you step back and view all your ideas and take the best bits and organise them into an interesting structure before sharing it with the world.

I’m going to extreme 365 in Dubrovnik because of my blog, another reason I’m thankful to my blog.

Older blog posts are thoughts, experiences, challenges and problems I experienced, there are over 1000 posts and I can’t remember most of them but I don’t need to because I can go back and read them.  I view the blog as a storing my thoughts and knowledge in the cloud with the benefit of being searchable by myself and others.

Be ready to read more Hosk writing this year

Dream big but start small #HoskWisdom

Hosk’s Top Dynamics 365 Articles of the week – 14th – August

Quotes

But man is not made for defeat. A man can be destroyed but not defeated. Ernest Hemingway

Articles of the week

awesome-1

Best of the rest

Programming/Scrum

Other

The Hosk – currently reading

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

CRM 2016 – Tips on passing the MB2-712 customization and config exam

All the CRM 2016 content to help you pass the exam

picture from here