Search

Freitag, 22. Dezember 2017

End of 2017 but still problems with surefire plugin

Well i am once again amazed how some maven tools are unstable especially if you think that we nearing the end of 2017 , but still maven surefire plugin isn't stable for Junit 5!
If you like me  and you want spent little time in xml configuration here you go 100% working xml file with support of Junit 5 and tested with surefire plugin!

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.learningDesign</groupId>
<artifactId>ExampleOfLearningDesignPattern</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Exercise1 of Design patterns</name>
<description>Exercise1 of Design patterns</description>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<packaging>jar</packaging>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>4.12.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.0.1</version>
</dependency>
</dependencies>
<configuration>
<argLine>${argLine}</argLine>
</configuration>
</plugin>
</plugins>
</build>
</project>

Mittwoch, 13. Dezember 2017

Eclipse workaround for small size of icons!!!

Well finally i found a way to increase the size of icons in eclipse!



It was so simple just edit eclipse.ini  and add the line -Dswt.autoScale=150 after -vmargs !!!
I wonder why in the world Eclipse developers don't think about some plugin or feature which give you a optimal solution (some tool) for that kind of problem, well this works for me!


Sonntag, 10. Dezember 2017

First example of working Cobol program.


I am very puzzled how people programmed back in 60-70, it was probably very difficult task, anyway due to demand and luck of Cobol programmers on German market, i must achieve mastery with this language.
Here what i use to master Cobol jungle:

OpenCobolIDE - very good IDE for writing Cobol programs.
Cygwin and compiled Cobol ver. 2.2 just for debugging purposes!

The online tutorials which i do is from Lynda, well in this case they are the best , Pluralsight was too short and too complicated to master, but i done it anyway!!
So for you consideration here is a code which wrote, yes i can post it on github but i am kind of lazy today!


I like how IDE highlight the Cobol code , very good.
Syntax of this language is very strict you must watch out on which column you write and the length of variables is limited.
I don't like the way how datatype in Cobol declared it pushes a programmer to learn this cryptic and obscure Cobol format , which i already hate.
Here is the whole logic of the program, Cobol allows you to use operators (+,*,= and etc) but you must write first the word COMPUTE, in my opinion it doesn't make any sense why the Cobol authors done such bad job?? (rhetorical question)


