My First Steps in Programming
I wrote the first lines of code over 40 years ago. I still remember the Sinclair ZX-81 computer and the huge TV screen (26″) connected to it. It was a huge black and white TV screen. I also remember the math teacher who taught the class where all this happened. I didn’t like her, and I didn’t like the school… but that’s another story for a separate post. BASIC was my first programming language. Later, I learned Pascal, Lisp, and Prolog, and only at a later stage I learned C and C++.
The First Phase in My Professional Evolvement
In 1995, with the appearance of the web, I was among the first to switch to the Java programming language. In the years that passed from 1995 to 2007, I focused on Java. I passed the professional Java certifications of Sun Microsystems (at that time, it was the company behind the development of Java). Among other things, I also became a certified Sun Microsystems trainer in order to deliver professional courses on their behalf. During those years, I also started teaching in the army’s military college, developing training materials for the army in regard to software development, organizing professional conferences within the army, and also advising on a large variety of professional topics. At the same time, I developed my company, which at the time focused on developing games and applications in Java 2 Micro Edition for mobile phones. In 2007 I made the decision to end the development activity of games and applications for mobile phones and return and focus on learning and training programming languages, libraries, and platforms for which computer programs can be developed.
Continuous Professional Evolvement
During the years since 2007 until now, I continuously learn a huge variety of programming languages and platforms. At the same time, I focus on what I like to do most… develop training materials, develop courses… and teach. In the beginning, I focused on Microsoft technologies, including C# and other relevant .NET technologies such as ASP.NET, the Entity Framework, and Azure. I taught several courses on the subject at the Technion and then developed the C# Fundamentals course, which has been taught ever since by life michael. At the same time I studied PHP, I successfully passed the Zend Certified Engineer certification test, and since then, I have been teaching the Software Engineering in PHP course (first, it was taught in collaboration with HIT and later, independently by my company). In 2008, I started to learn about the Android operating system and developed the Android Fundamentals course, which was initially delivered together with HIT, and at a later stage, by life michael. I was among the first in the world to deliver courses in software development for the Android operating system, and as part of my work, I even traveled to India twice to provide training for developers in the R&D department of Avaya in Pune. In 2008 I started learning Python and started preparing appropriate training materials. Since those years, I have conducted many Python training in a large number of high-tech companies, and I also developed the Python Programming course, which became a success. With the appearance of HTML5, I began to consolidate the knowledge I already had in JavaScript and developed the Front End Development course, which was initially delivered in HIT and at a later stage by life michael only. During the following years, I developed additional courses in the client-side field, including CSS Fundamentals, ReactJS Fundamental and Angular Fundamentals. In 2009 I was among the first lecturers in the world who started teaching Scala within the academy, and later I developed the Scala Fundamentals course. In the years that passed, I continued in the direction that started with Scala and continued learning two similar new languages: Kotlin and Swift. Accordingly, I developed the courses Swift Fundamentals and Kotlin Fundamentals and delivered a large number of cycles (mainly of the course for learning Kotlin) both in high-tech companies and as a public course. In recent years, I have mainly focused on the development of seminars on advanced professional topics and courses on the life michael academy and life michael kids platforms.
Self Learning Methodology
The technologies used for software development continuously appear and disappear (including Programming Languages, Platforms, Frameworks, and Libraries). That requires each and every software developer to formulate a methodology for continuous professional learning and development. Software developers who ignore the need to learn new technologies continuously may find themselves out of the game at some point. I suppose that at a certain point, I will try to formulate my own methodology, similar to the Extreme Blended methodology that I have formulated recently.
Practical Tips for Learning Programming
During the week, I dedicate about 30% of my working hours to learning new topics in software development. The pace at which I learn new topics today is much bigger compared to the pace I had 20 years ago. I compiled the practical tips for learning software development into a course called Tips for Learning Programming, which I developed for anyone who is taking the first steps and/or anyone who already works in software development. The course is available for free on Udemy.