Ich war doch auch mal Benutzer oder?

Seit einer Woche habe ich Schwierigkeiten mit ReSharper. Ein Bug verhindert, dass ich wie gewohnt arbeiten kann.

Bei jedem zweiten Speichern erkennt ReSharper meine CodeBehind-Dateien nicht mehr und so werden mir lauter Fehler von ReSharper im Markup angezeigt. Getoppt wird es dadurch, dass ReSharper am Tag so an die 5 bis 7-mal ganz aussteigt und ich Visual Studio neustarten darf.

Eines meiner wichtigstes Werkzeug lässt mich im Stich und ich spüre einfach wie die sonst üblichen Abläufe etwas holpriger ablaufen als ich es gewohnt bin. Am Anfang war ich richtig genervt aber seit Dienstag ist es verflogen. Der Bug besteht zwar weiterhin, aber ich konnte ihm etwas Positives abgewinnen. (Der Bug ist im nächsten Update behoben, aber das ist es nicht)

Dieser Bug hatte es tatsächlich geschafft mich auf die andere Seite zu drängen. Weg vom Ufer der Entwickler hinüber zur Seite der Benutzer, die täglich mit einer Anwendung ihren Job erledigen müssen. Einer Anwendung, die sie eigentlich dabei unterstützen soll den Job besser und produktiver zu erledigen und dabei genau das Gegenteil erreicht. Sei es durch einen Bug, schlechte Performance oder durch einen ungünstig platzierten Button.

Darum werde ich mich in den nächsten Wochen bemühen Punkte zu finden, die ich ohne viel Code hätte besser machen können. Ich werde auch zeigen, dass selbst die Großen es oft nicht besser machen/wissen.

Was erhoffe ich mir davon? Eine Menge Spaß und vielleicht nehmen sich ein paar von euch an mir auch ein Beispiel und zeigen mir etwas, was ich selbst noch nicht bedacht habe. Am Ende bleibt auf jeden Fall eine Liste von Punkten, die mir hilft meine Anwendungen besser zu machen.

Windows Phone 7 oder IPhone für zukünftige Apps

Was kriegt man, wenn man einen .NET Entwickler nach Las Vegas schickt? Richtig einen Handy-Entwickler. Um genau zu sein einen Windows Phone 7 – Entwickler.

Selbiges scheint wohl auch mit Gregor Biswanger geschehen zu sein. Er besuchte am 13.3 bis 17.3 die Mix10 in Las Vegas und schrieb in seinem Blog eine Zusammenfassung zum neuen Windows Phone 7.

Ich möchte die Chance heute nutzen und meine Meinung zum Thema abzugeben, welche Plattform für mich die Interessantere ist und warum. Auch möchte ich die Chance nutzen ein paar Fragen zu stellen auf die Gregor vielleicht in seinen nächsten Einsteiger  Blogeinträgen zur Windows Phone 7 Entwicklung eingehen mag.

Im Kampf der Plattformen gewinnen die Entwickler

Gut am IPhone fand ich, das durch den Hype um selbiges, die Entwicklung der Handys endlich in eine brauchbare Richtung geht. Eine Richtung, in der die Plattformen der Handys um die Entwickler werben müssen um zukünftig erfolgreich am Markt zu sein.  Ohne Apps ist ein IPhone nichts und selbiges wird wohl auch für Windows Phone 7 gelten.

Windows Phone 7 interessanter als Plattform weil…

Für mich ist aktuell das Windows Phone 7 interessanter, da ich keinen Mac besitze den ich für die IPhone Entwicklung brauchen würde. Des Weiteren ist für mich die Einstiegshürde einfacher, da ich in meiner gewohnten Umgebung bleiben kann. Konkret heißt das bei mir VS2010, C# und .NET sind mir schon bekannt. Was ich dazu noch lernen müsste wäre Silverlight und die Eigenheiten von der Plattform des Handys.

Wie würde das beim IPhone aussehen? Der Aufwand wäre höher. Ich müsste mich erst an das Betriebssystem gewöhnen von Apple. Dann an die Entwicklungsumgebung, an die Sprache Objective-C und auch an die Eigenheiten der Plattform IPhone. (Sicher schaffbar)