If you asked me , what i would prefer if i had only choice between C and Cobol, well i would pick C language without any further thinking , just because C syntax is  a lot better then Cobol!!!!
We have huge problem developers, there are tons of Cobol code for enterprise critical applications, i don't care what you boss say to you , but i think developers who work with Cobol commercial projects must push forward and port Cobol code into other language like for example Java and C# (.Net) . 
Sure it's not so easy and i understand that there a lot of datatype inconsistency between Cobol and other languages, but we are responsible for our code like Uncle Bob said, clean your mess and do care about the code which you write or refactor! 
Another question arise , how can i test this code , is there any unit type testing possible?`I feel people who have a lot of experience with Cobol can test the code in their brains, but i think i must found a way to unit test this programming language even if take my all free time, this is very important if i wish to stay true to the clean code philosophy.
I will further learn "funny" things about Cobol language and will master it, but i will be very liberal of maintaining the Cobol Code. This means i am advocate of change , if somebody has a fear about loosing job and don't wish to change the current state of Cobol projects, then i will be the person on to which management can fire upon, i don't care really! My concern would be a quality of code, understanding the client request and ability to refactor the code in any cases, this my personal goal for the next year :-) 

Sonntag, 3. Dezember 2017

Cobol ist wieder im Trend.

Cobol ist sehr  alte Programmiersprache , welche bei den IBM Mainframe's für die Business Anwendungen Millionenfach verwendet wird.
Einer meiner Kunden hat mich sogar gebeten und aufgefordert diese Sprache zu lernen, na ja wenn man dafür gut bezahlt wird Ich bin immer bei solche Situationen dafür und bin sehr Abenteuerlich :)
Hier ist ein sehr kleines Beispiel von Cobol:

       IDENTIFICATION DIVISION.
            PROGRAM-ID. HALLOWELT.
            PROCEDURE DIVISION.
            DISPLAY "Hallo Welt".
            STOP RUN.

       END PROGRAM HALLOWELT.

Nach meinem Geschmack ist die Sprache sehr Zähe und bei komplexen Logik kaum so einfach zu verstehen, wenn Ich die Wahl hätte Ich für  C Sprache eindeutig entschieden da es einfach besser wenn man die beiden Programmiersprachen vergleich kann.
Ich kann mir kaum die Komplexität bei den älteren Cobol Anwendung vorstellen, eins ist aber sicher jemand muss diese Sprache verstehen und dann später in der Lage sein auf neue Programmiersprache zu portieren, wobei , dass ist auch ein Problem da in Cobol keine Lokal Scope gibt!

Man muss auch auf Typsicherheit bei Cobol aufpassen (ist dass überhaupt  möglich ?).
Für mich die Frage wird sich während des Lernens ergeben (ca. 6 Monate in Teilzeit).
Zu der Cobol Frage , kommt die Frage ob man die Mainframe von heutzutage kennen braucht, ich würde sagen Ja , heutzutage an der Uni man kommt so selten zu den Mainframes Technologie .
Mein Appel an die Firmen: sorgen Sie für die Nachwuchs in dem Sie mit der Unis über bestimmte Technologien austauschen, es kann doch nicht wahr sein , dass die wirklich gute Fachleute ins Rente geschickt werden ohne vorher das Wissen an das zukünftige Generation vermittelt wurde! Ich sage mal es kostet deutlich mehr ohne Mentor sich das Wissen anzueignen als mit jemand der schon alle Strickfälle von der Programmiersprache gesehen hat.

Cobol ist im Trend , Java weiterhin auch im Trend, aber es gilt bei mir nach wie vor Kunde ist ein König! 

Sonntag, 15. Oktober 2017

It is time to switch from Glassfish Server to Payara!!!

Hi folks just some random weekend experiments with Arquillian + Payara, it is well know framework which give you a possibility to remote test EJBs !
Screenshot from Unittest result! (Eclipse IDE)






The code which i worked with, wasn't my i got from Github ,
Previously i used embedded container , which wasn't  good and not always worked as i expected (especially if we speaking about transactions in EJB) . Testing EJB in embedded container was always a lot of problem and headache.
Anyway i pretty happy about my experiment, and sure it's well overdue to switch from glassfish 4.1 to Payara or Glassfish 5, but really if i think about quality i rather pick Payara, because of the support 24/7 and quality of manuals and  with  compatibility with other frameworks.
For folks who trying to run Arquillian test against Glassfish version 4.1.2 just forget it , it wont work, i spent almost one day to figure it out, it make a lot fun, but for my customers probably not so much fun, because they must decide to swtich for another application server or the project fails, i certain there initial cost would be much more if they don't switch on time and yeah is heavy task , because some client run a lot of services on those old servers, well this is "normal" work.......
IT's time to switch to PAYARA!!!!!!!!

Donnerstag, 3. August 2017

Warum Testgetriebene Entwicklung Goldwert ist?

Warum Testgetrieben Entwicklung Goldwert ist?

Der Anlass für diesen Blog war der Abschluss von sehr erfolgreichen JEE Projekt (auf Basis JEE 7 Technologie) . In sehr kurze Zeit habe Ich JSF, EJB, JPA  Programmieraufgaben realisiert!
Aus Erfahrung weiss Ich, dass die Enterprise Projekte sind meistens keine „Sprint“ Projekte,  in den meisten Fällen handelt es sich um „Marathon“ Strecken, trotzdem durch meine Arbeitsweise und den Streben nach Qualität und sehr methodischen Vorgehen bei der Realisierung von Projektteilen wurde es zum Erfolg geführt, wobei viele in den Projekt an den Erfolgt nicht geglaubt haben!


TDD : Test driven development

So ein Unsinn, Ich stelle immer wieder fest, dass Ich mit den Vorurteilen zu kämpfen habe: TDD ist zu langsam , TDD führt nicht zum Ziel , TDD wer soll diese Tests pflegen, TDD schütz nicht von eigene Dummheit, TDD viel zu teur.
Was zeigt aber meiner Erfahrung, ich kann leider hier keine Einzelheiten meines letzten Projektes  public veröffentlichen, aber man kann JSF(Managed Beans) , JPA und JMS; EJB  Testgetrieben entwickeln!
Was spricht dafür?
Kommerzielle Software, muss sehr oft angepasst werden,  und es gibt viele Gruppe von Programmierer , die behaupten nur durch sauberes Code und einhalten von Architektur kann man sich „retten“, ich persönlich vertrete die andere Sicht dieses Spektrums. 
Nach meiner Meinung, sich auf eine bestimmte Architektur zu verlassen kann zu einer der größten Fehler überhaupt führen!
Die Testgetriebene Entwicklung gibt ein sauberes Code und gibt mir meistens die Garantie, dass jeder Zeit meine Software an die chaotischen Kundenansprüchen angepasst werden kann, so dass die ganze Geschäftslogik nicht verletzt und oder die Datenbank Persistenz  und Redundanz eingehalten werden kann.
Aber die Deadlines? 
Die Deadlines müssen eingehalten werden das stimmt, aber nicht um jeden Preis, der Quellcode soll immer wieder besser werden, und nicht schlechter.
Nach ein Paar Jahren aktiver mitarbeit, bin Ich zum folgender Meinung gekommen:
für mich in so vielen  Projekten war es immer eine Mutprobe, sich quer zu stellen und zu sagen warum ein Projekt soll länger laufen, einige Auftraggeber waren ehrlich darüber schockiert und verärgert,aber andere haben Verständnis dafür gezeigt und mir die nötige Zeit für den Abschluss des Projektes immer gegeben!

Bei den diejenigen wo keine Verständnis gibt, dort war auch für mich das Projektende und Ich habe keine Vorauszahlung dafür verlangt oder dafür das Geld erhalten habe, also beide Parteien blieben somit zufrieden!

Für die Zukunft aber, Ich möchte nur mit diejenige Firmen arbeiten, wo meine Arbeitsweise von Anfang an akzeptiert wird, sonst lohnt sich aus meiner Sicht der Aufwand nicht, da Ich für die schlechte Quellcode nicht verantwortlich oder zuständig weiterhin bleiben will

Ich strebe für Maß guter Dinge, es ist wirklich mir wichtig die Kundenanforderungen möglichst vollständig und konform zu der Kundenansprüchen zu erfüllen, aber nicht in der Art und Weise wie es sich die meisten Kunden vorstellen, die Programmierer sind keine Roboter wir machen auch Fehler, aber unsere Fehler haben leider meistens katastrophale Folgen und TDD ist ein Vorbeugungsmittel um diese negative "Auswirkungen" zu vermeiden.


Sonntag, 23. Juli 2017

Weiterbildung bei Comcave ?

Weiterbildung bei Comcave ?
Diese Frage muss sich jeder, der bei Comcave anfangen will, stellen.
Denn die Weiterbildung bei Comcave kostet was. Wird die Frage mit JA beantwortet, würde ich dazu raten,  diesen Blog unbedingt zu lesen und danach sich die Frage erneut zu stellen.
Wer meine Einträge hier liest, weiß auch, dass es mir bei den Themen um das wesentliche geht. Als technisch veranlagter Mensch rede ich nur ungern wortreich drumherum, sondern komme meistens schnell zu den Fakten.
Nun, nach mehreren Monaten bei Comcave und fachlich erfolgreichen Leistungen, die zwar meiner eigenen “Lernarbeit“  zu verdanken sind jedoch während der Weiterbildung erbracht worden waren, kann ich einiges über  die “Ausbildung“ bei Comcave berichten.
Das, was Sie hier lesen, betrifft nur den Standort in Nürnberg. Über  die anderen Standorte kann ich hier nicht berichten, weil ich dort  nie  persönlich anwesend war und deshalb nur vermuten kann, wie es dort gewesen.

Wie ist Comcave aufgebaut?
Comcave hat überall  in Deutschland Standorte. Die Comcave Räumlichkeiten bestehen aus Büros, in welchen man unabhängig von der Weiterbildungsmaßnahme zwei Bildschirme und einen leistungsstarken PC mit einer guter Bandbreite Verbindung bekommt. In jedem Büro gibt es jeweils einen Laserdrucker  und für jeden Arbeitsplatz bekommt man eigene Kopfhörer.
Die Kommunikation mit  Dozenten läuft über Skype. Die Dozenten selbst befinden sich meistens in unterschiedlichen EU Ländern oder aber auch in Deutschland, manche unterrichten  vor Ort, bei Comcave Standorten, es hängt tatsächlich  vom jeweiligen Dozenten und der Weiterbildungsmaßnahme ab. Die Anzahl der Teilnehmer (in virtuellen Zimmern in Skype) kann bis zu 25 Studenten sein,   in meinem Fall es war nur 10 Teilnehmer.
Für die Kommunikation mit Comcave  “Studenten“ wird Skype for Business verwendet und es gibt die Möglichkeit, komplett von zu Hause aus zu lernen (darüber  erzähle Ich später).
Nun passt alles und man kann ja wunderbar lernen, nicht wahr?!
Man hat  doch die Dozenten mit Erfahrung, ausreichende Unterrichtsmaterialen und andere Kursteilnehmer, die einander motivieren und unterstützen.

Leider stimmt das nicht so ganz. Der Dozent, wenn man glückt hat, stellt alle Unterrichtsfolien schon vor Kursbeginn zur Verfügung. In meinem Kurs hat der Dozent die Folien  während des Frontalunterrichts vorbereitet!
Ich würde hier keinem die Schuld zuweisen, aber eigentlich erwartet man, dass die Unterrichtsmaterialen im Voraus schon vorbereitet und ausgeteilt werden und man sich  im Unterricht auf die vermittelnden Inhalte konzentrieren kann.
Besonders störend und schlimm waren die ständigen Nebengeräusche aus dem Raum, wo der Dozent während des Unterrichts saß. Dies wurde von mir und anderen Teilnehmer mit Qualitätsmanagement  von Comcave  mehrmals thematisiert und besprochen.
Leider hat das Qualitätsmanagement  von Comcave  meiner Meinung nach  nichts unternommen, um den Dozenten dazu zu bewegen, seinen Skype-Unterricht   aus besseren Räumen zu halten.

Das nächste Problem  bei Comcave ist, dass die Dozenten meistens überlastet sind, die meisten führen mehrere Kurse parallel. Warum ist es schlecht, würden Sie mich fragen?
Nun, wenn ein Dozent vergisst, die Aufgaben mit der Lerngruppe rechtzeitig zu besprechen, dann aber schon zum neuen Stoff eilt, auch wenn der vorherige Stoff noch nicht ganz und im besten Fall nur teilweise von Kursteilnehmern verstanden wurde, ist es alles andere als effektiver Lernprozess. Man bekommt genügend Unterrichtsmaterialen und die Zeit, diese durchzuarbeiten, aber dann  frage ich mich, welche Rolle eigentlich der Dozent dabei spielt?  Jemand, der die Aufgaben an die Kursteilnehmer verteilt? Den Großteil der Zeit bei Comcave  habe Ich mit Selbststudium verbracht.

Von Anfang an gibt es bei Comcave-Kursen genügend Unterrichtsmaterialien. Ich habe ein sehr gutes Buch von Comcave bekommen, aber warum mein Dozent in so vielen Monaten darauf nicht einmal eingegangen ist, wird für mich ein Rätsel bleiben.

Gruppenarbeit? Klar müssen die Kursteilnehmer untereinander kommunizieren. Das habe ich auch  versucht, zu organisieren. Aber da es von Comcave-Seite anscheinend keine Interesse besteht, die Leute in die Gruppenarbeit zu motivieren, hat die Gruppenarbeit auch nicht funktioniert. Viele Teilnehmer wollen nur Frontalunterricht und für die Gruppenarbeit ist die Interesse minimal groß. In meinen Augen ist es ein Nachteil, wenn die Leute an einem Ziel zusammen nicht arbeiten können.

Durch meine Erfahrungen als Freiberufler und mein Bildungshintergrund (IHK Ausbildung zum Fachinformatiker Anwendungsentwickler, Fernstudent Informatik), besitze Ich bereits die nötige Erfahrung, mir  neues Wissen problemlos und eigenständig anzueignen.
Die zwei Zertifikate von Oracle als Java Programmierer, die ich während der Weiterbildung bei Comcave erfolgreich gemacht habe, sind ein deutliches Beweis von meiner Fertigkeiten und Fähigkeiten als Java Entwickler. Ich denke in diesem Zusammenhang, ich war eher  eine Ausnahme da einige Comcave Studenten und die anderen Kursteilnehmer keinen Erfolg in ihrem Lernen erzielt haben.

An dieser Stelle möchte ich auch die Problematik  der Lernform  von zuhause aus ansprechen,  die Comcave anbietet. Es gibt Skype Kommunikationsprobleme. Comcave verwendet alte Server Infrastruktur für privates Skype Netz und deshalb hat man ständige Probleme mit der Verbindung von außen ins Skype Netz von Comcave  reinzukommen (besonders schlimm wenn jemand IPV6 verwendet).

Schlimmer kann es nicht werden?
Doch! Die Räumlichkeiten bei Comcave, Standort  Nürnberg, besitzen keine Klimaanlage, da wurde sehr “gut“ gespart. Damit man sich es vorstellen kann: Sommer 2017, Temperatur in Büros   30 Grad aufwärts, in manchen sogar über 30 Grad. Nach zwei Wochen Hitze hat Comcave schließlich  mit Wasser an Leute austeilen reagiert.
Meiner Meinung nach war die Reaktion der Weiterbildungstätte sehr verzögert. Comcave Studenten waren durch die enorme Hitze in Lernräumen unkonzentriert, manche haben geschlafen, somit zwei Wochen  an  Lernstoffaufnahme sicher verloren. Meine Lösung in der Situation war es,  den eigenen Ventilator von zuhause mitzubringen und zumindest an meinem Arbeitsplatz dank der kühlen Temperaturen effizient und produktiv  zu lernen. Comcave hat mir gegenüber bestätigt, dass  die entsprechenden Klimaanlagen  bereits gekauft worden waren, das  genaue Lieferdatum stand aber nicht fest.
Prüfungen
Wie verlaufen die Prüfungen bei Comcave?
Sehr unterschiedlich.  Bei mir war es die Oracle Zertifizierung und die Interne Klausuren.
Man muss sich  eigenständig für die Oracle Zertifizierung anmelden und dann 20 Minuten vor der Prüfung pünktlich erscheinen. Wenn man Glück hat, hat  der Comcave Admin die Anmeldung schnell verbucht.  So wie es bei meiner letzten Prüfung war, musste ich  15 Minuten warten bis Comcave den Pearsonvue für die Prüfung bezahlt hat!

Fazit:  Wenn Sie was vernünftig bei Comcave lernen wollen, dann stellen Sie sich auf selbstständiges  Lernen ein. Die eigentliche Kursbetreung empfehle Ich als ergänzende Lernmaßnahme zu betrachten, da die nur ein Bruchteil Ihres zukünftigen Erfolges ist.

Ich würde die Weiterbildung bei Comcave keinem empfehlen, vor allem wenn Sie  bis jetzt durch  Schule, Universität, Berufsausbildung  “geführt“ zum Lernerfolgt wurden und keine Erfahrung mit Selbststudium  gemacht haben.
Lernen bei Comcave ist harte selbständige Arbeit, die mit chaotischen und oft widersprüchlichen Umständen verbunden ist.

Mit diesem Beitrag möchte ich bewirken, dass Comcave als Anbieter der Weiterbildung sich über die Problemen klar wird und so schnell wie möglich, sich im Vermitteln der Kursinhalte und in der Qualität verbessert.

Fazit: Nach meiner Meinung: die aktuelle Geschäftsmodell von Comcave  basiert kaum auf die Organisation des erfolgreichen Lernprozesses und verfehlt somit  seine eigene Ziele. Ich denke nicht, dass Comcave, in der aktuellen Form,  auf Dauer  sich als profitables Unternehmen im Sektor der Weiterbildung  erweisen wird, weil die Konkurrenz entwickelt sich ständig und bietet deutlich bessere und flexible Lerngänge (ein Beispiel IBB AG ist.

Mittwoch, 10. Mai 2017

Gründe für den Fachkräftemangel in Deutschland!!

Den Anlass für diesen Beitrag war ein Gespräch mit einem Geschäftsführer von einer großen IT Unternehmen hier in Bayern.
Es geht um die Problematik des Fachkräftemangels und fehlenden Senior Entwickler,
Ich würde aus Datenschutzgründen den Geschäftsführer mit Jürgen Kennzeichen, hier ist kurze Ausschnitt meines Gespräches:
Zitat Anfang:
Jürgen: Herr Orlovsky, viele Dank für Ihre Unterstützung bei den Projekt XY, dank Ihnen wurden unsere Prozesse stark verbessert und optimiert.
Ich: Es freut mich zu hören, jedoch muss Ich Ihnen mitteilen, wenn Sie Ihren Betrieb aufrechterhalten wollen, dann müssen Sie die Option in Erwägung ziehen vielen unerfahrenen Mitarbeiter einstellen und denen, dass nötige Fachwissen und Erfahrung beibringen damit Ihren Unternehmen weiterhin gut geht.
Ich: Sie suchen gerade nach Senior’s mir es auch bewusst, dass es um sehr anspruchsvolle Facharbeit sich handelt, welche von den passenden Facharbeiter mit besondere Skills erledigt werden muss. Gleichzeitig ich habe mit Ihren CTO gesprochen und er meinte, man kann die schwierigsten Arbeiten in mehrere Aufgaben trennen, so dass diese auch von weniger erfahrenen Entwickler zu meistern sind.
Jürgen: Ich weiß Ihre Meinung zu schätzen, Herr Orlovsky , aber denken Sie an unsere Kosten, Sie kennen bereits unsere Kunden , welche sehr Anspruchsvoll und Penibel sind und lassen uns keinen Pfenning locker, wenn einer unsere Projekte in Verzug kommt , dann sind wir dran , wenn wir unerfahrene Leute einstellen , dann wird es definitiv zum Nachteil für das Betrieb sein und außerdem wir haben dafür keine weiter Kapazitäten.
Ich: Herr Jürgen, Ich habe darüber nachgedacht und hier ist mein Vorschlag; Sie sprechen mit Ihren Kunden über die Situation und machen es deutlich , dass Ihre Kapazitäten bereits erreicht wurden und jetzt damit es Reibungslos verläuft brauchen Sie die begrenzte Mittel um weitere Anforderungen zu implementieren.
Jürgen: Nein, dass kann Ich nicht, der Kunde wird in so einer Situation zur Konkurrenz wechseln!
Ich: Ich habe auch darüber nachgedacht, dann sagen Sie zu der Kunde, wir haben immer die Qualitätsprodukte abgeliefert und Ihnen muss kein weiteres Zweifel aufkommen, dass es auch in der Zukunft so passieren wird, aber die Zeiten ändern sich , es kann nicht sein , dass bei gleicher Leistung deutlich mehr rauskommt als es vorher war.
Jürgen: Wissen Sie Herr Orlovsky Ich glaube Sie nehmen sich viel zu viel Gedanke darüber.
Ich: Herr Jürgen , Ich respektiere Ihre Meinung und auch Ihre Entscheidungen, ein Veränderung in Kunden Beziehungen ist immer ein Risiko , aber nach meiner Meinung und Erfahrungen so ein Geschäftsprozess wird auf die Dauer nicht halten können , Sie wissen ich bin unterwegs auch in anderen Unternehmen und viele Seniors dort können sich ein Wechsel, nur dann vorstellen wenn der Gehalt deutlich grösser als die Angebote welche Sie bis jetzt an die entsprechende Kandidaten unterbreiten haben.
Zitat Ende
Was will Ich damit sagen, es gibt in Deutschland ein verstecktes Problem die über den Fachkräftemangel hinaus geht, zu viele Geschäftsführer haben den Angst von Versagen und das ist ein der Gründe warum nur wenige lassen sich auf Risiko bei der Einstellung von neuen Mitarbeiter ein und die meisten auf Nummer sicher gehen wollen. Wie ist Ihre Meinung dazu?

Freitag, 21. April 2017

Was muss man lernen um einen Senior Entwickler zu werden?

Hi all!
Es gibt wieder ein Anlass ein neues Beitrag zu schreiben.

Ich wurde von einen Festangestellten Junior Mitarbeiter gefragt was muss man lernen um einen Senior Entwickler zu werden?
Nun Ich selber kein Senior bin
, Ich bin nach meiner Erfahrungen eher ein Middle Entwickler, aber aus meinen großen Bekanntenkreis habe Ich ein Senior darüber gefragt.
Hier habe Ich folgender Antwort darauf bekommen:
Anfang von der Zitat:„Ein Senior hat nicht nur das Wissen, sondern auch die erforderliche Projekterfahrungen (mind. 5 Jahre Projekterfahrung als Entwickler) aus unterschiedlichen Domänen, er weiß genau welchen Programmierstil und Entwurfsmuster für die unterschiedliche Probleme anzuwenden.
Hier sind die 11 wichtigsten Kriterien von einem Senior Entwickler:

Kriterium 1: kennt sich sehr gut mit Themen wie z.B „Reflection“ und auch Multithreading aus, er weiss genau in welchen Fällen diese Technologien anzuwenden und auch die Fälle wo man es nicht verwenden darf.

Kriterium 2: lernt immer neuen Programmiertechniken/Sprachen/Frameworks und Interessiert sich für Domänenkomplexität und hat meistens eine Fachgerechte und Konkrete Vorstellung über den gesamten Prozess der Entwicklung. Ein Senior besitzt sehr gute Vorstellung über die Architektur der entwickelten Software.

Kriterium 3: kennt die Fallstricken von unterschiedlichsten Programmiersprachen, Datenbanken, Frameworks, Versionsverwaltungssystemen und auch Anwendungsservern.

Kriterium 4: kann bei der Produktivsystem in der Echtzeit die Anpassungen an den Quellcode durchführen und sofort es auf den entsprechenden Produktivserver  einsetzen. Wichtiges Nebeneffekt von dieser Arbeit, der  Endbenutzer muss darüber nichts mitbekommen, kein Abstürz, kein langsames nachladen der Webseite.

Kriterium 5: kann für ein veraltetes Framework eine Programmierlösung abliefern, so dass altes Framework in neuer Umgebung ohne irgendwelche Schwierigkeiten laufen kann.

Kriterium 6: dadurch , dass man mit  unterschiedlichen Softwarearchitekturen bereits gearbeitet hat,  weiss ein Senior genau wie Speicher von den Prozessor adressiert wird, bei C++ und C ist es sehr wichtig auch bei Java wenn man dort die Aufrufe von native Code hat. Generell ein Senior hat sehr gründliche Kenntnisse über die Hardware (CPU Caches, Bus, Chipsatz etc)

Kriterium 7: Weißt genau welche die Features für ein Endprodukt von Bedeutung sind, besonders in der Anfangsphase, wo noch vieles unklar ist. 

Kriterium 8: Besitzt durch seine Erfahrungen die Fähigkeiten die Komplexe Problemdomänen in kleine lösbare Design Patterns zu teilen und auch ein Spielraum lassen, so dass die Endlösung für weitere und neue Anforderungen zu implementieren ist.

Kriterium 9: Ein Senior wirkt meistens  als Katalysator, der neigt eine Mittellösung zu wählen, es kommt natürlich darauf ob die anderen Teilnehmer der Gruppe dafür überzeugt werden können, es gibt manchmal sehr starke Streitigkeiten, aber ein Senior ist immer Sachkundig und Fachkundig, so dass seine Meinung mehr der Realität entspricht, letztendlich es geht um die Verantwortung, der Senior  ist meistens sich bewusst welche Probleme entstehen können , falls die eine oder andere von den Benutzer verursachte Interaktion mit der  Anwendung zum einem schwerwiegenden Bug führen kann.

Kriterium 10: Sich selbst und andere zu bilden, dieses Kriterium sehr selten zu sehen, aber ein Senior muss sein Wissen ständig verbessern und an die anderen Teilnehmer in seinen Team weitergeben.

Kriterium 11: in den meisten Fällen hört die Geschäftsleitung und Management auf die Meinung von einem  Senior wenn es sich z.B um die Einstellung von neuen Mitarbeiter und  oder Herausgabe von den fertiggestellten Produkt sich handelt.

Diese Liste von Kriterien ist nicht komplett und nicht vollständig, sollte aber die allgemeine Vorstellung geben welche Kriterien man sich im laufe der Projektarbeit eineignen muss um sich ein Senior Titel verdienen zu können, man muss auch folgendes beachten: dass ein Senior in einer Firma bei einer anderen Firma nicht automatisch als Senior eingestuft werden kann, da demjenigen das Wissen über die in dieser Firma eingesetzten Technologie und interne Geschäftsabläufe fehlt. “Zitat Ende

Nochmals vielen Dank an meinen Bekannten für diesen Einblick in die Kriterien von Seniorität!!!

Fazit: um einen Senior zu werden man muss viel Projektarbeit leisten, dazu gehört wie angegeben viel , sehr viel Zeit in das Lernen von Neuartigen Technologien investieren zu können und auch es entsprechend in der Praxis nachweisen können!

Sonntag, 16. April 2017

Why I personally don’t like to use C++ in business projects

Why I personally don’t like to use C++ in business projects:
I decided to write two  articles, because one day i was asked by one of my clients why i refuse to work on projects where C++ mixed with Java, second reason I want to capture my thought pattern after reading book  Bjarne Stroustrup Programming principles and practice using C++ (1634 Pages book!).
Before you read further, please notice this is my personal subjective opinion, I am Oracle certified Java developer after all, so consider this as last warning. This article consist technical stuff only, read my previous blog about business side.
Now, I will give there some good points about why I prefer to work with Java rather then with C++:
First: C++ has a huge inheritance problem, so called deadly diamond problem:
So we have 3 Classes Father, Mother , Son, Daughter, Son and Daughter both inherit the constructor of Father and Mother , personally I find very nasty the way of class declaration in separate header files, C++ separates declarations (header files) and definitions (in cpp files) (not my taste!) 

Look at this “hell”:

//contents of Daughter.h
#ifndef DAUGHTER_H
#define DAUGHTER_H
#include "Mother.h"
#include "Father.h"
class Daughter : public Father, public Mother
{
    public:
        //destructor
        ~Daughter();
};
#endif

//contents of Daughter.cpp
#include <iostream>
#include <string>
#include "std_lib_facilities.h"
#include "Mother.h"
#include "Father.h"
#include "Daughter.h"

Daughter::~Daughter(){
                cout << "goddbye from daughter!!!";
}

//contents of Son.h
#ifndef SON_H
#define SON_H
#include "Mother.h"
#include "Father.h"
class Son: public Father, public Mother
{
    public:
        //destructor
                              ~Son();
};


//contents of Son.cpp
#include "std_lib_facilities.h"
#include "Mother.h"
#include "Father.h"
#include "Son.h"

Son::~Son(){
                cout << "Goodbye from son!";
}

//contents of Mother.h 
#ifndef MOTHER_H
#define MOTHER_H

class Mother
{
public:
               Mother();
               //destructor
               ~Mother();
};


//contents of Mother.cpp
#include "std_lib_facilities.h"
#include "Mother.h"
Mother::Mother() {         cout << "Hello from Mother!!!";
}
Mother::~Mother(){
               cout << "Goodbye from father!!! ";
};

//contents of Father.h
#ifndef FATHER_H
#define FATHER_H
class Father
{
    public:
                              Father();
                              //destructor
                              ~Father();
};

//contents of Father.cpp
#include "std_lib_facilities.h"
#include "Father.h"

Father::Father(){
               cout << "Hello from Father!!!";
}
Father::~Father(){
               cout << "Goodbye from father!!! ";


}

//contents of TESTOOP.cpp
#include "std_lib_facilities.h"
#include "Father.h"
#include "Mother.h"
#include "Son.h"
#include "Daughter.h"

int main()
{
               cout << "Call to Father -> ";
    Father fatherObj;
               cout << endl;
               cout << "Call to Mother -> ";
               Mother motherObj;
               cout << endl;
               cout << "Son inhert: ";
               Son sonObj;
               cout << endl;
               cout << "Daughter inhert: ";
               Daughter daughterObj;
               getchar();
               return 0;
}
Second: C++ allows to use pointers (pointer madness) see the following example:
In this example you can read what the code doing , but imagine in the real world where you have thousand or more variables and each of this you can directly access via pointer, this is pure madness to work with such code!!
#include "std_lib_facilities.h"

int main()
{
       int number1 = 220;

       int* pointerToNumber;
       int* pointerToAPointer;
       int* pointerToAPointerToAPointer;

      
       pointerToNumber = &number1; //<-- this pointer hold the address of number1
       pointerToAPointer = pointerToNumber; // <-- pointerToAPointer hold the address of pointerToNumber!!!
       pointerToAPointerToAPointer = pointerToAPointer; //// <--pointerToAPointerToAPointer hold the address of pointerToNumber!!!

       cout << "Value of a pointerToNumber "<< *pointerToNumber << " address " << pointerToNumber;
       cout << "\nValue of a pointerToAPointer "<< *pointerToAPointer << " address " << pointerToAPointer ;
       cout << "\nValue of a pointerToAPointerToAPointer " << *pointerToAPointerToAPointer << " address " << pointerToAPointerToAPointer;
      
       getchar();
      
       return 0;
}


Third: C++ provides direct access to memory (random memory corruption!!!) here is example:
Access a memory which has nothing to do with your application, this is just unsafe in modern world where your application must be fast and safe and work in different environments!!!
#include "std_lib_facilities.h"
#include<stdio.h>

int main()
{
       int *p=(int *)0x00402000;  // acces to memory!!!!!
    printf("%d",*p);

    printf("%p", p);  // what have we here


       getchar();
      
       return 0;
}
  
Forth: C++ has problem with type checking == weakly typed system here is example
int main()
{
    int a = 125;
    bool problemState;
    problemState = (bool)a;

       cout << "Result "<< problemState;

       getchar();
      
       return 0;
}

In my opinion this very , very bad, because you lose value integrity.

Five: C++ allows memory leaks, this is especially nasty, I saw some projects, people actually did overworked in such cases! Here is simple example:
#include "std_lib_facilities.h"


int main()
{
     // This works!
    int * pointerToInt = new int;
    delete pointerToInt;

    // Memory leak
    int * q = new int;
    // no delete

       getchar();
      
       return 0;
}

Six: C++ have some standardization issues , even  the author of C++ Bjarne Stroustrup have spoken about it!


C++ by nature is very platform dependent (Except if you can do all your work in ANSI C++!!!), so don’t tell me that C++ can be easily ported to any platform, it’s not true (especially if you use libraries from Microsoft Environment but your requirements tell you to port application to Linux )!!!

Where and how to use C++?
I think C++ it’s like a weapon with high damage and precision rate, if you need to take one aim exactly as you imagine then go for it, but if you need general purpose language consider Java a quick and fast way to achieve the goal with safe net of unit tests. Java already provides large number of useful frameworks.
Summary: as you can see C++ is not easy to understand and to master, there are pitfalls which just wait for you to fall in, if you decide to use this language in your business,  then expect big and bumpy ride to your initial goal, but don’t take me wrong, I think C++ is great language but it has very special usage domain and can be very good for solving some special problems. My last advise would be at any time aware what you doing and write lots of unit test, don’t give up to the pressure which some management “give you”, you are responsible for your code and as professional you should care what you writing as final product!


Dienstag, 11. April 2017

Using C++ in your project is risky for your business success!!

I decided to write two articles, because one day i was asked by one of my clients why i refuse to work on projects where C++ mixed with Java, second reason I want to capture my thought pattern after reading book  Bjarne Stroustrup Programming principles and practice using C++ (1634 pages book!).
Before you read further, please notice this is my personal subjective opinion, I am Oracle certified Java developer after all, so consider this as last warning. This article consist two parts one is technical only and another business only.

How exactly C++ can affect your business operations?
Through all of my carrier I saw many project some good and some bad, I consider IT professionals 100 % responsible for business decisions, so if we techies make bad decisions we can actually can harm the company revenue and make it bankrupt!
Let me put a business hat on, okay assume you are a hardware manufacturer who develops equipment for communication companies, the software for this equipment written in C++. For the next years your revenue numbers are great and the codebase of your product is huge. One day one of the customers tell you, that your competitor sells better equipment and has cheap prices. So what will you do? Typical management decision will be to go the R&D department and ask the folks to make even better product and research what new features the customer is willing to pay. You schedule new plan (hopefully agile!) and all should go well, right?
Remember you have a legacy product and devs heavily at “working” and typical C++ thing happens, you starting to get notice the development slowdown, seniors and teamleads starting to report about strange and very difficult bugs to fix (hire new devs?), estimates must be adjusted and future release at danger ? Did you ask yourself why development based on legacy code slow down?
This is even worse in C++ projects, so I decide to give you some hints:
Basically C++ programming language gives to a programmer ultimate access to the memory of a device , there no restriction at all! Typical pattern of C++ Programmer will be to write an algorithm which does some complicated logic and then release memory back to the operating system.  Let’s imagine that some bad day happens and C++ Programmer forgets to free up the memory and strangely enough everything works! The QA department report that sometimes software takes too much time and freeze or slow down, the developers say it must be the testing computers are too bad and the QA should upgrade them. It can be truth sometimes, but it can be a simple lie, because of the bug which is difficult to catch which cause the memory leaking.
If you happened to be in such case, then you have only one possible solution : to make a code review  and hire external workforce which should be very good trained professional c++  developer, who can go through tons lines of codes and exactly pinpoint where the bug was created and fix it. From business point of view such development activity can only result in 100% failure in delivery of product on time and there no guarantee that new bugs wouldn’t introduce or discovered!
There I make my point, C++ can be very dangerous for your business if you  don’t check and test your code base, in general most times programmers are highly trainer, but it doesn’t mean that they can’t make a dumb mistakes for example because of short attention span of human being and other distractions(meetings, telephone calls, music, after work party).
Many senior C++ developers would 100% disagree with my opinion, but this is reality in which they live, they are used to it and personally I am ok with it. To be successful in C++ you must continuous check your codebase and make sure that no memory leak bugs appear and don’t forget C++ is a heavily dependent on hardware, as C++ programmer one should be aware about compiler optimization options. So let’s summarize:

C++ provides direct access for memory which is good and bad , bad because as developer you can make a mistake and forget about it and only when you test the application your realize it, by that time you already burn your money! Good you can make very fast and robust application but is a price high enough (slow development phases, random at runtime memory leaks) ?
I consider C/C++ as interesting and useful languages but I have a feeling that this languages after many years usage by the developers worldwide did transformed from general purpose languages to very specialized ones with domains like automobile, avionics and other very specialized industries and where hardware platforms are stable and work at least 10 year without any failure. Another point which I must underline, C++ must be used only by highly trained professionals, in my experience this is actually a very high cost-active expense, but what is better to allow memory leak bugs or to have somebody that caution at any time about such issues?
My last advise for business make sure that developer teams write unit tests, I saw to many projects which fails, because the developers assume that they don’t have enough time to test they stuff!

Donnerstag, 16. März 2017

Ich bin kein Arschküsser oder Schleimer von Vorgesetzten /Auftraggeber!!!

Heute schreibe wieder einen neuen Beitrag,
Grund dafür ist folgende: heute habe Ich erneut mit einem Auftraggeber heiß diskutiert.
Es ging um meine Einstellung gegen Vorgesetzte und Auftraggeber, mein Ansprechperson meinte ich bin arrogant, unhöflich sehr pinnerlich und verzögere die Entwicklung durch die Verwendung von JUnit Tests.

Es mag so sein, aber Ich bin in erste Linie für meine Arbeit durch meinen eigenen Name verantwortlich!
Ich vertrete die gleiche Qualitätsideologie wie in der Region Bayern bekannte IT Firma imbus AG , ich habe genug Projekte gesehen wo man anfänglich alles richtig gemacht hat, aber tatsächlich keine Gedanken über Code Qualität und nachhaltige Entwicklung von eigenen Software Produkten gemacht hat!
Besonders wird es schlimm wenn man mir den Kostenfaktor vorwirft, es ist unglaublich wie dreist so manche Firmen sind, klar ich würde auch nicht über Budget ins Pleite „reinfahren“, aber man sollte die spätere Arbeiten nach den Release nicht unterschätzen, es könnte sein, dass der Kunde später Sie anzeigt wegen den Verletzung von Vertraglich vereinbarte Leistungen!
Vor allem sind viele JEE Projekte davon betroffen, leider darf hier keine Namen nennen aber es ist schon frustrieren wieder an einem Fehlgeschlagen Projekt zu arbeiten mit der Hoffnung es irgendwann zum besseren zu führen.
Ich werde weiterhin direkt und ehrlich , offen mit den Vorgesetzten und Projektauftraggeber reden, die Flöskeln müssen endlich für Mittelalter bleiben, eins ist sicher Freiberufler sind alles andere als Angestellte, man muss uns wie die Geschäftspartner betrachten und gewissen Respekt und vertrauen zeigen, da wir auch für den Erfolg Ihres Unternehmens Leib und Seile aufbringen werden!

Montag, 27. Februar 2017

Eclipse und Git!!! Warum Proxy ist per Default konfiguriert?!

Hi all  ich schreibe wegen einen kleinen Problem bei der Eclipse, ich war heute bei einem Kunde wollte mein Code in github abchecken, aber es ging nicht.
Nach langen suchen, ich habe festgestellt ,dass bei Eclipse Einstellungen ein spezielles Reiter Proxy gibt, dorthin ich habe entsprechend wie in diesem Bild die Einstellungen vorgenommen und jetzt funktioniert!


Donnerstag, 9. Februar 2017

Stellungnahme zur der Kenntnisse über Design Patterns in Java

Grund für den heutigen Eintrag war ein Fachgespräch in Bezug auf Design Patterns.

Mein Ansprechperson war ein Senior Entwickler nun ich habe mein bestes versucht zu erklären ,dass ein Junior soll zuerst den strikten Clean Code Style folgen und erst danach nach Design Patterns nachdenken, erst schreibe den Laufen Code , dann verbessere es und optimiere es, ein Design Pattern in grossen Projekten umzusetzen ist kein Einzelkämpfer Arbeit, es ist  eine Teamarbeit von mehreren Entwickler.
Aus meiner Erfahrung als Freiberufler habe ich noch kein Projekt gesehen wo man perfekt den einen oder anderen Design Pattern 1 zu 1 umgesetzt hat und der Grund war nicht in fehlenden Wissen, sondern nun mehr in ständig änderbaren Kundenanforderungen!

Ich finde überhaupt es äußerst arrogant von einen Junior die Kenntnisse von Design Patterns abzuverlangen! 

Nun wenn mich jemand fragt , welche der gängigsten Design Pattern soll man kennen aus 120 anderen ?
Meine 5 Lieblings Design als solche sind:
1) Model View Controller
2) Facade
3) Factory
4) Composite
5) Singleton

Kenne ich diese Design Pattern auswendig? Zum teil Ja und zum teil Nein,  damit meine Ich ob ich es sofort in 100% funktionierenden Java Code implementieren kann.
Ich halte diese Fähigkeit nicht für besonders Wert und für unwichtig, was ich kann und was mich sehr lange beschäftigen wird ist die Fähigkeit zu erkennen ob es in der Code ein Design Pattern vorliegt oder nicht.
Und es gilt nach wie vor ein Design Pattern soll  man mit bedacht und gesunden Menschenverstand anwenden, daher man soll sich sehr gut über Nachteile eines Design Pattern überlegen , bevor man sich dafür entscheidet.

Was kann ich als Junior besser machen ?
Nun es gibt eine Webseite mit der Beschreibung von Design Pattern , es gibt sehr schöne Bücher, die geht man einfach durch und während des Projektes schaut ob eine oder andere zutritt.

Head First Design Patterns  ISBN: 0596007124 Publisher: O'Reilly
Java Design Patterns: A Tutorial  ISBN : 0-201-48539-7
Und ein Meisterwerk Design Patterns
Elements of Reusable Object-Oriented Software ISBN 0-201-31011-2
oder Ich werde einfach am besten Video von O'Reilly Design Pattern in Java anschauen, es ist nur eine Frage der Zeit, ich bin jetzt in der Oracle Weiterbildung, wenn Ich mich mit anderen Dingen beschäftigen würde , würde nicht zum Ziel kommen , da bin Ich mich sicher (Ich mache auch ein Fernstudium, läuft  es als Hobby , aber ich möchte es irgendwann fertig haben).

Blog-Archiv

Blog readers favorites