Human factor
Technology doesn’t matter when it does not give advantages.
Context:
Instead of creating apps from time to time I’m building teams,
that made think about human factor.
What does it mean in practice?
“Bench” is time when there is no project. Update time can happen to senior classic objective-C, Java Android or .NET developers, it time to update skill or just peep what competitors are doing in other words learn time for them or for me.
When later there is possibility to jump it commercial project there are no surprises.
Hidden costs of software development
- support cost is how easy developers can switch between their task
- communication time spend on setup understand tasks and prevent misunderstandings
Outsider view on Xamarin
- 16 developers several senior classic ios, Android java developers and .net developers desktop and web.
- Training period took 2–6 weeks to do was make an app which consume json api and do some fancy UI and if enough time access native hardware
- Developers had chance to go threw Xamarin.Native and Xamarin.Forms
- Developers used Visual Studio for Mac and Windows, JetBrains Rider
Xamarin and .Net platform
- objective-C developers: tooling and C# is ok, mvvm we have mvc.
- Java Android developers: tooling and C# is acceptable, mvvm is not best pattern
- my point of view on developer progress: Android tooling and Java and XML is quite similar, for Apple developers Microsoft and JetBrains tooling found as much more comfortable
Xamarin.Native
- objective-C: classic Android UI is easy to star but needs some practice to achieve really good design.
- Java Android: classic iOS UI is NOT easy to start, Xcode tooling is for sure that they would NOT like to work with.
- .NET developers: classic Android UI is easy to star but needs some practice to achieve really good design, classic iOS UI is alien technology
- my point of view on developer progress: Android tooling and Java and XML is quite accessible, Apple tool and objective-c ware pain to all,
Xamarin.Forms
- objective-C: forms are easy to start but my platform I would do faster and better in my classic approach
- Java Android: forms are easy to start and have some similar mechanism but my platform I would do faster and better in my classic approach
- .NET developers: forms are easy to start and have some similar to WPF, but had expectations that there would be more and more custom UI components out of box
Real live projects
I worked in many projects Native, Xamarin.Native and Xamarin.Forms, small or bigger projects from 2 up to 20 mobile developers + UI/UX team + testers + back end teams, conclusion is that share UI code matters.
Having design system is less cross team communication and cost reduce.
It turn out that later that Xamarin.Native developers specialize in Xamarin.iOS or Xamarin.Android only, it rare case that one developer feels comfortable in both. Sometimes Native developers where hired just to do UI.
Main Classic Native developers argument was :
“I as senior Classic/Native platform developer can make UI faster and better design than in forms”
After some time it turn out that in rare cases that sentence is true, more often scenario was that rich new design can be done in same time or faster
If “design system” was implemented in app even junior not experienced could make page up to 3 times faster in forms and cover all platforms not only one.
Easy support
More human factors
- No all project have universal design system, more people more communication issues, same UI problems
- Holidays happen or even people are changing jobs.
- CEO are changing jobs
- Product owners and developers are bored or lost focus on product
- hard to find experience developers
Macro forcing to go for support mode
- mobile market share change, some platform simply stop existing
- customer run out of money excuses crisis, BREXIT…
- other product part need more attention, need to move developers there
Recommendations of others:
83,7% of 190 votes recommend Xamarin.Forms for new project for .NET team.
Link for pull and discussion:
Summary
Human factors how fast developers learn, effective in job despite out side world factors as holidays, task changes, other developer in team abandon them, customer whims, communication and how easy team and project can go in support mode, those are daily issues of all projects.
Technology doesn’t matter when it does not give advantages.
In other word common standardized tooling and accessible technology should cover human imperfections. I hope this article made you think human factor when picking technology for your software. Please comment, discuss, reach me out if … Cheers!!!