Der Aufwand beim Windows Phone 7 ist daher für mich ähnlich hoch wie damals als ich Anfing mit der Entwicklung für Windows Mobile. Die Positive Erfahrung von damals motiviert natürlich zusätzlich es zu versuchen.

Von den Kosten, nehmen sich beide nicht viel. 99 Euro im Jahr, wenn ich meine Software verkaufen möchte über die Online-Plattformen. Vorteil bei Microsoft ist, dass ich für mein eigenes Handy eine Test-Lizenz bekomme und somit meine App auf meinen WP7 laufen würde ohne kosten (siehe Blogpost von Gregor). Beim IPhone bleibt ohne eine Mitgliedschaft im Dev-Club die Anwendung im Simulator gefangen.

Vertriebskonzepte eher unbrauchbar für mich?

Mich selbst schrecken die Konzepte des Vertriebs immer noch ab. Ich möchte Anwendungen schreiben die ein Problem von einem einzigen Kunden lösen. Solch eine Anwendung möchte ich nicht über eine Online-Plattform vertreiben bzw. ich möchte, dass sie nur einem Kunden zur Verfügung steht und der Rest der Welt nicht erfährt, dass es diese Anwendung gibt.

Was mich zu den Fragen bringt. Wird Microsoft eine Möglichkeit für Auftragsentwickler wie mich bieten meine Anwendungen auf die Handys meiner Kunden zu bringen ohne sie allen zugänglich machen zu müssen? Ist schon absehbar wie lange ich darauf warten muss?

Wird es auch möglich sein mit VS2010 Express Anwendungen zu schreiben für Windows Phone 7?

Im Ganzen sehe ich einer positiven Entwicklung entgegen und bin gespannt auf die ersten Blogeinträge von Gregor zum Thema Windows Phone 7.

Unglaublich…

Dieser Beitrag bezieht sich auf den Blogeintrag von Ralf Westphal und den dazugehörigen Artikel aus der dotnetpro 5/2010.

Heute würde lachen, wenn es nicht so traurig wäre.

Die Aussage, meine Arbeit lässt mir keine Zeit mich weiterzubilden (die ich früher selbst auch verwendet habe), ist eine Schutzbehauptung. Es liegt nicht an der Arbeit, die ich zu tun habe, sondern wie ich meine Arbeit gestalte. Richtig ist, dass mir keine Zeit extra freigestellt wird um mich Weiterzubilden.

Wenn man für ein Feature plant es mit xx zu Entwickeln (und xx kann hier für Architektur, Frameworks wie WCF oder Sprach-Features wie Linq stehen), dann plant man halt schon die Zeit für die Einarbeitung mit ein. Das ist eine Entscheidung, die ich selbst treffe und entscheide. Solche Entscheidungen diskutiert man nicht mit seinem Chef, schließlich bezahlt er mich dafür solche Entscheidungen selbständig zu treffen und mein Kunde erwartet das sowieso von mir.

Zeit hat man nicht (oder kriegt sie gar Geschenkt), Zeit nimmt man sich. Unbewusst machen das viele sicher aber dank Ralf bin ich bewusst dazu übergegangen mir Zeit zu nehmen.

Ganz ohne Daheim etwas zu machen geht es leider nicht. Wir tragen Verantwortung für den Erfolg oder Misserfolg eines Projekts. Wir müssen uns einen Überblick schaffen über die Möglichkeiten, welche uns unsere Werkzeuge bieten. Hierfür bieten sich Developer Groups, Bücher, Fachzeitschriften, Weblogs, Foren und Chats an.

Wer sagt, „ich habe keine Zeit daheim etwas zu lesen oder eine Group zu besuchen, weil ich Frau, Kind, Hund, Katze oder Maus habe“, sollte sich folgende Frage mal stellen. Haben die, die mir diese Angebote zur Verfügung stellen keine Frau, Kind, Hund, Katze oder Maus? Diese Leute müssen ein Vielfaches mehr Zeit investieren um euch diese Angebote zur Verfügung zu stellen und viele machen das ohne dafür Geld zu bekommen.

Gerade wer Familie hat sollte einen sehr guten Anreiz haben zu kämpfen wie ein Löwe!

