How I became dev in the age of 43, released my own app and started to teach kids how to code
My name is Krystian Kozerawski and for the last 10 years I was one of the most popular Polish bloggers writing about Apple. When in 2008 I started my blog and told everyone that I wanted to live off of it, many thought I was crazy. I have created my own brand in the Polish blogosphere with my hard everyday work and for the past 10 years my passion has been my source of income. A few years ago, however, I noticed the first symptoms of burnout. Being in my forties I was wondering what career path and passion to choose. Having at home a few Mac computers, iPads and iPhones and experience in terms of a critical look at applications (which I have been reviewing for many years), the choice seemed quite simple — I decided to become a programmer.
From professional burnout to learning Swift
Programming was one of my unfulfilled childhood dreams. I started my adventure with computers at a time when Poland was behind so called The Iron Curtain, and these machines were smuggled into the country. At that time, I attended a computer club where up to ten children where gathered around one ZX Spectrum or Commodore 64. As you probably guessed, little time, which each of us had at our disposal, was devoted to much more attractive games than to learn programming. Although I learned a few basic instructions then, but my use of the programming language was limited to the load instructions only.
Symptoms of burnout as a blogger increased, which pushed me towards making a decision. Finally, in January 2016, I started learning Swift from the first textbook I bought (My First Swift App, by Ash Furrow). From that time on, I devoted a daily of one to three hours a day to learning programming. I can not deny that here the work from home and the unlimited work time of a blogger helped me a lot. I bought another digital textbooks, first of all Swift Apprentice and Hacking with Swift, the latter by Paul Hudson. In turn, in the textbook Beginning iOS 9 Programming with Swift by Simon NG, I read the advice to share the acquired knowledge also at the beginning of ones programming adventure. It so happened that a few years earlier, my 4.5 year old son, who began reading and writing on his birthday, executed a simple program, which I wrote down on a piece of paper.
From self-study to teaching kids the basics of programming in Swift
While playing with Lego blocks, I accidentally began to teach him programming. I put in a straight line square blocks in different colours, and one separate — red — set them in front of them. I explained to my son that this red brick is a robot that he has to collect — by sticking to himself — all the other red blocks in the line I have arranged. Quickly on the page I wrote him a simple instruction containing several commands and a simple loop and conditional instructions:
1. Go ahead
2. Check what brick is under you
3. If it is a red block, attach it underneath you, otherwise do not do anything
4. Check if you still have a brick in front of you, if so, start reading the instructions from point 1.
5. You have completed the game.
Well, this was not an impressive code, but I was still surprised when my 4.5 year old son, who had learned to read and write a few months earlier, did the job without any problems. Later, I created a few more such programs.
Then came lessons on the computer, and more specifically a simple programming course for children on the Code.org website in which the robot BB-8 from Star Wars is programmed. Finally, with the beta of iOS 10, the Swift Playgrounds app appeared, which my older son started to play with.
A few months earlier, in the first school year, I had the opportunity to give a full-day class in a class of my son, which showed children holograms, simple virtual reality in Google Cardboard glasses and Sphero controlled and programmable toys. The reception on the part of children was phenomenal. Actually, they did not want to let me out of the classroom. Remembering this, I thought that since I teach my son the basics of programming in Swift Playgrounds, I might as well do it voluntary (pro bono) in his class.
Although children have lessons in so-called computer science, but it is really simple and quite reproductive computer skills, which of course is also needed (even my son, who only in the classroom has contact with Windows). However, I think that most of them do quite well with computers, smartphones and tablets, and what they should learn immediately after gaining reading and writing skills is the basics of programming. The programmer is still one of the most sought-after professionals on the market (tens of thousands of programmers are wanted on the European market).
I shared the idea with other parents of kids from my older son’s class, I have also shared the idea with the teacher and I came back to him at the first September meeting, but it took two more months to get the permission of the school management and write a simple program for these lessons, although I do not conceal that, apart from the very general framework, a lot of my learning is improvising and things invented ad hoc, a few hours before or during classes.
I decided not to use class computers for several reasons. Programming lessons were meant to be fun, rather than immediately punching the code on a computer keyboard — children would still have time. I will add that the computers in my son’s class are quite old and now they are not even connected to the network.
Choosing a tool and application for learning was obvious to me, because I had already taught my son the basics of programming on the iPad in the Swift Playgrounds application. I had her tested. The creature called Byte is friendly, the whole is in the form of a simple game, and the tasks themselves are not initially too complicated.
Of course I was aware that most children do not have their iPads, so I decided to use a projector. I am taking a mobile router, a 3rd gen Apple TV and a projector. The image from the iPad is sent to Apple TV via AirPlay, and then to the projector through which it is displayed on the screen.
In each lesson the scheme is more or less similar. We discuss each next board, watching it from different sides, and then the children come forward and propose further commands to be introduced on the iPad — the latter is done by my son who conducts classes with me. At the end, we run the code and check if the creature actually does what it should and, if necessary, we correct errors. Usually, in one lesson, we are able to complete from two to four boards, depending on the degree of complexity. Of course, it would be better if every child could work on his iPad. I am trying, however, not to worry about the limitations, which at the current stage are impossible to overcome.
The creatures, which are controlled by children using simple programs, are extremely friendly. At the first lesson, I got several drawings of one of the characters.
For 1.5 years classes have been held once a week at an additional hour after the last lesson.Currently, some of the pupils, including my son, are already switching from Swift Playgrounds to Xcode on Mac.
Teaching myself gives results
I teach children at school once a week. For the last two years — as I wrote above — I have been learning programming myself from textbooks usually one to three hours a day. Finally, in September last year, I decided to check how much I know. As a 43 year old I came to an internship in one of the software houses in my home town. After two months, I was offered a job as a Junior Swift Developer.
Of course, after two years of independent study, it turned out that I do not know much yet. So much, however, that I could face commercial projects. Of course the work on some of them has been very stressful for me, because I always discover that I still don’t know many things and I just have to learn them quickly. This is not limited only to Swift’s knowledge, but to the entire working environment of the programmer, from version control in GIT, Fastlane tools, Jenkins, to communication in the team — before I had been working alone at home and managing a small editorial team of independent bloggers. So before I started my Swift dev job I did not need more extensive tools.
I’ve been working as a junior developer for over six months, and every day is a new challenge for me.
My own app for Mac
This story would not be complete without first personal success as a programmer — my own work — an application for a Mac. It’s called Negative and it’s a PDF reader with night mode.
As I have mentioned above I had been learning Swift primarily from textbooks by Paul Hudson (Hacking with Swift), Simon Ng (Appcoda) and those published by RayWenderlich.com. Most of them are available in various formats: ePub, PDF, and even Mobi for e-book readers.
I tested various formats and I know that for programming textbooks, in which fragments of code are presented on almost every page, static, rigidly stacked PDFs are best suited. In the case of ePubs, the code is often wrapped or truncated if the font is too large. Learning to program from a Kindle textbook is also very uncomfortable.
PDFs worked for me the best. Unfortunately, they have one drawback. It’s not possible to change their parameters, which bothers me especially when I’m learning after dark. For almost two years, my eyes were tormented by the white background pages of such textbooks. Reducing the brightness of the display on a Mac or iPad did not give much. It always shone too brightly.
Manuals in the ePub format, opened in iBooks on a Mac or iPad (or finally on an iPhone) allow you to change colours, enable night mode, but problems with the correct display of the code (I have mentioned above) disqualified this solution. Obviously, I could reverse colours in the entire operating system, but that would be desperation (in fact most programs offer dark mode, also a code editor in Xcode).
So I was looking for a PDF reader for Mac that would offer colour inversion and unfortunately I did not find it. So I decided to write myself a PDF reader for Mac for night owls like me. I have done it with help of much more experienced Swift developer — Marcin Maciukiewicz.
Negative has three working modes:
- Normal — no inverted colours. In this way, you can open documents to yourself, for example, in Preview on Mac
- Inverted — here the colours are just reversed, everything is in reverse
- Inverted with Sepia — the picture in the negative with the sepia added, which in my opinion further improves the comfort of reading in the dark.
Each of the modes is activated one after the other, like on a carousel, after next clicking on the button with the eye on the toolbar.
On the toolbar you will also find a field for entering the page number to which you want to jump. You can also toggle colour of the toolbar between light and dark.
There is still a lot to do:
- adding a vertical navigation window with page thumbnails in the document, as in the MacOS Preview
- adding bookmarks
- improvement of the interface (I do not have experience in this topic, therefore Negative is deprived of UX spurts).
If you only want to pursue your passions and start your new professional career, know that it is never too late. Of course, good tools and textbooks are important, but what is most important in terms of success is priceless — it’s your own strong will and self-discipline.