My 5-year journey(so far) in the tech industry

Viennarz Curtiz
Nerd For Tech
Published in
8 min readMar 2, 2021
Photo by Karl Pawlowicz on Unsplash

2015 ( May — )

TL;DR

Hybrid mobile Dev & Front-end Web Dev

Skillset at this time

  • HTML5
  • CSS
  • Javascript
  • Bootstrap
  • Apache Cordova ( little experience )
  • CodeIgniter (little knowledge)
  • SQL ( little knowledge )
  • Wordpress (beginner, learned from my Internship)

I remember a job post looking for a web developer with experience in Apache Cordova. It caught my eye since I have experienced using Apache Cordova when we used it for our Capstone Project, a game built on HTML5. To be able to build it for android, Apache Cordova was the one we needed.

I applied for the job, got accepted, and so the work began. Badabum badabam! ✨ It was my first ever job as a programmer and first time to be on a team who creates actual websites.

Most of my tasks were User -interface (UI) creation.

During that time, web tech wrapped with Cordova had terrible performance. It was so laggy when navigating pages. 😫

Learnings:

Ionic Framework and AngularJS. ( Beginner Tier )

Two-way binding of AngularJS was mind blowing at that time, but I did not use it much anyway. We only used AngularJS and Ionic for one particular project and the rest was basic HTML / CSS / SQL web apps and websites. 😅

Struggles:

The PCs we used were super duper slow and low-end. You know the struggle when you open 10 tabs of google chrome on a 2gb RAM computer?

Photo by Taras Shypka on Unsplash

2016 ( May — )

Joined a company of high tier developers. I applied for a different role/position, but on the interview day I was told to learn Swift for iOS as they are in need of iOS Developers. I was shookt! 😱 (shocked!) I was expected to start in a few days. I thought, how am I going to learn Swift without a Mac computer! ?

Well, of course they issued me a Macbook Pro 2013. It was shiny, shimmering splendid. ✨

Learning Swift, and iOS Development:

I was given learning materials (videos) about iOS development, and I was like oh, (Swift language) syntax is so readable, much like Javascript . Storyboards and Interface builder was on point. Then on later topics, I could not understand what I was watching, I thought What the heck are these Delegates, Protocols, optionals, whatsoever!?.

This was a new realm for me, it almost felt like it was completely different from web programming.

First steps.

  • Swift Language
  • Storyboards, and Interface Builder
  • Object Oriented Programming, Inheritance
  • Basic UIKit Framework
  • Tableview Delegates, DataSource

Learning Version Control using Git:

I know this was not taught in college, but, man I have regretted I did not try to learn. At this time I know how useful this is. Funny how we can see stupid little mistakes we made. Admittingly, I did these too. 😛

“Fix Typo”“Remove space”“Fix Typo”“Fix Typo”“Fix Typo”“Fix Typo”“Fix Typo”

Struggles:

It was an overwhelming learning experience. I could not absorb everything in one day. It was like holding and balancing dozens of hard-bound books stacked over each other on your head.

Just so you know, I lived in a dorm and the internet is ok if I were in the lobby. But, if I were in our room I used cellular data, it could hardly load a webpage. Such a sad life for an aspiring developer.

Took me over a month to adjust. I did feel unworthy on those days. 😆

For months, most of my tasks are on user interface, maintaining legacy and existing projects, and fixing bugs.

Encountered Fastlane Automation Tool:

I was taught how to do fastlane commands. I did not try to understand it much, but, I saw how automations saves up your time rather than manually doing everything:

  • do unit tests
  • incrementing version and build number
  • cleanup project
  • add app icon badges
  • compiling the project
  • logging in
  • codesigning
  • adding changelog
  • do git commands ( reset, pushes to repo )
  • sends a message your group when successfully uploaded to appstore connect ( I think that time it was still called iTunesConnect )

With just a one line of command. 🤖

Data Persistence using RealmSwift:

Encountered RealmSwift in some of the projects. It is a local database for any app. Also learned some of the basic concepts and functions, nothing deep yet.

Milestones:

  • iOS developer! ( Beginner Tier )
  • Basics of iOS development
  • Learned Version Control
  • Learned Swift Programming Language

2016 Sideprojects

Game development using Defold Game Engine

There were 2 projects that I worked on. Defold for game dev, commissioned by different groups.

I had to do the drawing, animation, and programming. I realized how fun, challenging, and tough it can be as a game developer.

Struggles:

  • My 4 year old Personal Windows Laptop was a dying piece of tech.
  • Battery was dead. You have to always plug it for it to work.
  • Super slow boot Operating System. I think it was Windows 8 at that time.
  • Blue-screen of deaths ( yes plural ).
  • Laggy
  • The Wacom tablet cord was faulty, destroying my momentum when drawing.Slow and unstable Internet connection, can’t update the engine.

Milestones:

  • Learned Lua Programming Language
  • Experienced being a one-man-team-indie Game developer

2017

There was a new project and it was my first time being involved in many features of the app.