Zum Glück hat Ralf nicht gefragt was alt+f4, f12, alt+f12, strg+h oder strg+g macht. Welche Funktion Resharper ausführt, wenn ich alt+page down drücke und und und. Wenn ein Entwickler sagt er hat keine Zeit muss er sich die Frage stellen lassen ob er sein Werkzeug überhaupt bedienen kann. Am Anfang ist es schwer (und nach jeden Urlaub sowieso ;-)) sich die ganzen Shortcuts zu merken aber irgendwann denkt man gar nicht mehr drüber nach.

Einen Fehler, den ich zum Beispiel immer gemacht habe war das ich bei der Verwendung von IntelliSense immer Tab gedrückt habe anstatt einfach das nächste Zeichen zu Tippen. Einen Tastendruck zu viel also bei JEDER Verwendung von IntelliSense.

Wie sah das aus?
Um folgendes zu schreiben this._auto = auto; bin ich immer wie folgt vorgegangen.
th<tab>._a<tab>=au<tab>; Heute tippe ich es so ein th._a=au;

Ich wurde darauf hingewiesen, weil ich mir die Zeit genommen habe während meiner Arbeitszeit meinen Kollegen zu bitten mit mir meinen Code anzuschauen. Ich war Mutig dafür wurde meine Firma und ich belohnt! Ich arbeite einen Tastendruck effektiver ohne meine Code-Qualität zu verschlechtern! Wie ein sechser im Lotto.

Sich das Tab abzugewöhnen war im Übrigen ein sehr harter Kampf… Heute führe ich einen ähnlichen Kampf mit der neuen Version von ReSharper.

Nun kann ich um eine Textbox die TbBorderTop heißt wie folgt ins IntelliSense hämmern. TBT oder nur Top. Schon hat IntelliSense TbBorderTop gefunden. Und so viel denken muss man dabei gar nicht wie man vermuten mag.

Mein Arbeitgeber muss von mir erwarten können, dass ich mein Werkzeug beherrsche! Ich bin kein Azubi mehr sondern ein ausgebildeter Software Entwickler.

Ralf und ich haben hier sicher nur die Spitze des Eisberges angesprochen. Ich bin mir zumindest Bewusst, dass ich noch einen weiten Weg habe die Grundlagen zu meistern und bin dankbar dafür, dass es Leute gibt die mich darauf hinweisen und mir helfen diese Wissenslücken mit Wissen zu füllen.

Ich verweise gerne auch noch auf meinen Artikel Entwickler entwickeln.

kick it on DotNetKicks.com

Var oder nicht var? Das ist hier die Frage!

Aus Bequemlichkeit habe ich diese Frage vor mir hergeschoben. Dies soll nun heute ein Ende haben.
Mit dieser Frage haben sich schon viele beschäftigt und ich ziehe nun mein Fazit zum Thema.

Aus Bequemlichkeit habe ich diese Frage vor mir hergeschoben. Dies soll nun heute ein Ende haben.
Mit dieser Frage haben sich schon viele beschäftigt und ich ziehe nun mein Fazit zum Thema.

Die Verwendung von var erspart Tipp-Arbeit
In der Verwendung sehe ich kaum Ersparnis von Tipparbeit. Entweder schreibe ich den Typ hin und kriege für meinen Variablennamen Vorschläge, die ich dann erweitere. Oder ich schreibe var und muss ohne diese Funktion leben.  Ich bevorzuge es den Typennamen meiner eigenen Typen in den Namen meiner Variablen mit zu geben.

Ob ich also schreibe
var customer = GetCustomer();

oder
Customer customer = GetCustomer();

bringt mir keinen Vorteil. Ich muss Customer schreiben ob ich will oder nicht. Variante 1. hat sogar noch den Nachteil, dass ich einen Schreibfehler einbauen könnte wie Custumer und würde es nicht merken.

Wo ich Zeit spare ist natürlich beim Schreiben von Dictionary<string, string> zum Beispiel. Vermutlich wäre das auch die Wahrheit, wenn ich keine Intellisense im Visual Studio verwenden würde. Nach dem Schlüsselwort new nimmt mir Visual Studio schon die Tipp-Arbeit des Typen in der Regel ab.

