Levelling Up My Skills As A Dev.

Sedem Amekpewu
7 min readJul 3, 2021

--

An inside look at my journey to becoming a world-class engineer.

Realization

It was new year’s eve and I was sitting in the solitude of my room, staring at the walls while trying to pinpoint the things I was thankful for and marking the last year’s resolution. It came as a surprise when I realized, I had left so many things undone. My reflection of the past year literally spelt out “UNDERACHIEVER” 👀😤. I told myself never again I had to level up in all areas, fast.

Where programming comes in.

One of such areas I needed to level up in was programming. I made a list of programming languages and frameworks I wanted to learn. My choices weren’t backed by research at the time, only through some past experiences, buzz words from my local programming community, and things I thought would be fun, in no specific order these were.

  1. Facebook’s front-end framework React and by extension React-Native.
  2. C++
  3. Scala

My Reasons

I chose the react framework because it was quite popular in some of the developer communities, I had signed up to. Since I was sure to find people to help me if I ever got stuck😎 and although developer jobs here(Ghana) are more skewed towards google’s angular framework, the appeal of the same code running on mobile, was the trump 🌽 reason for choosing to learn React.

I chose C++ because I had some experience back in college (I was a C++ guru, then I met pointers 😱, and assignments started rolling in 😭) but the main reason for choosing C++ was simply because I was growing bored of using python and java, which I had been using extensively at work. I needed a change(more of a challenge👀) to feel sane again.

The third language I wanted to learn, was Scala(java’s sexier sister), which I found quite interesting since I used it on a previous client project, which is actually open-source so I can share it with you. The project was called “TOPGUN 🔫”(you, know like the Tom Cruise movie?). Nice name, right? Yeah, that was my initial reaction too 😉.

The aim of the project basically was to help make profiling programs that use the JVM much easier, this was done by reading JFR files, which you can read more about here. Long story short I felt like I could have helped the team do more if I had more knowledge of Scala. By the way, check out the project on Github, and please leave a star 🌟 if you find it helpful(if you don’t leave, a start anyway 😏).

The last skill I wanted to learn was photography, this was mainly to get myself out of the house, and look at nature.

So now I had a lot of technologies to learn and understand very well 🤨. Which felt like a lot to do in just the space of one year. I literally knew people (my college professors) who have dedicated their lives to just one language, and these people still claimed they haven’t mastered it yet. Not to mention that I had a full-time job, to think of. The task at hand seemed very daunting, to say the least.

Scheduling

As mentioned in the previous section, I have a full-time job, as an Engineer at a very promising company called Turntabl, where I work on some very interesting projects. Apart from work, there were other commitments scattered through the upcoming year that I definitely couldn’t shirk. I became clinical with how my time was going to be used and scheduled everything on my google calendar. The execution of all actions relating to my programming career was to take place for 2–4 hours every day, depending on various factors.

Quality Gates

Now I had a list of interesting skills I wanted to learn and I had scheduled the time for that, I needed a way to measure the progression of my skills after careful consideration, I concluded that the surest and most fun way to go about this was to make a grand list📜 of some of the ambitious projects. Which I would delve into and crack on until I eventually come out with a new shiny ✨ piece of software. That I would gleefully share with people from my graduating class and at my new workplace. I settled on three projects these were

  1. A news vending web application, which I named “newsfoldr”, would be built using React.
  2. A 3D RPG game to be built using the Unreal Engine UE4, that would make use of C++.
  3. A trading bot, programmed in Scala would use resources from Trality.

These projects had to seem very challenging almost intimidating and at the same time should be something I could definitely do after months of bashing my head against it (get, it bash…ing 💻). Below is a detailed description of the projects. These evolved in the past month as I worked on them and gained a better understanding of those projects.

Newsfoldr

A news application that served local news on literally anything that my fellow citizens might be interested in knowing, it has a live radio feature to tune into a list of local channels. It was built using the react framework. Which I successfully built and deployed and I’m currently making regular updates to, I’d definitely write a post about this very soon 😉. To check the link to check it out 👉 newsfoldr. Currently working on bots responsible for getting the right news to the right people on channels like Telegram and WhatsApp, so instead of going to search for the news, you tell the bots what you are interested in and when it happens, you receive a ping that says ABC happened, it’s almost like a well-informed friend gisting you with the latest gossip, in real-time (more on this to come).

Homepage of the newsfoldr webapp

RPG Game in UE4

A C++ game created using the Unreal Engine UE4, I wasn’t able to go ahead with this due to some hardware and OS constraints (it’s a shame that to get UE4 on a Linux machine I’d have to build a 12GB source code from their GitHub repository, only to have it fail after 3 sleepless nights). However, like all great engineers, I decided to pivot and change my plan slightly to achieve the goal. Instead of C++, I settled on C#, and instead of using UE4, I settled for Unity. To cut a long story short, I’m in the final stages of creating my first mobile and desktop game, Maaze3d. To play the still buggy WEBGL version check out 👉 Maaze. I will definitely write a post on how I built this. In the meantime enjoy the screenshot below.

Screenshot of the Maaze3D development environment

Scala Trading Bot

The third project is to create a trading bot using Scala, using the resources provided by the good engineers at Trality. I’m still researching this project, even questioning if Scala might be a great fit for this type of scripting task, which might seem more appropriate to use Python for.

Plan of Attack

I needed a plan that would help me learning quickly and gain more experience points faster (XP). After a few days of brainstorming and asking some of my “smarter” friends(seniors), they became so good at various languages and frameworks. Three learning patterns were spoken of more these were.

  1. Learning using paid or bootlegged more structured tutorials.
  2. Jumping in and building projects.
  3. Relying on books.

After careful consideration(literally 5minutes), I decided to blend all these approaches. I got a paid subscription from PacktHub, to get access to the latest videos and books. I bought a few (3 Udemy courses), and I came up with a laundry list of projects.

State of Affairs

Currently, the newsfoldr application is working correctly, Ian would be closing the curtain on that anytime soon. The progression of the game has been rather slow compared to the news app, and although I’m almost at the finish line the needed amounts of features to be completed and the optimizations, to be made irks me sometimes 😤, hey it’s software development it’s supposed to do that. It might take some considerable time before, I can soundly focus on creating the bot that would make me rich🤩 (dreams in crypto and other financial instruments).

Conclusion

Currently in the sixth month(writing this story in July) and I have made some interesting amount of progress, from the above it seems just making resolutions won't get us to our final destination, or even help us start the journey, and to be able to do that to grow we need to practice a combination of these steps.

  1. Constantly reviewing our past performances as is the surest way for creating and predicting the future.
  2. Leave nothing to chance, we need to become a bit more pragmatic and put structures in place, to speed up growth if this was a game I’d say get all the cheat codes.
  3. Do some level of research and planning, to get a better idea of how the journey would look three to four months into the future.
  4. Have fun, I think this is the most important piece because it becomes so much easier to quit if you are not enjoying the process.

Thanks for reading to the end. I hope you learnt something from my story or at least enjoyed the dry jokes. Feel free to reach out to me on Instagram or Twitter @SedemQuame✌.

--

--

Sedem Amekpewu

Building finance applications, one function at a time with a beginners mindset.