That is also when I first encountered RxSwift! I did not pay much attention since it was only used on some little parts of the project.

As the project grew bigger, my teammate suggested we should use RxSwift .

Learning RxSwift, Reactive Programming :

As the project grew even bigger, the RxSwift usage increased. I was just a code monkey while not understanding how it works, and so, I got frustrated. Finally, I had discussions with my teammate and asked him to teach me the concept.

I am amazed at how reactive programming works and how fast it can be.

The learning curve was steep for me. It took me weeks to understand some of the basic concepts.

  • Observables
  • Subscribing
  • Subjects
  • Disposing

Learning Objective-C:

At some time, I had to help maintain and fix bugs on an existing project. It was purely written in Objective-C programming language. My colleagues said the learning curve for this is higher than other languages. Reading it at first was nightmarish. The syntax was so hard to read, but, at some point, I got the hang of it.

Did you know Swift was released in 2014? The version 2.2 was made open-source software under the Apache License 2.0 on December 3, 2015, for Apple’s platforms and Linux

Just a quick comparison! Swift vs Objective-C syntax.

Objective-C

NSString *message = “@Hello World, I am written in Obj-c.”;NSLog(@”%@”, message);

Swift

let message = “Hello World, I am written in Swift”print(message)

Struggles:

  • Objective-C is hard to read
  • Nil / Null handling is harder

Milestones:

  • Learned RxSwift Framework, Reactive Programming
  • Better Understanding on KVC ( Key-Value Observing )
  • Learned Objective-C Programming Language
  • Better Understanding on UIKit, RealmSwift, Cocoapods Libraries
  • Learned Service-Oriented Pattern
Photo by Eva Darron on Unsplash

2018

In the first quarter of the year, there was nothing much as it was mostly maintaining existing apps, and continuing an under-development project.

Fast-forward around August of 2018, I had to review some legacy apps written in Objective-C.

September 2018: Relocating to a new world

There were so many changes happening in this time, but that’s going to be a different story.

At this point I had to review, read, and understand the whole codebase of an existing app written in Objective-C.

It took me weeks to understand how everything works. I learned how important it is to decouple modules, how important architecture design patterns are, how important naming conventions are, and how useful to have different XCode Schemes

2019

There was a new project. Starting from scratch, it was an opportunity to learn, and implement other coding patterns.

This is the 2nd biggest, and most complex project that I have helped write from scratch. I saw the advantages of using Service Oriented Pattern, which decouples, and separate responsibilities that are usually in the AppDelegate.

I learned to implement the Flow Coordinators which aims to decrease the responsibilities of ViewControllers, in which they don’t need to know the next ViewController to be shown, they just have to know that they are going to be dismissed, and they tell the Flow Coordinator, it will decide which View Controller to show next.

During the development, I also learned how to integrate Webhooks using different services. I helped automate many repetitive tasks in our workflow for the iOS Team. I got hooked up with automations, and took a lot of time trying to automate many things, using bash scripts, and the Fastlane Tool.

Milestones:

  • Created iOS projects from scratch
  • Learned Coordinator Pattern
  • Realized how Automations can be super efficient
  • Realized that having too many 3rd-Party Libraries can be too messy
  • Actually Read and Enforced Apple Human Interface Guidelines ( took me 3 years to appreciate this, lmao . Thanks SwiftPH ! )

2020

There was a new feature in our App which is scanning and extracting texts from a document using the Phone’s camera.

Learning Apple’s Machine Learning APIs Frameworks; CoreML, Vision, and Natural Language.

Learning all of these at the same time was quite overwhelming. While I did not dive deep into these frameworks, I learned how to implement and create a Text scanning App, where you could take photos or videos, then recognize texts, and be able to extract those texts.

Learning ARKit Framework for Augmented Reality.

I was also exploring this framework along with Machine Learning APIs. Using the iPhone’s True Depth (Front ) Camera is impressive in tracking the facial expressions.

Adapting the Protocol-Oriented Programming.

When I was adapting this paradigm, I saw how this is much cleaner, and easier to maintain than Object-Oriented Programming in which it can get messy with all those unneeded inheritance.

Photo by Wonderlane on Unsplash

2020 WWDC “Dub-dub-dee-see” 👨🏻‍💻 ( June )

WorldWide Developers Conference is one of the most anticipated events for Developers, that year it was a WWDC Virtual event.

It was also my first time to actively watch Sessions.

Appointment with Apple Engineers about Machine learning and Computer Vision.

I applied for a virtual appointment, and I was not expecting much since there were only limited slots, and when they had confirmed and approved my appointment, I was filled with excitement, and before the appointed date, I had to prepare many questions including best practices in using the Machine Learning APIs.

Since it was based in the USA, Calfronia , and I am on the other side of the world, I had to wake up before 4am for the appointment.

There I spoke with the Apple Engineers, showed them my problem, case, and goal of this certain app. Then they recommended me to use certain frameworks, classes, and to watch certain sessions. It was a memorable experience, I could not forget how hard it was to speak fluently in english with all those jargons, lol.

--

--