Fazit:
Var verschiebt nur die Tipp-Arbeit vom Anfang der Deklaration ans Ende der Deklaration. Das spart keine Zeit und kostet auch keine. Man muss bei ReSharper ohne Namensvorschläge leben.

Durch die Verwendung von var wird der Code besser lesbar
In der Regel hat man weniger zu lesen. Wird aber bei schlechter Benennung von Variablen regelmäßig im Lesen von Quellcode unterbrochen.

var  mwst = getMwst(); string? Int? Double?

Jetzt muss ich mit der Maus über meine Variable fahren und prüfen was gemeint ist. Leichter lesbar? Produktiv?  Ist das Beispiel wirklich zu weit hergeholt?

var count = 1239342232; int? oder long? Wichtig?

Hoffentlich ist es das nicht! Ich habe unter Umständen ein Zeichen Tipp Arbeit gespart!

Fazit:
Eine bessere Lesbarkeit wird erreicht bei Typen, die einen sehr langen Namen haben. In vielen Fällen muss jedoch auf var sogar verzichtet werden da es die Lesbarkeit erschwert.

Var oder nicht var?
Eigentlich wollte ich ja gemäßigt sein und var dort verwenden, wo es Sinn macht. Dieser Fall ist jedoch in vielen Fällen nicht gegeben bei mir. Jetzt könnte ich mir für die 5% der Fälle irgendwelche Regeln zu Recht legen. Diese müsste ich dann zwingend einhalten und deren Einhaltung überprüfen, was mir für den minimalen Vorteil einfach zu viel Aufwand ist.

Somit werde ich kein var verwenden.

Weitere Meinungen zum Thema:
Golo Rodo
Peter Bucher

The legendary Blackbox

Ich habe gerade etwas in den Bloggs gestöbert und den tollen Beitrag von Jürgen Gutsch gelesen zu Drittanbieter Komponenten. Ein Grund für mich in meiner alten Blogkiste zu kramen und einen alten Artikel von mir hervor zu ziehen.

12. Juni 2008 – The legendary Blackbox

Wäre es nicht schön, wenn wir eine Kiste hätten in die wir oben etwas rein stecken und unten kommt das gewünschte raus? Viele Probleme würde so eine Kiste lösen. Alltägliche, knifflige oder sogar scheinbar unlösbare. Wäre es dann überhaupt noch wichtig wie diese Kiste funktioniert solange sie es tut? Sie erleichtert unser leben also wieso sollte man sich nach dem Wie fragen? Alles nur Fantasien?

Nicht in der Welt der Entwickler, dort gibt es sie und sie gehören blackboxbereits jetzt schon zum Alltag. Die schwarzen Kisten. Man muss kein Mathematiker mehr sein um Texte sicher mit 128 Bit zu verschlüsseln. Klappe auf, Text rein, klappe zu und die Ausgabe in Empfang nehmen. Simpler geht es nicht mehr. Man muss im Grunde nicht mal mehr wissen was Verschlüsselung ist, man geht zum Regal nimmt die Blackbox, auf der Verschlüsselung drauf steht und schaut in der Anleitung was man oben rein stecken muss. Ich brauch wohl nicht erwähnen, dass es in diesem Regal Kisten für fast jedes Problem gibt und es immer mehr werden.

blackboxNun gut aber warum ist das mir ein Blogeintrag wert? Meiner Meinung nach wird das Blackbox-Phänomen zum Problem, weil sich immer weniger Leute nach dem Wie fragen und vor allem das Ergebnis kritisch sehen. Ist die Art und Weise überhaupt richtig, welche die schwarze Kiste benutzt um das Problem zu lösen oder gibt es eine bessere? Skrupellos wird es, wenn die Anleitung zu so einer Kiste nicht dabei liegt. Hält natürlich nicht davon ab diese Kisten zu verwenden. Schließlich lässt sich ja erahnen für was eine Kiste gut ist wenn dick „Frieden“ drauf steht. Das die schwarze Kiste dafür den ganzen Planeten in die Luft sprengt ist nur eine etwas andere Interpretation von Frieden. Der Bediener hätte vermutlich einen anderen Weg zur Lösung erwartet? Nun letztendlich zählt das Ergebnis oder nicht?

