The NeceMoon | Technology & Strategy. Le rêve à temps plus que partiel, le travail à temps carrément complet.

Microsoft Professional Certifications for Developers

by necemon 1. March 2017 07:11


Microsoft offers a wide range of online certification programs designed to help you grow your skills and your career.

This article will focus on developer certifications. Microsoft Certified Solutions Developer (MCSD) is a certification intended for IT professionals seeking to demonstrate their ability to build innovative solutions across multiple technologies. For example, the MCSD App Builder certification validates that you have the skills needed to build modern mobile and/or web applications and services.

I got my first Microsoft Certification back in 2008. I have been upgrading over the years and I am now a Certified Solution Developer. Was it worth it ? Sometimes it didn't matter, sometimes it was pretty useful. In my experience, here are 5 advantages of getting certified :
   - Getting a Microsoft Professional Certification doesn’t guarantee anything about getting a job, a raise or a promotion but it does increase the odds.
   - When hiring someone new, some companies check out his certifications as well as experience. Many hiring managers verify certifications among job candidates and consider those as part of their hiring criteria. Some consider IT certifications a priority when hiring for IT positions.
   - Getting a certification can boost your self-confidence, your confidence about your skills.
   - It shows seriousness and passion (you did it all because you wanted to, not because you had to).
   - The process of preparing for the certification increases your theoretical and practical skills.

Exam and preparation tips
My key recommendation is to dedicate a specific period to prepare right before the exam. Get some books, attend a course (virtual courses as a personal preference, but classroom courses available) and practice the technologies involved.
   - Books: there are often preparation books related to the given exam. Example: Exam Ref 70-480: Programming in HTML5 with JavaScript and CSS3 
   - Classes : The most popular exams have short courses available online. Example: Course 20480B: Programming in HTML5 with JavaScript and CSS3 
   - Beyond the training material: researching the topics involved
   - Actually practicing the technologies
   - Answering to multi choice questions: Proceed by elimination. In case of doubt about the right answer, exclude the answers that don’t make (any) sense, (or that makes less sense).

Career paths for developers
Make sure you double check that part. They keep updating the offers based on the latest technology but at the time of writing this, there are 5 options for MCSD (Microsoft Certified Solutions Developer)
   - MCSD: Web Applications. Expertise in creating and deploying modern web applications and services.
   - MCSD: Windows Store Apps. Expertise at designing and developing fast and fluid Windows 8 apps. There are two paths to achieving this certification-using HTML5 or C#.
   - MCSD: SharePoint Applications. Expertise at designing and developing collaboration applications with Microsoft SharePoint.
   - MCSD: Azure Solutions Architect. Expertise covering the full breadth of architecting, developing, and administering Azure solutions.
   - MCSD: Application Lifecycle Management. Expertise in managing the entire lifespan of application development.

Certification Planner
The Certification Planner is a tool to help you know what requirements are necessary to achieve your next certification. It’s about planning your next steps (your options, which exams to take, in which order).

Other links of interest
MCSD Certification 
Web Apps certification 
Wikipedia Page

That's it for now. Now get back to work.

Tags: , ,

Corporate | Education | English | Technical

Certifications Microsoft pour Développeurs

by necemon 1. March 2017 05:54


Microsoft offre une large gamme de programmes de certification conçus pour t'aider à développer tes compétences et ta carrière.

Cet article se concentrera sur les certifications de développeurs. MCSD (Microsoft Certified Solutions Developer) est une certification destinée aux professionnels de l'informatique qui cherchent à démontrer leur capacité à créer des solutions innovantes dans de multiples technologies. Par exemple, la certification MCSD App Builder confirme que tu as les compétences nécessaires pour créer des applications et des services mobiles modernes.

