"Exam 70-563: PRO: Designing and Developing Windows Applications Using Microsoft .NET Framework 3.5" is passed yerstaday!
My results were a bit worse then for Exam 70-536, espesially in area of data management planning. ...Hm, it seems I have to refresh my knowledge about app settings, user preferences and data; app config files, local/network folders, isolate storage, registry, roaming user profiles, local/remote databases...
Friday, March 27, 2009
Tuesday, March 24, 2009
Interesting thougts about UI
"Easy To Use" typically means "less time and money spent in training and an increase in user productivity".
UI goals are
User Interface Design (John Wiley & Sons, 1995) by Alan Cooper.
UI goals are
keeping the userfrom making big mistakes and keeping the user from looking stupid- from About Face: The Essentials of
User Interface Design (John Wiley & Sons, 1995) by Alan Cooper.
Monday, March 23, 2009
"Good enough for now" principle
It is not always easy to distiguish when requirements and/or design are incomplete because of some unknowns (this is what agile approach thight with) or this is just about somebody is too lasy to think and specify consistent details.
I think running project according to "just good enough for now" principle is a difficult balancing and finding what is really can't be unknown at the moment and what we just need to put some time to think about right now to save time later for rework.
...this balancing require wize and expirienced man. One more point why agile projects can't be run by novices.
Some links:
- "Just Barely Good Enough" Models and Documents: An Agile Best Practice
I think running project according to "just good enough for now" principle is a difficult balancing and finding what is really can't be unknown at the moment and what we just need to put some time to think about right now to save time later for rework.
...this balancing require wize and expirienced man. One more point why agile projects can't be run by novices.
Some links:
- "Just Barely Good Enough" Models and Documents: An Agile Best Practice
Friday, March 20, 2009
Duplication sometimes is allowed
Just a thougt that in some cases same or similar logic should be implemented in different places and this is "by design", recomended practice!
E.g. in case of validation it is recomended to implement as much validation as possibe near the input (e.g. on UI layer) but at the same time you have to duplication validation on back-end layer as well to follow defencive programming principle.
Similar principle of defend layers are used in security desing. In order to be secure system should be protected by several layers of defences (preferrably build on different technologies).
Why these thougts come to my mind? Just because sometimes developers are too concentrated on reuse for existing code and avoiding duplications in implementation. You have to realise that sometimes duplication is needed and can't be avoided.
E.g. in case of validation it is recomended to implement as much validation as possibe near the input (e.g. on UI layer) but at the same time you have to duplication validation on back-end layer as well to follow defencive programming principle.
Similar principle of defend layers are used in security desing. In order to be secure system should be protected by several layers of defences (preferrably build on different technologies).
Why these thougts come to my mind? Just because sometimes developers are too concentrated on reuse for existing code and avoiding duplications in implementation. You have to realise that sometimes duplication is needed and can't be avoided.
Silverlight, ASP.NET AJAX, XBAP
What are differences and usage scenarious for Silverlight, ASP.NET AJAX, XBAP technologies?
It is clear that these are separated products. that have different internal architecture. Silverlight and XBAP provide similar developer expirience. It seems to me that XBAP is not so usefull approach nowadays and Silverlight will replace XBAP. Why should I use XBAP for intraner/corporate applications why not standalone WPF app deployed thru ClickOnce? For RIA Silverlight is defenitelly the winner for XBAP.
Some links I found usefull:
- When should I use WPF vs. Silverlight?
- XBAP and Silverlight
As for AJAX it looks to me as a complimentary technology for Silverlight. Ajax allow to use back-end services esely to build resposible client UI, while Silverlight is consentrated on client-side code. So this is more AJAX vs RIA comparison, where Silverlight is one of RIA technologies. But still you can do everything with Silverlight, so probably for the future Silverlight is a strategic technology choice for RIA.
- Ajax vs. Silverlight and .NET
- Silverlight and Apollo: AJAX Killers?
- AJAX vs RIA's and Flash vs. Silverlight
It interesting to know that alternatives for Silverlight are JavaFX and Flash/Flex.
It is clear that these are separated products. that have different internal architecture. Silverlight and XBAP provide similar developer expirience. It seems to me that XBAP is not so usefull approach nowadays and Silverlight will replace XBAP. Why should I use XBAP for intraner/corporate applications why not standalone WPF app deployed thru ClickOnce? For RIA Silverlight is defenitelly the winner for XBAP.
Some links I found usefull:
- When should I use WPF vs. Silverlight?
- XBAP and Silverlight
As for AJAX it looks to me as a complimentary technology for Silverlight. Ajax allow to use back-end services esely to build resposible client UI, while Silverlight is consentrated on client-side code. So this is more AJAX vs RIA comparison, where Silverlight is one of RIA technologies. But still you can do everything with Silverlight, so probably for the future Silverlight is a strategic technology choice for RIA.
- Ajax vs. Silverlight and .NET
- Silverlight and Apollo: AJAX Killers?
- AJAX vs RIA's and Flash vs. Silverlight
It interesting to know that alternatives for Silverlight are JavaFX and Flash/Flex.
My MCPD campaign is started
My compaing to archive MCPD status is started. The plan is to pass three exams:
- Exam 70-536: Microsoft .NET Framework - Application Development Foundation
- Exam 70-505: Microsoft .NET 3.5, Windows Forms App Dev
- Exam 70-563: PRO: Designing and Developing Windows Applications Using Microsoft .NET Framework 3.5
and gain "Microsoft Certified Professional Developer: Windows Developer 3.5" certification.
I found following resources are usefull in preparation:
- MS Learning Site
- MSDN Virtual Labs
- Rump-up
I have passed "Exam 70-536: Microsoft .NET Framework - Application Development Foundation" yerstaday! To my small surprise it was not so difficult as I expected. Probably I am overexpirienced for it?
I have registered for "Exam 70-563: PRO: Designing and Developing Windows Applications Using Microsoft .NET Framework 3.5" next week. I excpect it should be more diffucult, especialy taken in mind that I have no preparation/training materials for it.
- Exam 70-536: Microsoft .NET Framework - Application Development Foundation
- Exam 70-505: Microsoft .NET 3.5, Windows Forms App Dev
- Exam 70-563: PRO: Designing and Developing Windows Applications Using Microsoft .NET Framework 3.5
and gain "Microsoft Certified Professional Developer: Windows Developer 3.5" certification.
I found following resources are usefull in preparation:
- MS Learning Site
- MSDN Virtual Labs
- Rump-up
I have passed "Exam 70-536: Microsoft .NET Framework - Application Development Foundation" yerstaday! To my small surprise it was not so difficult as I expected. Probably I am overexpirienced for it?
I have registered for "Exam 70-563: PRO: Designing and Developing Windows Applications Using Microsoft .NET Framework 3.5" next week. I excpect it should be more diffucult, especialy taken in mind that I have no preparation/training materials for it.
Wednesday, March 18, 2009
How to violate OOP access modifiers?
.NET
Just found that reflection in .NET allows to violate class members access modifiers, e.g. you could easely get/set private class members. Isn't it a violation of basic OOP principles?
.NET reflection is subject to security checks. Full trust code can use reflections without restrictions otherwise you need ReflectionPermission with the ReflectionPermissionFlag.MemberAccess flag. See Security Considerations for Reflection for more details.
Another example is build-in serialization mechanizm in .NET. Again it has access to all private class members in order to serialize instance state.
Java
Quick investigation shows that Java has similar possibilities, but one additional level of protection. Private members are not accesible by default and even trusted code have to call FieldInfo.setAccessible(true) explicitly before accessing private field. Even if you call setAccessible(true) but running code has no enougth permissions (e.g. it is an applet) you will get access denied exeption (ReflectPermission).
Just found that reflection in .NET allows to violate class members access modifiers, e.g. you could easely get/set private class members. Isn't it a violation of basic OOP principles?
.NET reflection is subject to security checks. Full trust code can use reflections without restrictions otherwise you need ReflectionPermission with the ReflectionPermissionFlag.MemberAccess flag. See Security Considerations for Reflection for more details.
Another example is build-in serialization mechanizm in .NET. Again it has access to all private class members in order to serialize instance state.
Java
Quick investigation shows that Java has similar possibilities, but one additional level of protection. Private members are not accesible by default and even trusted code have to call FieldInfo.setAccessible(true) explicitly before accessing private field. Even if you call setAccessible(true) but running code has no enougth permissions (e.g. it is an applet) you will get access denied exeption (ReflectPermission).
Friday, March 13, 2009
Agile manifesto evolution
It was great to find this addition for Agile Manifesto.
Nice to know that software professionals around want emphasise quality and professionalism in our work.
Pure Agile Manifesto sounds a bit stripped to me without word about quality and high professional morale. It could couse confusion in students who have no professional expirience yet. From this point of view they see Agile Manifesto as a green light for cowboy undesciplined programming.
Nice to know that software professionals around want emphasise quality and professionalism in our work.
Pure Agile Manifesto sounds a bit stripped to me without word about quality and high professional morale. It could couse confusion in students who have no professional expirience yet. From this point of view they see Agile Manifesto as a green light for cowboy undesciplined programming.
Thursday, March 12, 2009
When Agile approach works
Basic Agile principles can be fully applied in highly professional teams only, when you have no problems with competencies and commitment. "People over processes" principle works only when people know what to do without much coaching. Only professional has skills and expirience to own the problem, commit into it, choose right tools/methodics from his portfollio, find optimal solution himself. Only professional has built-in internal "common sence" that is required to be agile and "self organized".
As soon as team is not skilled enouth you have no choice but setup a PROCESS to secure some level of success in the project and make success repeatable.
It seems to me that many cases when organization tries to go "agile" but do "traditional" instead is about people that are not skilled enougth. Often they do understand princeples and practices, but can't follow them just because people need more precise guidance.
"Disciplined agile" term is just about that. Professional developer is disciplined by nature, he/she don't need additional quidance to be "disciplined". For less skilled team you need to define "minimum precess requirements", "required practices" etc. but this is already not agile, you put process over people!
This is just as in any art you have to learn basics first in order to become a Master. Agility is for Masters.
The main goal of "Scrum Master" is to train "masters" that can be "self-organized". unfortunatelly it is rarely possible to do in a resonable timeframe with the "random" team. Team has to be formed already with this goal in mind: talanted people, not jouniors.
As soon as team is not skilled enouth you have no choice but setup a PROCESS to secure some level of success in the project and make success repeatable.
It seems to me that many cases when organization tries to go "agile" but do "traditional" instead is about people that are not skilled enougth. Often they do understand princeples and practices, but can't follow them just because people need more precise guidance.
"Disciplined agile" term is just about that. Professional developer is disciplined by nature, he/she don't need additional quidance to be "disciplined". For less skilled team you need to define "minimum precess requirements", "required practices" etc. but this is already not agile, you put process over people!
This is just as in any art you have to learn basics first in order to become a Master. Agility is for Masters.
The main goal of "Scrum Master" is to train "masters" that can be "self-organized". unfortunatelly it is rarely possible to do in a resonable timeframe with the "random" team. Team has to be formed already with this goal in mind: talanted people, not jouniors.
XP history
It was a surprise for me to see that Gradi Booch mentioned Extreeme Programming (XP) in his "Object Oriented Design and Analysis with Applications" book 2nd edition. He describes it as a very simplified version of RUP!
Subscribe to:
Comments (Atom)