Welche Schlussfolgerung müssen wir leider daraus ziehen? Ich für meinen Teil übe mich im Verzicht was undokumentierte Kisten betrifft oft machen sie mehr Ärger als sie es Wert sind. Das Ergebnis werde ich nun wohl auch öfters hinter fragen genauso wie den Lösungsweg der Kiste. Gänzlich darauf verzichten wäre vermutlich heut zu Tage genauso Dumm wie undokumentierte Kisten zu verwenden. Ohne geht es heute nicht mehr. Das lustige ist eigentlich, wir glauben nur Blackboxen zu benutzen sind aber bei genauerer Betrachtung in einer riesigen gefangen.

SQL Server Express 2008 Installation verlangt Neustart nach Neustart?

Ich kam gestern auf die Idee auf meinen Rechner einen SQL-Server 2008 installieren zu wollen um etwas mit NHibernate zu spielen.  Meinen SQL-Server 2005 hätte ich zwar auch aktivieren können aber ich wollte den 2008 haben.

Leider wurde mein Vorhaben durch den Installer gebremst. Der Installer forderte mich auf den PC neu zu starten.

Hier ging es nicht mehr weiter

 Etwas verwundert kam ich der bitte nach und war eigentlich fest überzeugt nichts installiert zu haben seit dem ich den PC hochgefahren hatte… Nach dem Neustart also wieder den Setup gestartet und siehe da der Installer forderte mich auf meinen PC neu zu starten.  Das Spiel wiederholten wir dann viermal und kamen so richtig nicht weiter. Feierband die Runde hatte der Installer gewonnen, dachte ich mir und ging ins Bett.

Heute habe ich es wieder versucht und es ging immer noch nicht. Nach etwas forschen im Internet bin ich dann auf die Lösung gestoßen.

Er hat Recht! Es gibt nämlich einen Registry Key, welchen er überprüft ob etwas drin steht. Steht dort etwas drin dann verweigert er die Installation. Nachdem ich den Key gesäubert habe konnte ich den Server normal installieren.

Man startet regedit.exe und Navigiert sich durch den Baum zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager. Im Knoten Session Manager wählt man dann den Key PendingFileRenameOperations aus und löscht seinen Inhalt. Danach startet man die Installation und kann endlich mit dem Installieren beginnen.

Ich muss nicht erwähnen, dass ich schon mächtig angepisst war. Aber weder Microsoft, Windows 7 oder der Installer können etwas dafür.

Quelle: http://www.ralf-brandenburg.de/archive/2009/01/30/sql-server-2008—neustart-erforderlich.aspx

Hab ich schon erwähnt, dass ich mir eine Logitech Cam gekauft habe vor kurzem? *hust*

Fly high!

Müsste ich die Entwickler in zwei Gruppen aufteilen würde ich es vermutlich wie folgt machen.

Es gibt eine Sorte, die hoch oben am Himmel fliegt angetrieben durch ihre Leidenschaft für das was sie tun und wie sie es tun. Sie kennen keine Grenzen und der Himmel scheint nicht hoch genug zu sein.

Die zweite Sorte wären wohl die Entwickler, welche den anderen nur beim Fliegen zusehen oder schon gar nicht mehr hoch schauen. Entweder sind sie unfreiwillig in den Job geraten oder ihre Flamme ist erloschen über die Zeit.

Ich möchte keinen einen Vorwurf machen, weder denen die manchmal übertreiben oder jenen die etwas Wertvolles verloren haben. An manchen Tagen fliege ich und an anderen wiederrum steh ich nur unten und strecke meine Hände zum Himmel aus aber es klappt nicht so richtig mit dem fliegen. Es fehlt einfach der Antrieb an diesen Tagen.

Zum Glück für mich ist Leidenschaft etwas Ansteckendes. Man kann nicht in einen Raum sitzen mit Leuten, die voller Leidenschaft brennen ohne sich selbst zu entzünden. Darum besuche ich gerne Events oder Vorträge in unserem Bereich. Man kommt raus und ist total Motiviert. Alle belasteten Probleme fallen von einen ab und schon schwebt man von allein.

Das ist echt ein tolles Gefühl! Danke Community, dass ihr für mich da seid wenn es mir an Schwung und Auftrieb fehlt.