Can I call myself a software developer?
This is a question I struggle to answer. Am I worthy? I have been involved in IT for most of my working life, but my interest preceded that. You see, I am a bit of a dinosaur. I started university in 1969 when there was no computer science department. Computer programming was part of the Math Department and I was studying for my BSc with a major in mathematics. I took every computer based course I could and learned how to code in FORTRAN and PL1 using punch cards and submitting my programs for batch processing on the IBM 360. It was frustrating and I certainly wouldn't call myself a programmer after that experience.
I ended up becoming a Math teacher and in 1980, an Apple II+ was introduced to my classroom. I started coding in BASIC, writing all sorts of little utilities that would help me explain concepts and give students a chance to build and review their skills. Still, I wasn't a 'software developer'. By 1986, computers were all throughout the school district but most teachers had no real idea what to do with them. I was seconded from the classroom to work with teachers and students to integrate the use of computers into the classroom. That ended my teaching career. For the next 20 years (with the exception of 3 years in hell as a High School Vice Principal), I worked my way up the chain in two different school districts, leaving in 2007 as the Director of Technology, responsible for IT in both the education and corporate sectors of one of the larger school districts in the Vancouver area.
During my career as an IT director, we purchased a very efficient and extremely flexible email/collaboration system that governed the way we communicated and shared information in our District. The software was flexible and customizable and allowed for the development of add-on tools that could enhance and extend the functionality of the product. I was in heaven. I got to develop all sorts of tools that allowed me to streamline the system administration and communicate with district SQL databases to give secure, real-time access to district data sources. Programming was a break from the endless, tedious meetings and I became quite competent. The district started marketing the tools I created and made a substantial profit from sales.
I began to establish a relationship with the software company and got certified as a trainer so I could share my skills with others all over the US and Canada. This brought in more money for the District. I became a very vocal supporter and evangelist of sorts for the software and eventually, they made me an offer that I couldn't refuse.
Not retiring, recareering!
I took the early retirement and went to work for this software company. But….. not as a 'software developer'. I was a "Senior Services Engineer". I did a fair amount of training, but also was able to continue developing tools as value-added products for our customers. Still…. it was made very clear to me that I was not a 'software developer'. I was a hacker. I was undisciplined and could never contribute to the core product. I was basically self taught and had a lot of very bad habits. If any of the real developers looked at my code, that would be very evident. Well, as often happens in the private sector, the division downsized and I was forced into another retirement.
A new beginning
Now what was I do do? This was 2014. What else happened in 2014? Swift, the new programming languge for iOS development was released. This fuelled my passion and set me in a new direction that consumes me to this day.
Like a lot of people, I started taking Udemy courses on how to develop apps for the iPhone using Swift. This got me started and I was able to launch my first app to the app store shortly afterwards, but in hindsight, I am not conviced that this was the best way to go.
A false start
The instructors advertised taking you from nowhere to being a full fledged iOS developer. Sure, I was able to create and publish an app on the App Store, but could I really call myself a software developer? These courses showed you how to create and utilize a lot of the APIs but lacked explanations. They did not follow best practice nor use recognized design patterns. My method for developing apps was basically copying code from someone else and substituting in my own values to fit my needs. I asked a lot of questions on Stack Overflow and accepted the abuse for asking questions that had already been answered. I lacked the ability to even frame a question correctly it seems. There was very little understanding of what I was actually doing. It worked, but when I had to go back to those apps a couple of years later to update and enhance, I had a really difficult time understanding and replicating what I did. There was a lot of redundant code and work arounds to get things working.
There is no easy route to being a software developer
That is when I decided that I needed to be more methodical in my learning and go back to square one. I wasn't able to attend any boot camps so I decided to invest my money in purchasing highly recommended resources that could teach me the right way to code and to be able to develop software that could stand the test of time. This also meant dedicating a lot of time reading, following tutorials and practising what I learned.
An ongoing adventure
My adventure continues. I have just published my 9th iPhone app. Three of these apps have Apple Watch companion applications. I learned how to use Swift to develop Mac apps and one of my iPhone apps has a Mac version on the Mac app store, I also studied Kotlin and recreated my first iPhone app as an Android app and published it on the Google Play Store.
So who did I rely on to reroute my learning? There are lots of good resources out there, but there are several that I would like to acknowledge as giving me ongoing inspiration and encouragement.
Ray Wendrerlich (https://www.raywenderlich.com/, @rwenderlich)
The resources and instructors available at raywenderlich.com are outstanding. I have purchased just about every book they have published and am an annual video subscriber. I look forward each week to see what new tutorials are published. I started with the Swift and iOS Apprentice books which provided me with a solid grounding in best practices.
Hacking with Swift (https://www.hackingwithswift.com/, @twoStraws)
Paul Hudson is a machine. Every one of his publications is so well laid out and presented, that I have to discipline myself to continue through to the end of each publication for fear of missing some key point. Again, I have purchased almost all of his books and it is just a matter of time before I purchase the remaining ones. He is a Swift Conference rock star and his presentation style is without compare.
There are a lot of YouTube series available as well that deserve mention. More than I have space for. There are three in particular that I would like to point out.
Mark Moeykens - Big Mountain Studio @bigmtnstudio
Mark has a special way of presenting material and is inspiring. He has a sense of design that appeals to me and if you look at my more recent apps you will definitely see his influence. I have appreciated his contributions so much that I have become a patron of his on Patreon.
Sean Allen - @seanallen_dev
Sean is another inspiring developer. He went from no programming experience to a full time developer in a very short period of time after enrolling in a developer Boot Camp. He shares his experience on his YouTube Channel and his weekly news updates on everything Swift. He has combined with Paul Hudson to present the Swift Over Coffee podcast. Sean is a breath of fresh air. He is not judgemental and always willing to offer assistance.
Code With Chris - @CodeWithChris
Chris is a long time YouTuber with an excellent set of YouTube videos. He also has a great FaceBook page where people can ask and answer questions. Perfect for the developer who is just starting out.
Twitter is how I start my day. I have created my own twitter list of 70 individuals who live and breath iOS/Swift development. Every day the latest news and resources are highlighted and referenced in tweets. It is a fantastic resource. In addition to the above twitter accounts that I have already referenced, there are many more worth following. Here are just a few of the best: @swiftbysundell, @hanning_thomas, @DigitalLeaves, @objcio, @NatashaTheRobot, @johnsundell, @abargh, @ayabibagib, @mennenia, @davedelong, @harlanhaskinsm @subdigital, @erucasadun, @bendodson
I subscribe to several newsletters that publish weekly Swift updates and links to resources. Here at just a few of them
- IOS Dev Weekly
- Indie iOS Focus Weekly
- Swift Developments
- Use Your Loaf
- Swift Weekly
- iOS Dev Nuggets
So. Am I a Software Developer?
The question I guess is still open. Does it really matter? I am 6X years old and still going strong. I have no desire to get a job as a software developer. My age is against me, though I think that I am as qualified now as a lot of junior developers. I don't need a job. I just need something to keep my brain working and provide me with a little extra income to pay for my vacations. Don't count us old folks out, but also don't for a minute think that just because we are senior citizens we don't have something to contribute.
I don't go to conferences or meetups because I have experienced age discrimination in the past and don't need the aggravation. I communicate with a lot of people via email or online chats. When my age is unknown, what I have to offer is given more attention and my questions are more likely to be considered.
Still, I feel incredibly blessed to be able to come up with an idea and create a tool that can be useful to me and others. It is a great community to be in. Maybe one day I will be a software developer.