J'ai reçu ma première certification Microsoft en 2008. En progressant, j'en ai obtenu d'autres au fil des années et je suis maintenant un Développeur de Solutions Certifié. Est ce que ça en valait la peine ? Parfois, ça n'avait pas d'importance, parfois c'était très utile.
Selon mon expérience, il y a 5 avantages à obtenir une certification:
   - Obtenir une certification professionnelle Microsoft ne garantit pas l'obtention d'un emploi, d'une augmentation ou d'une promotion, mais ça augmente les chances.
   - Quand il s'agit d'embaucher, certaines entreprises demandent s'il y a des certifications, en plus de l'expérience. De nombreux recruteurs vérifient les certifications parmi les candidats à l'emploi et considèrent ça comme une partie de leurs critères d'embauche. Certains considèrent les certifications informatiques comme une priorité lors de l'embauche de postes informatiques.
   - Obtenir une certification peut augmenter la confiance en soi, ta confiance en tes compétences.
   - Cela montre du sérieux et de la passion (tu l'as fait tout parce que tu voulais, et non parce que tu devais).
   - Le processus de préparation à la certification augmente tes compétences théoriques et pratiques.


Conseils et astuces pour la préparation des examens
Ma recommandation principale est de consacrer une période spécifique à la préparation de l'examen, quelques jours avant. Trouve des livres, participe à des cours (les cours virtuels sont une préférence personnelle, mais les cours en classe sont aussi disponibles) et entraine-toi sur les technologies concernées.
- Livres: il y a souvent des livres de préparation liés à l'examen donné. Par exemple : Examen 70-740 - Installation, gestion du stockage et des traitements sur Windows Server - Préparation à la certification MCSA
- Cours: les examens les plus populaires ont des cours courts disponibles en ligne. Par exemple : Le cours 20487B: developpement de Services Web 
- Au-delà du matériel de formation, c'est bien de faire des recherches sur les sujets concernés
- S'exercer sur lesdites technologies
- Répondre aux questions à choix multiples: procéder par élimination. En cas de doute sur la bonne réponse, exclure les réponses qui n'ont pas de sens (ou qui ont moins de sens)


Chemins de carrières pour les développeurs
Tu devrais peut être vérifier cette partie. Ils mettent les offres à jour assez régulierement, en fonction des technologies les plus récentes, mais au moment ou j'écris ces mots, il existe 5 options pour devenir MCSD (Microsoft Certified Solutions Developer)
    - MCSD: applications Web: expertise dans la création et le déploiement d'applications et de services Web modernes.
    - MCSD: applications Windows Store: expertise dans la conception et le développement d'applications Windows rapides et fluides. Il existe deux moyens pour obtenir cette certification, en utilisant soit HTML5 ou C#.
    - MCSD: applications SharePoint: expertise dans la conception et le développement d'applications de collaboration avec Microsoft SharePoint.
    - MCSD: Azure Solutions Architect: expertise sur toute l'étendue de l'architecture, le développement et l'administration de solutions Azure.
    - MCSD: gestion du cycle de vie des applications: expertise dans la gestion du cycle de vie complet du développement d'applications.


Planificateur de certification
Le Planificateur de certification est un outil pour t'aider à connaître les conditions requises pour ta prochaine certification. Il s'agit de planifier tes prochaines étapes (tes options, les examens à suivre, dans quel ordre, etc.).


Autres liens et références:
Certification MCSD  
Certification WebApps 
Page Wikipedia


C'est tout pour le moment. Maintenant retourne travailler.

Tags: , ,

Education | Technical

10 Years of Programming

by necemon 24. December 2016 10:00


I started programming when I was in high school. I was taught Pascal and HTML among other things. But I was also taking some summer programming classes in an IT institute. That's where I learned Visual Basic and software/database design (during those days, we were using MERISE (Méthode d'Etude et de Réalisation Informatique pour les Systèmes d'Entreprise)). I eventually got Visual Basic installed on my home computer and a book from which I could practice alone, with books.
But, it's only after I graduated from high school, that I started learning and applying C# almost full time during higher studies, and that's what I considered to be my real start into programming and software engineering.
I learned a few lessons over the past decade, and I thought I would take a moment to gather my thoughts on these things. It took me about ten years and a lot of experimentation to figure out some of this.


1. Learning a programming language is the easy part : be aware and beware of the platforms
Take C# for example. Learning the C# language is not difficult. If you already have a good understanding of computer language fundamentals, and if you have some experience in other object-oriented languages, you can become a competent C# programmer within a few days, at least as far as the langage itself is concerned. However, the real price to pay is not about the language, it's about the platform. To develop with C# on .NET, you need to know:
   - the .NET framework
   - one or more .NET technologies such as ASP.NET or WPF
   - and the Visual Studio development environment.
The time required to become proficient in .NET development is usually measured in months, even for an experienced developer. Learning a platform is always more expensive than learning a specific language, therefore choosing the platform is the most crucial decision.
Learning always has a cost and this cost is one of the key factors to consider when choosing the technology you want to learn. The real cost of learning is in time, learning always takes time. Since you do not have time to learn everything, it is important to think strategically about what you want to learn. And since the languages are easy, it's the platforms that you have to be careful about : the technologies associated with the language, the development and deployment tools, the operating systems, and other infrastructures.


2. I repeat, learning a programming language is the easy part : meet the underlying concepts of software engineering
The syntax itself, the words you use when applying the language are relatively simple and you can easily pick them up as you go. However, that's far from being enough for producing quality code, which often involve OOP and SOLID principles, unit testing, design patterns, TDD, BDD, and other technical concepts which are beyond the scope of this article. Anyway...


3. Actually writing code is only one (small) part of the job
A software engineer is often expected to be involved into technology research, tools and projects configurations, devops and admin tasks, debugging and testing procedures, documentation, and technical debt (fixing and refactoring existing code). Also, they have to be thinking about solutions and designing systems : sometimes the most important work is done away from a keyboard.


4. Tried and true : old and boring is sometimes the best.
It's not so much old vs new, or cool vs boring, but rather the thing you are most experienced with. As they say, I trust not the developer who practiced 1000 technologies once, but I trust the developer who practiced the relevant technology 1000 times. If the goal is to "just build the damn thing", go with a stack you would be most productive in.
For example, one of my contacts is making $25,000 per month with a SaaS that was built on boring ASP.NET+SQL Server+Angular 1 because that's what he knew. he hosts it on Windows because he knows how to make it fast and secure. He succeeded by focusing all his time on building the features that clients were asking for, instead of learning fancy tech.
It's important to realise that the technological treadmill never stops. Yet another javascript framework could have been launched while you are reading this. Today's cutting edge tech didn't even exist when I was getting started (EF Code First, Xamarin, ASP.NET Core, Razor), and this leads us to the 2 next points.


5. Focus on sustainable technologies
The only constant in the world is change. Actions and time management is an important skill for developers, particularly because we are on a technological treadmill that keeps moving or even accelerating.
For example, Web technologies that were popular around the year 2000 (Flash, ASP Classic and Java Applets) are becoming almost obsolete and decreasingly marketable. Today, we are talking about ASP.NET Core, SignalR, Angular2, React and VueJS. None of its technologies existed in the year 2000, and these new technologies are likely to be obsolete within 10 years.
What hasn't really changed? The fundamentals of languages such as C++/C#, their implementations of algorithms and their principles are still relevant after several decades. If you master the basics of a stable system, you could adapt to change better, you could appreciate it and use it to evolve.


6. Balance between exploration and exploitation
Exploration is about learning new things, studying new techniques, reading books, watching video tutorials, practicing and improving skills. Exploitation however, is to take advantage of what we already know to solve real life issues. It's about thinking creatively about ways to use the knowledge we already have to create value for others.
So yes, both of these tasks are both necessary and important. The risk is to be too focused on either activity.
Too much exploration, and you will never achieve a useful level of expertise in the chosen technology. There is a huge opportunity cost with this kind of light learning, because, although it expands your mind, the time it takes implies that you don't really improve on the skills that you have already acquired.
On the other hand, too much exploitation can keep you from evolving in new technologies, and can limit your employment opportunities.


7. It’s easy to be great... It’s hard to be consistent
It's easy to be great for 2 minutes. It's hard to stay great constantly, every day.
When you have a good idea for a new project, you feel a great desire to start researching, designing and programming. You feel a rush to turn your idea into something real and you become super productive. But the problem is that this motivation fades over time.
Yes, it's fun and it's easy to have new ideas and start working there. But then there are the efforts to be made, the adjustments, the launch, the maintenance, the corrections, the improvements, and so on. Over several months. This is where it gets hard. It is hard to stay focused on the same idea, on the same project for months and years. It takes a lot of discipline.
It’s easy to be great. It’s hard to be consistent.


8. Diversify your skills
Don't be just a programmer, become an Expert Who Programs, an expert in another relevant field that you are passionate about. You can be an entrepreneur, a project manager, a Big Data scientist, a researcher, a security specialist, etc. If you are an Expert Who Program, in addition to being able to program (maybe full-time), you also have an additional credibility that is related to something other than software engineering.
Hence the importance of getting an education. If you go to university and you already know how to program, you probably won't learn much about programming. That does not mean you should not go to these schools. You will need some culture, and universities are great places to get that. You acquire culture by studying and understanding the world that humans have created, from different angles. It would be difficult to acquire this kind of knowledge if you do nothing but study programming.


9. Pick your niches and standout
The smaller the niche you choose, the greater your chance of being viewed as a standout in your field. It's very hard for a developer to become a standout in "PHP Web development". They're great, versatile, useful, but not noteworthy. One developer who knows how to work with these technologies, feels they are easily replaceable because there are so many out there with a comparable skill set. These areas are too broad for you to easily standout from the pack. If, on the other hand, you become known for a niche, like Xamarin.Forms or JavaScript Visualisations you're much more likely to be valuable to those looking specifically for that skills set.


10. Age of Skills
Information is the specific knowledge that you need to solve problems. Skills represent the ability to implement solutions using your knowledge.
In a world where most of the knowledge and tools are virtually free, what makes the difference? The skills, of course. We are no longer a knowledge-based society, we are a skills-based society. There was a time when almost all university degrees guaranteed a good job. Now this is no longer the case. Nobody cares about what you know. People care about what you can do. They pay you to do things, not to know things.


Teach yourself programming in 10 years.
Researchers have shown it takes about ten years (or 10 000 hours) to develop expertise in a field.
The solution is reflective practice: it's not enough to repeat the same things over and over again, but challenging yourself with a task that exceeds your current ability, to try it, to analyze its performances during and after, and to correct all error. Then repeat. And repeat again. It seems there are no real shortcuts. Learning through reading is good. But getting your hands dirty in practice is better. The best type of learning is learning by doing.
Personally, small projects and prototypes actually helped me improve. But there are still interesting things to master, therefore let's keep learning.

Tags: , , ,

Education | English | Technical

10 Ans De Programmation

by necemon 24. December 2016 04:04


J'ai commencé la programmation quand j'étais au lycée. On nous apprenait, entre autres, Pascal et HTML. Entre temps, pendant les vacances d'eté, je prenais des cours de programmation dans un institut NTIC. C'est là bas que j'ai appris Visual Basic et la conception de logiciels et de bases de données (A ce temps là, on utilisait MERISE (Méthode d'Etude et de Réalisation Informatique pour les Systèmes d'Entreprise)). Un jour, j'ai pu obtenir le CD d'installation de Visual Basic, donc je l'ai installé sur mon PC et j'ai commencé à pratiquer tout seul, avec des bouquins.
Mais, ce n'est qu'après le bac que j'ai commencé à apprendre et à appliquer C# presque à plein temps pendant les études supérieures, et c'est ça que je considere comme mon véritable début en programmation et ingénierie logicielle.

J'ai appris quelques leçons au cours de la dernière décennie, et je me suis dit que je prendrais un moment pour recueillir mes réflexions sur ces sujets. Il m'a fallu environ dix ans et beaucoup d'expérimentation pour assimiler certaines de ces choses.


1. Apprendre un langage de programmation, c'est la partie la plus facile: attention aux plateformes
Prenons C# par exemple. Apprendre le langage C# n'est pas difficile. Si tu as déjà une bonne compréhension des fondamentaux de langues informatiques, et si tu as un peu d'expérience dans d'autres langues orientées objet, tu peux devenir un programmeur C# compétent en quelques jours, du moins en ce qui concerne le langage en lui-même. Cependant, le vrai prix à payer de l'apprentissage n'est pas dans le langage, c'est dans la plateforme. Pour développer avec C# sur .NET, tu dois connaître:
   - le framework .NET
   - une ou plusieurs technologies .NET telles que ASP.NET ou WPF
   - et l'environnement de développement Visual Studio.
Le temps requis pour devenir compétent dans le développement sous .NET se mesure généralement en mois, même pour un développeur expérimenté. Apprendre une plateforme est toujours plus coûteux que d'apprendre un langage spécifique, donc choisir la plateforme est la décision la plus cruciale.
L'apprentissage a toujours un coût et ce coût est l'un des facteurs clés à prendre en considération lors du choix de la technologie que tu souhaites apprendre. Le coût réel de l'apprentissage est dans le temps, l'apprentissage prend toujours du temps. Puisque tu n'as pas le temps de tout apprendre, il est important de penser stratégiquement à ce que tu veux apprendre. Et puisque les langages sont faciles, c'est surtout aux plateformes qu'il faut faire attention : les technologies associées au langage, les outils de developpement et de deploiement, les systèmes d'exploitation, et autres infrastructures.


2. Je répète, apprendre un langage de programmation est la partie la plus facile: à la rencontre des concepts fondamentaux de l'ingénierie logicielle
La syntaxe en elle-même, les mots que tu utilises lorsque tu utilises le langage sont relativement simples et tu peux les apprendre facilement. Cependant, c'est loin d'être suffisant pour produire du code de qualité, qui implique souvent des principes OOP, TDD, BDD et SOLID, des tests unitaires, des patrons de conception et d'autres concepts techniques qui dépassent le cadre de cet article. Enfin, bref.


3. En fait, écrire du code n'est qu'une (petite) partie du travail
Un ingénieur logiciel est souvent impliqué dans la recherche technologique, la configuration d'outils et de projets, les tâches d'administration et de deploiement, les procédures de débogage et d'essai, la documentation et la dette technique (correction et refactorisation du code existant). De plus, il doit réfléchir à des solutions et concevoir des systèmes: parfois, le travail le plus important se fait pendant qu'on est loin du clavier.


4. Recettes éprouvées et efficaces : les vieilles techniques ennuyeuses sont parfois les meilleures.
Ce n'est pas vraiment "vieux contre nouveau", ni même "cool vs ennuyeux", mais plutôt la technique avec laquelle tu as le plus d'expérience. Comme disait l'autre, je ne compte pas sur le codeur qui a pratiqué 1000 technologies une seule fois mais sur celui qui a pratiqué la technologie adéquate 1000 fois. Si l'objectif est de construire un truc de manière aussi effective et rapide que possible, ce serait plus productif d'utiliser les technologies que tu maitrises le mieux.
Par exemple, un de mes contacts se fait 25 000 $ par mois avec un SaaS qu'il a construit avec une combinaison ennuyeuse : ASP.NET + SQL Server + Angular 1, parce que c'est ce qu'il connaissait. Il l'héberge sur Windows, parce qu'il sait comment rendre Windows rapide et sécurisé. Il a réussi parce qu'il consacre tout son temps à construire des fonctionalités que ses clients réclament, plutôt que d'apprendre les technologies les plus en vogue.
Il est important de se rendre compte que le tapis roulant de la technologie ne s'arrête jamais, il y a toujours de nouvelles choses à apprendre. En fait, un nouveau framework JavaScript est probablement en train d'être lancé pendant que tu es en train de lire cet article. Les technologies de pointe les plus populaires aujourd'hui n'existaient même pas lorsque je débutais (EF Code First, Xamarin, ASP.NET Core, Razor), ce qui nous conduit aux 2 points qui suivent.


5. Concentre-toi sur les technologies durables
La seule constante dans le monde, c'est le changement. La gestion du temps et des actions est une compétence importante chez les développeurs, en particulier, parce que nous sommes sur un tapis roulant technologique qui ne cesse de bouger, voire d'accélérer.
Par exemple, les technologies Web qui étaient populaires vers l'an 2000 (Flash, ASP Classic et Java Applets) deviennent quasiment obsolètes et de moins en moins professionalisantes. Aujourd'hui, on parle de ASP.NET Core, SignalR, Angular2, React et VueJS. Aucune de ses technologies n'existaient en l'an 2000, et ces nouvelles technologies seront probablement obsolètes d'ici 10 ans.
Qu'est ce qui n'a pas vraiment change' ? Les fondamentaux de langages tels que C++/C#, leurs implementations d'algorithmes et leurs principes sont toujours aussi pertinents sur plusieurs dizaines d'années. Si tu maitrises les bases d'un système stable, tu pourrais mieux t'adapter au changement, tu pourrais l'apprécier et t'en servir pour évoluer.


6. Équilibre entre exploration et exploitation
L'exploration consiste à apprendre de nouvelles choses, à étudier de nouvelles techniques, à lire des livres, à regarder des tutoriels, à pratiquer et à améliorer ses compétences. L'exploitation, au contraire, consiste à tirer parti de ce que nous savons déjà pour régler de vrais problèmes. Il s'agit de penser créativement à des façons d'utiliser les connaissances que nous avons déjà pour créer de la valeur pour les autres.
Donc, oui, ces deux tâches sont à la fois nécessaires et importantes. Le risque, c'est d'être trop fixé sur l'une ou l'autre de ces activités.
Trop d'exploration, et tu ne pourras jamais atteindre un niveau d'expertise utile dans une technologie donnée. Il y a un coût d'opportunité énorme avec cette sorte d'apprentissage léger, puisque, bien que ça t'élargisse l'esprit, le temps que ca nécessite implique que tu perfectionnes moins les compétences que tu as déjà acquises.
En revanche, une trop grande exploitation peut t'empêcher d'évoluer dans les nouvelles technologies, et peut limiter tes opportunités d'emploi.


7. C'est facile d'être excellent. C'est difficile d'être constant.
C'est facile d'être excellent pendant 2 minutes. C'est difficile de l'être constamment, chaque jour.
Quand tu es habité par une bonne idée pour un nouveau projet, tu ressens une grande envie de commencer la recherche, le design et la programmation. Tu as hâte de transformer ton idée en quelque chose de réel et tu deviens super productif. Mais le problème est que cette motivation se fane avec le temps.
Oui, c'est marrant et c'est facile d'avoir de nouvelles idées et de commencer à y travailler. Mais ensuite, il y a les efforts à fournir, les ajustements, le lancement, la maintenance, les corrections, les améliorations, etc. Sur plusieurs mois. C'est là que ça devient dur. C'est dur de rester concentré sur une même idée, sur un même projet pendant des mois et des années. Ça demande beaucoup de discipline.
C'est facile d'être excellent. C'est difficile d'être constant.


8. Diversifie tes compétences
Ne sois pas seulement un programmeur, devient un Expert Qui Programme, un expert dans un autre domaine pertinent dont tu es passionné. Tu peux être un entrepreneur, un chef de projet, un scientifique en Big Data, un chercheur, un spécialiste de la sécurité, etc.
Si tu es un Expert Qui Programme, en plus de pouvoir programmer (peut-être à temps plein), tu as également une crédibilité supplémentaire qui est liée à d'autres domaines, au dela de l'ingénierie logicielle.
D'où l'importance de poursuivre des études supérieures. Si tu vas à l'Université ou en Grande École alors que tu sais déjà programmer, tu n'apprendras probablement pas grand-chose à propos de la programmation. Mais ça ne veut pas dire que tu ne devrais pas aller dans ces écoles. Tu auras besoin d'une certaine culture, et les universités sont d'excellents endroits pour l'obtenir. Tu acquiers la culture en étudiant et en comprenant le monde que les humains ont créé, sous différents angles. Ce serait difficile d'acquérir ce genre de connaissances si tu ne fais rien d'autre qu'étudier la programmation.


9. Choisis des niches pour te démarquer
Plus la niche est petite, plus tu es perçu comme un agent exceptionel dans ton domaine. Par exemple, il est très difficile pour des développeurs de se démarquer avec un titre tel que "Développeur Web PHP". Ils sont compétents, polyvalents, utiles, mais pas remarquables. Ils se sentent facilement remplaçables parce qu'il y en a tellement, avec un ensemble de compétences comparables. Le domaine est trop large pour que tu puisses te démarquer facilement du lot. Si, par contre, tu deviens reconnu dans une niche, comme Xamarins.Forms ou Visualisations JavaScript, tu serais beaucoup plus apte à te distinguer par ceux qui recherchent spécifiquement ces compétences.


10. L'âge des Compétences
L'information est la connaissance spécifique dont tu as besoin pour résoudre des problèmes. Les compétences représentent la capacité de mettre en œuvre des solutions en utilisant tes connaissances.
Dans un monde où la plupart des connaissances et des outils sont quasiment gratuits, qu'est-ce qui fait la difference ? C'est la compétence, bien évidemment. Nous ne sommes plus une société fondée sur le savoir, nous sommes une société axée sur les compétences. Il fut un temps où presque tous les diplômes universitaires garantissaient un bon travail. Maintenant, ce n'est plus le cas. On s'en fiche de ce que tu sais. On s'intéresse à ce que tu sais FAIRE. On te paye pour faire des choses, pas pour connaître les choses.


Apprendre à programmer en 10 ans.
Selon plusieurs recherches, il il faut environ 10 ans (ou 10 000 heures) pour développer une expertise.
La solution, c'est la pratique réfléchie : il ne suffit pas de refaire les mêmes choses encore et encore, mais plutôt de se défier avec une tâche qui dépasse sa capacité actuelle, l'essayer, analyser ses performances pendant et après, et corriger toute erreur. Ensuite, répéter. Et recommencer. Il semble qu'il n'y ait pas vraiment de raccourcis. L'apprentissage par la lecture, c'est bien. Mettre la main à la pâte, c'est mieux. Le meilleur type d'apprentissage est l'apprentissage par la pratique.
Personnellement, les petits projets perso et les prototypes m'ont effectivement aidé à m'améliorer. Mais il y a encore beaucoup de choses intéressantes à maitriser donc continuons d'apprendre.

Tags: , , ,

Education | Francais | Technical

Top 8 Tricks with Xamarin Programming

by necemon 6. November 2016 08:42


If you don't know what Xamarin is, may I suggest that you start by reading my introductory notes before proceeding with this ?

For those in the now, let's get into it without further ado :


Xamarin Forms 
Xamarin.Forms is a cross-platform UI toolkit that allows developers to easily create native user interface layouts that can be shared across Android, iOS, and Windows Phone. You can build native UIs for iOS, Android and Windows from a single, shared C# codebase.This means that applications can share a large portion of their user interface code and still retain the native look and feel of the target platform.
Xamarin.Forms allows for rapid prototyping of applications that can evolve over time to complex applications. Because Xamarin.Forms applications are native applications, they don't have the limitations of other toolkits such as browser sandboxing, limited APIs, or poor performance. Applications written using Xamarin.Forms are able to utilize any of the API’s or features of the underlying platform, such as (but not limited to) CoreMotion, PassKit, and StoreKit on iOS; NFC and Google Play Services on Android; and Tiles on Windows. In addition, it's possible to create applications that will have parts of their user interface created with Xamarin.Forms while other parts are created using the native UI toolkit.


Custom Renderers
Xamarin.Forms user interfaces are rendered using the native controls of the target platform, allowing Xamarin.Forms applications to retain the appropriate look and feel for each platform. Custom Renderers let developers override this process to customize the appearance and behavior of Xamarin.Forms controls on each platform.
Custom renderers provide a powerful approach for customizing the appearance and behavior of Xamarin.Forms controls. They can be used for small styling changes or sophisticated platform-specific layout and behavior customization. This article provides an introduction to custom renderers, and outlines the process for creating a custom renderer. Xamarin.Forms Pages, Layouts and Controls present a common API to describe cross-platform mobile user interfaces. Each page, layout, and control is rendered differently on each platform, using a Renderer class that in turn creates a native control (corresponding to the Xamarin.Forms representation), arranges it on the screen, and adds the behavior specified in the shared code.


Most applications have some requirement to save data on the device locally. Unless the amount of data is trivially small, this usually requires a database and a data layer in the application to manage database access.
SQLite is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. SQLite is the most widely deployed database in the world with more applications than we can count, including several high-profile projects.
iOS and Android both have the SQLite database engine "built in" and access to store and retrieve data is simplified by Xamarin’s platform.


ACR User Dialogs
A cross platform library that allows you to call for standard user dialogs from a shared/portable library : Actionsheets, alerts, confirmations, loading, login, progress, prompt, etc.


Xamarin Forms Labs is a open source project that aims to provide a powerful and cross platform set of controls and helpers tailored to work with Xamarin Forms : AutoCompleteView, Calendar Control, ImageButton, HyperLinkLabel, etc.


UI Sleuth
A Xamarin.Forms debugging tool and UI inspector. If you’ve ever made a web site, it’s similar to Microsoft’s F12 tools or Chrome Developer Tools. You can use it to efficiently track down layout issues, prototype a new design, and remotely control a device.


GenyMotion Android Emulator
Fast and easy Android emulator. The most powerful Android emulator for app developers and testers. It's available for free or premium on Windows, Mac and Linux.


Remoted iOS Simulator
To test and debug iOS apps within Visual Studio on Windows. Most modern Windows computers have touch screens, and the remote iOS simulator lets you touch the simulator window to test user interactions in your iOS app. This includes pinching, swiping, and multiple-finger touch gestures - things that previously could only be easily tested on physical devices.

Tags: , , ,

English | Technical

8 instruments efficaces pour programmeurs Xamarin

by necemon 6. November 2016 07:54


Si tu ne sais pas ce qu'est Xamarin, puis-je te suggérer de commencer par lire mon article d'introduction avant de continuer avec celui-ci ?

Pour ceux qui savent, entrons dans le vif du sujet :

Xamarin Forms 
Xamarin.Forms est une librairie de code qui permet de construire des interfaces utilisateur (UI) natives qui peuvent être partagées sur Android, iOS et Windows Phone, complètement en C#, a partir d'une base de code C# unique et partagée. Les interfaces utilisateur sont affichees à l'aide des contrôles natifs de la plate-forme cible, ce qui permet aux applications Xamarin.Forms de conserver l'aspect et la sensation appropriés pour chaque plate-forme. Cela signifie que les applications peuvent partager une grande partie de leur code d'interface utilisateur et conservent toujours l'apparence native de la plate-forme cible.
Xamarin.Forms permet un prototypage rapide des applications qui peuvent évoluer au fil du temps vers des applications complexes. Étant donné que les applications Xamarin.Forms sont des applications natives, il est possible de créer des applications qui auront certaines parties de leur interface utilisateur créées avec Xamarin.Forms tandis que d'autres parties seraient créées à l'aide d'outils UI natifs.


Les Custom Renderers
Comme on le voyait précédemment, les interfaces utilisateur Xamarin.Forms sont rendues à l'aide des contrôles natifs de la plate-forme cible, ce qui permet aux applications Xamarin.Forms de conserver l'apparence appropriée pour chaque plate-forme. Les Custom Renderers permettent aux développeurs d'annuler ce processus pour personnaliser l'apparence et le comportement des contrôles Xamarin.Forms sur chaque plate-forme. Ils peuvent être utilisés pour de petits changements de style ou pour une personnalisation sophistiquée de la mise en page et du comportement spécifique à la plate-forme.


La plupart des applications ont besoin d'enregistrer des données sur le périphérique, localement. À moins que la quantité de données ne soit trivialement petite, il faut généralement une base de données et une couche de données dans l'application pour gérer l'accès à la base de données. SQLite est un moteur de base de données relationnelle accessible par le langage SQL.
Contrairement aux serveurs de bases de données traditionnels, comme MySQL ou SQL Server, sa particularité est de ne pas reproduire le schéma habituel client-serveur mais d'être directement intégrée aux programmes. Facile d’usage, l'intégralité de la base de données (déclarations, tables, index et données) est stockée dans un fichier indépendant sur la plateforme.
SQLite est le moteur de base de données le plus utilisé au monde, grâce à son utilisation dans de nombreux logiciels grand public comme Firefox, Skype, dans certains produits d'Apple et d'Adobe. De par son extrême légèreté (moins de 300 Ko), il est également très populaire sur la plupart des smartphones modernes.
IOS et Android ont tous deux le moteur de base de données SQLite "intégré" et l'accès aux données est simplifié par la plateforme Xamarin.


Boites de Dialogue ACR
Une bibliothèque multiplate-forme qui te permet d'invoquer les boites de dialogue habituelles à partir d'une bibliothèque partagée et portable: feuilles d'actions, alertes, confirmations, demandes de confirmation, chargement, connexion, progression, etc.


Un projet open source qui vise à fournir un ensemble puissant et multiplate-forme de contrôleurs et d'assistants ajustés pour travailler avec Xamarin Forms: suggestions semi-automatiques, controles de Calendrier, boutons-images, étiquettes d'hyperliens, etc.


UI Sleuth
Un outil de débogage et un inspecteur d'interface utilisateur. Si tu as déjà fait un site Web, c'est tres similaire aux outils F12 de Microsoft Edge ou aux outils de développement de Google Chrome. Tu peux l'utiliser pour analyser efficacement les problèmes de mise en page, pour prototyper un nouveau design, ou encore contrôler un appareil à distance.


Émulateur Android GenyMotion
Si tu veux tester Android, mais sans un smartphone Android, il y a plusieurs solutions disponibles comme l’émulateur officiel d’Android qui vient avec le SDK (kit de développeur), le populaire Bluestacks App Player qui est plus axé sur l’exécution des applications Android sur PC. Cependant, l’émulateur du SDK est connu pour être très lent tandis que Bluestacks est limité en fonctionnalités si tu veux faire du developpement. Si tu cherches un émulateur Android plus rapide et complet pour ordinateur, Genymotion est ce qu’il te faut.
Genymotion est un emulateur pour Android, rapide et facile, pour tester le fonctionnement et les performances d'applications. C'est l'émulateur Android le plus puissant pour les testeurs et les développeurs d'applications. Conçu par la start-up française Genymobile, Genymotion permet l'émulation d'un grand nombre de marques et de modèles de tablettes et de smartphones. S'appuyant sur des technologies de virtualisation grâce à VirtualBox, il crée une machine virtuelle qui émule en temps réel Android sur ton PC Windows, Mac ou Linux. il est ainsi possible d'émuler différents terminaux comme la gamme des Samsung Galaxy Note, Google Nexus, HTC One ou encore les tablettes Sony Xperia. GenyMotion offre la possibilité de paramétrer facilement la résolution d’écran, le type de connexion Internet, le GPS, le statut de la batterie (simuler un déchargement), etc.


Simulateur iOS à distance
Pour tester et déboguer les applications iOS dans Visual Studio sous Windows. La plupart des ordinateurs Windows modernes ont des écrans tactiles et le simulateur iOS distant vous permet de toucher la fenêtre du simulateur pour tester les interactions de l'utilisateur dans votre application iOS. Cela inclut les pincements, les glissements et les gestes tactiles avec plusieurs doigts, des choses qui, auparavant, ne pouvaient être testées que sur iPhone, directement.

Tags: , , ,

Francais | Technical

Just think about it : 50 ideas to live by

by necemon 28. October 2016 08:30


1. Just Keep Moving Forward.


2. K.I.S.S. (Keep It Simple & Smart) and H.U.G. (Have Utilitarian Goals)


3. The best way to meet opportunities is probably to start by being an opportunity yourself.


4. The best way to reach your goals is to help those you need to reach theirs.


5. Motivation is what gets you started, habit is what keeps you going.


6. Yesterday you said tomorrow. Just do it.


7. The main thing is to keep the main thing the main thing.


8. There’s a difference between knowing the path and walking the path.


9. This is 10% luck, 20% skill, 15% concentrated power of will, 5% pleasure, 50% pain.


10. The more you sweat in training, the less you bleed in battle. The harder you are on yourself, the easier life will be on you.


11. Fake it until you make it.


12. It is our choices that show what we truly are, far more than our abilities.


13. The World looks very different, when you push yourself every second you've got.


14. If you are looking to surpass your current self, then be prepared to sacrifice part of who you are and don't look back.


15. That which is important is rarely urgent, and that which is urgent is rarely important.


16. Parkinson’s Law: Work expands to fill the time available for its completion.


17. A journey of a thousand miles just starts with one step.


18. The difference between theory and practice is smaller in theory than in practice.


19. Those who try to do something and fail are infinitely better than those who try to do nothing and succeed.


20. No matter how many mistakes you make or how slow you progress. You’re still way ahead of everyone who isn’t trying.


21. A ship in harbor is safe, but that is not what ships are built for


22. Your Dream is not what you see in sleep, it's the thing which doesn't let you sleep.


23. There's no traffic jam when going the extra mile


24. Vague Plans Provoke Vague Results. You have to name it before you can claim it.


25. When nothing is sure, everything is possible.


26. If you're going through hell, keep going.


27. People don't care how much you know until they know how much you care about them.


28. To be realistic is to find rational ways for wonderful achievements


29. If you want to look successful, maybe you should actually become successful. Nothing looks more successful than success.


30. You're basically unstoppable if you've got the right model and you execute like crazy.


31. Life remains the same until the pain of remaining the same becomes greater than the pain of change.


32. Extreme Programming is based on 5 core values : Communication, Simplicity, Feedback, Courage and Respect.


33. Success is a lousy teacher. It seduces smart people into thinking they can't lose. When everything is alright, you feel invincible, that's when things get dangerous. Everything is alright... Until it's not.


34. You are not lost, you are locationally challenged.


35. Plan your work and work your plan.


36. The way out is through.


37. Murphy's Law

Anything that can go wrong, will go wrong (at the worst possible time)

Most ideas look great on paper. But by the time events go from A all the way through the alphabet to Z, you see who rules when it comes to getting something from the theoritical stage to the practical stage : it's Murphy's Law.

No battle plan survives first contact with the enemy. Hope for the best, be ready for the worst.


38. Pareto's Law : for many events, about 80% of the effects come from 20% of the causes.


39. Information is difference that makes a difference.


40. The guy who is controlling his emotions is going to win.


41. If you don't write your own rules, someone else will. And the results won't be pleasant.


42. Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.


43. Hesitation is always easy, rarely useful.


44. First, just start. Start somewhere. Start anywhere. Start with SomeOne. Start with AnyOne. Start with no one. Start with Something. Start with Anything. Start with Nothing. Just start.


45. Worrying is a waste of time; it doesn't change anything, it just messes with your mind and steals your happiness.


46. Time stops for no one and I have no time to stop.


47. Knowing others is intelligence; knowing yourself is true wisdom. Mastering others is strength; mastering yourself is true power.


48. The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.


49. When you compete against everyone else, no one wants to help you. When you compete against yourself, everyone wants to help you.


50. All of us can certainly afford to know more than we already do. Information has never been more abundant or more easily accessible.

Tags: ,

English | Winning

50 idées à méditer et à appliquer

by necemon 28. October 2016 07:10


1. Le rêve à temps plus que partiel, le travail à temps carrément complet.


2. Dans la vie, il y a très peu de choses qui sont bénéfiques a court terme et aussi bénéfiques a long terme. La plupart des choses qui sont bénéfiques a long terme ont un coût a court terme.


3. La meilleure façon de rencontrer des opportunités, c’est d’en être une soi-même.


4. La meilleure façon pour atteindre ses objectifs, c'est d'aider ceux dont on a besoin à atteindre les leurs.


5. La motivation est ce qui te permet de commencer, l'habitude est ce qui te permet de continuer.


6. Hier, tu as dit demain. #JustDoIt


7. L'essentiel, c'est que l'essentiel reste essentiel.


8. Il y a une différence entre connaître le chemin et parcourir le chemin.


9. C'est 10% de chance, 20% de compétence, 15% de volonte' concentrée, 5% de plaisir et 50% de douleur.


10. Quand la vie est dure, soit dur(e) avec elle.


11. Que rien ne te trouble. Que rien ne t'épouvante. Tout passe. La patience obtient tout.


12. Ce sont nos choix, beaucoup plus que nos aptitudes, qui déterminent qui nous sommes vraiment.


13. Le Monde prend un air très différent quand tu te donnes à fond, à chaque seconde que tu as.


14. Si tu cherches à te surpasser, alors prépare toi à sacrifier une partie de qui tu es et ne regarde pas en arrière.


15. Ce qui est important est rarement urgent et ce qui est urgent rarement important.


16. Loi de Parkinson:  le travail tend a s’étaler de façon à occuper le temps disponible pour son achèvement.


17. Un voyage de mille kilomètres commence avec un pas.


18. La différence entre théorie et pratique est plus petite en théorie qu'en pratique.


19. Celui qui avance, même s'il ne suit pas une route toute tracée, ira toujours plus loin que celui qui n'ose pas partir.


20. Peu importe combien d'erreurs tu fais et a quelle lenteur tu progresses, tu es toujours en avance sur ceux qui n'essaient pas.


21. Un bateau au quai est en sécurité, mais ce n'est pas a ça que servent les bateaux.


22. Ton Rêve, ce n'est pas ce que tu vois quand tu dors, c'est la chose qui t'empêche de dormir.


23. Tu peux faire ce que tu veux, mais à chaque moment de ton existence, tu ne peux vouloir qu'une chose précise et une seule.


24. Les projets vagues entraînent des résultats vagues


25. Quand rien n'est sur, tout est possible.


26. Plus le combat est dur, plus la victoire est belle.


27. Les gens ne se soucient pas de combien tu sais jusqu'à ce qu'ils sachent combien tu te soucies d'eux.


28. Être réaliste, c'est trouver des moyens rationnels pour atteindre des résultats fantastiques


29. Un homme est fait de choix et de circonstances. Personne n'a de pouvoir sur les circonstances, mais chacun en a sur ses choix.


30. Au cœur de la difficulté se trouve l'opportunité.


31. La vie reste pareille jusqu'à ce que la douleur ressentie en restant pareille devient plus pénible que la douleur requise pour changer.


32. L'eXtreme Programming repose sur cinq valeurs fondamentales : la Communication, la Simplicité, le Feedback, le Courage et le Respect.


33. Le succès est un mauvais professeur, il pousse les gens intelligents à croire qu'ils sont infaillibles. Quand tout va très bien, tu te sens invincible et l’échec c’est pour les autres. C’est là que ça devient dangereux.


34. L'homme sage apprend de ses erreurs. L'homme encore plus sage apprend des erreurs des autres.


35. La plus parfaite éducation consiste à habituer le disciple à se passer de maître.


36. Qui va loin voyage léger.


37. Loi de Murphy : tout ce qui peut mal se passer, va mal se passer (au pire moment possible)
La plupart des idées sont belles sur papier. Mais du moment où les évènements passent de A, à travers tout l'alphabet jusqu'à Z, tu peux voir qui décide quand il s'agit de passer du niveau théorique au niveau pratique : c'est la Loi de Murphy.
Aucune stratégie ne survit au premier contact avec l'ennemi. Espère le meilleur, mais soit prêt(e) à affronter le pire.


38. Loi de Pareto : pour de nombreux évènements, environ 80% des effets sont le produit de 20% des causes


39. L'information, c'est la différence qui fait une différence.


40. Le mec qui contrôle ses émotions va gagner.


41. Si tu n'écris pas tes propres règles, quelqu'un d'autre le fera. Et les résultats ne seront pas agréables.


42. Loi de Hofstadter : les choses prennent toujours plus de temps que prévu, même en tenant compte de la Loi de Hofstadter.


43. L'hésitation est toujours facile, rarement utile.


44. La meilleure façon de prédire l'avenir, c'est de le créer.


45. Les plus grandes batailles que tu auras à affronter dans la vie, ce sera contre toi-même, à l’intérieur. Pas contre autrui.


46. Le temps ne s'arrête pour personne et je n'ai pas le temps de m'arrêter.


47. Connaître les autres, c'est l'intelligence; se connaître soi-même, c'est ça la vraie sagesse. Contrôler les autres, c'est la force; se contrôler soi-même, c'est ça le vrai pouvoir.


48. Le plus grand ennemi de la connaissance, ce n'est pas l'ignorance, c'est l'illusion d'avoir la connaissance


49. Quand tu rivalises avec les autres, personne ne veut t'aider. Quand tu rivalises avec toi même, tout le monde veut t'aider.


50. Chacun d'entre nous peut certainement se permettre d'en apprendre plus. L'information n'a jamais été aussi abondante et accessible.

Tags: ,

Francais | Winning

The Xamarin Revolution

by necemon 23. September 2016 22:02


What is Xamarin ?
Xamarin is a free, cross-platform development tool. It solves dilemmas many developers face when developing cross-platform apps: separate coding languages and UI paradigms. With Xamarin, you can use C# for iOS, Android, and Universal Windows apps. And with Xamarin Forms, interface design for all three platforms can be accomplished within its XAML-based framework.

The Xamarin platform consists of a number of elements that allow you to develop applications for iOS and Android:
C# language – Allows you to use a familiar syntax and sophisticated features like Generics, Linq and the Parallel Task Library.
Mono .NET framework – Provides a cross-platform implementation of the extensive features in Microsoft’s .NET framework.
Compiler – Depending on the platform, produces a native app (eg. iOS) or an integrated .NET application and runtime (eg. Android). The compiler also performs many optimizations for mobile deployment such as linking away un-used code.
IDE tools – The Xamarin Studio IDE and the Xamarin in Visual Studio allow you to create, build and deploy Xamarin projects.

In addition, because the underlying language is C# with the .NET framework, projects can be structured to share code that can also be deployed to Windows Phone.

Here is some documentation I would recommend if you consider getting started with Xamarin :

Developer Home Page

Cross Platform Guide 

10 minutes introduction for Android 

Android Guide 

10 minutes introduction for iOS 

iOS Guide 

The Xamarin Show 

Xamarin University 

Pluralsight courses 

Lynda Courses 

Tags: , , ,

Education | English | Technical

La Révolution Xamarin

by necemon 23. September 2016 05:51


Xamarin, c'est quoi ?
Xamarin est une technologie qui te permet de concevoir des applications natives pour différentes plateformes mobiles telles que Android, iOS ou encore Windows Phone et cela en n'utilisant qu'un seul langage de programmation, le C#.
Il ne vous sera donc pas nécessaire d'avoir les bases en Java, utilisé habituellement pour développer sous Android ou encore en Objective C pour iOS, en revanche il vous sera très utile de connaître globalement le fonctionnement de chacune des plateformes visées (cycle de vie de l’application, directives générales, etc.)

Ici, Xamarin prend le contre-pied des autres technologies multiplateforme. Le développeur commence par créer une base de code commune. Elle contient notamment la logique métier, le stockage en base de données, les appels réseaux, les éléments d’interface communs. Ce projet peut être facilement encadré par des tests unitaires car son code est indépendant de tout système spécifique. Ensuite, un projet est crée par plateforme cible. Il contient l’interface graphique, la navigation et les composants propres à chaque SDK. Ainsi, on peut tirer parti des spécificités propres à Android ou iOS sans réduire l’expérience utilisateur au plus petit commun dénominateur.

Avec l'avènement des technologies mobiles et des smartphones, Xamarin devient de plus en plus populaire, surtout depuis sa mise à disposition gratuite dans Visual Studio. Voici quelques docs que je peux recommender pour ceux qui pensent à s'y mettre :

Ce e-book gratuit et complet en Français 

Xamarin sur MSDN 


Plus de ressources en anglais

Tags: , , ,

Education | Francais | Technical



I am Necemon Yai. I am a .NET developer and a digital artist. Let's keep in touch via Twitter, LinkedIn or Facebook.

Je suis Necemon Yai. Je suis un développeur .NET et un artiste numérique. Restons en contact via Twitter, LinkedIn ou Facebook.