Photo by Ian Schneider on Unsplash
From Samsung Galaxy Young to Top Tech Companies: My Journey as a Developer
As a developer, one of the most important aspects of professional growth is staying informed about the latest developments and techniques in the field. In this article, I will be sharing some of the key experiences and resources that have helped me along the way, including research projects I have undertaken, influential books I have read, and important decisions I have made. I will also discuss how I got started in the field of development and my current long-term and short-term goals as a developer. This article is meant to provide insights and inspiration for other developers at all levels of experience.
This article provides valuable insights and inspiration for developers at all levels, by sharing experiences and resources that have contributed to my professional growth. It also offers a candid account of my own journey, providing perspective on the challenges and successes of a career in development and motivating for readers to pursue their own goals.
People who have influenced me:
Many individuals have played a significant role in my career development, including Dan Abramov . For those unfamiliar, Dan Abramov is a highly-regarded software engineer known for his contributions to the open-source community. His work has reached millions of devices worldwide and he currently works as a Facebook engineer. He is particularly notable for his contributions to the development of Create React App, Redux, and React. I discovered Dan’s work while learning React, and his insights and guidance have been incredibly valuable to me and many others who frequently use React. I encourage readers to check out his blog, overreacted.io, for valuable and interesting content on React, Javascript, and other topics.
Another expert that caught my attention was Orta Therox (Orta). As a curious person, I often research the teams and motivations behind the tools I use. This led me to explore how language compilers are designed when I first started learning to code. (For those interested, check out The Tiny Super Compiler..)
Orta stood out to me as a valuable source of inspiration and knowledge after researching his work. One project that particularly impressed me was his development of a tool that combines the syntax engine of Visual Studio Code with the typescript compiler information to power markdown code samples.
I was also learning about Gatsby at the time, which makes it easy to transform markdown files into React components for the web using its data transformation plugins (great for generating documentation from markdown files). I learned about Shiki-Twoslash and was impressed by the intelligence Orta put into it. This led me to research his other work, and I realised he was someone to look up to.
Orta works with the talented Microsoft engineers behind the Typescript language. You can see some of his work on his website.
Books I have read:
“Level-Up Your Career Today: Developer Edition” by Jack Domleo.
One book that greatly impacted my career and sparked a strong desire to do more was “Level-Up Your Career Today: Developer Edition” by Jack Domleo. It helped me understand the importance of being intentional in my learning and the impact of both intrinsic and extrinsic factors on my career as a developer. It motivated me to create a simple portfolio, build my first resume, and take practical steps to achieve my goals. Jack Domleo played a significant role in helping me realise my abilities and potential.
I have read many other books and subscribed to quality newsletters that keep me up to date with the latest developments in my field.
Decisions I have taken in the past few years
In recent years, I have made several bold decisions that have helped me advance my skills and knowledge. While some may argue that there is never a “right” time to make a decision, I have found that certain opportunities presented themselves at the perfect moment for me. By being determined and having the courage to take action, I have been able to learn new, complex concepts and gain a deeper understanding of various topics. Rather than waiting for the “right” time, I believe it is important to seize opportunities as they arise and ride the tide of change.
1. Learning the Canvas API improved my understanding of objects and methods in programming.
When learning about objects in computer programming, many materials use real-world analogies like cars to explain the concept. These analogies often state that objects in object-oriented programming (OOP) languages have properties, similar to a car’s identifying features, and methods, similar to a car’s functions. However, these analogies can only go so far in truly understanding objects.
When I started using Javascript at an intermediate level, I set the goal of creating simple games using the Canvas API. The Canvas API, like many browser APIs, is designed with the concepts of objects in mind. Using the API helped me see the practical application of objects and methods in real-world scenarios.
For example, I developed projects such as bouncing balls, shooting games, space simulation animations, and drawing applications using the Canvas API. The following is an example of code for a drawing application:
class Drawing {
constructor(canvasId) {
this.canvas = document.getElementById(canvasId);
this.context = this.canvas.getContext('2d');
}
// method for setting the brush size
setBrushSize(size) {
this.context.lineWidth = size;
}
// method for setting the brush color
setBrushColor(color) {
this.context.strokeStyle = color;
}
// method for starting to draw
startDraw(x, y) {
this.context.beginPath();
this.context.moveTo(x, y);
}
// method for drawing
draw(x, y) {
this.context.lineTo(x, y);
this.context.stroke();
}
}
// usage
const myDrawing = new Drawing('canvas');
myDrawing.setBrushSize(5);
myDrawing.setBrushColor('black');
myDrawing.startDraw(10, 10);
myDrawing.draw(20, 20);
In this code example, we have defined a class called ‘Drawing’ which takes a canvasId as a constructor parameter. The class has several properties and methods.
2. Learning React
React has been one of my favourite tools for the past 3 years. My decision to learn it has greatly benefited me. I used a learning approach that followed the documentation like a school curriculum and found that the React team and other contributors did an excellent job of creating clear and comprehensive documentation. It took me reading the documentation twice before most of the concepts began making sense to me. It was only after putting the concepts into practice that I saw significant improvements.
3. Learning Laravel
Another valuable decision was learning Laravel, which has proven to be very useful for handling both complex and simple applications. It also allows me to quickly scaffold a PHP project to test new concepts.
4. Learning design and Figma
Lastly, I must mention how learning the basics of UI design has improved my skills. Before learning about Figma and other professional tools used for designing user interfaces, I had heard about the importance of prototyping or at least designing a wireframe of a product before coding. It is crucial to avoid using code to design, as it saves time and allows for better planning. If you’re not skilled in design, it’s important to hire someone or ask a friend for help. Starting early and familiarising yourself with the process will prepare you for a professional setting.
How I started my career as a developer
My journey as a developer began in 2018 when a friend introduced me to coding on my phone after high school. I immediately fell in love with the challenge of finding creative solutions to problems. My career took a significant leap forward when I participated in a three-month training program sponsored by MIT in my local area. During the program, I had the opportunity to work with experienced developers and created a simple mobile application that allowed students to buy and sell products, solve academic problems, and assist lecturers with research.
When I first started, I did not have a laptop. Instead, I practised using my phone, a Samsung Galaxy Young device with a 3.27-inch screen and a resolution of 480 x 320 pixels. Despite the limitations of the device, I was able to develop a solid foundation in coding and set myself up for success in my future career as a developer.
This is a picture of the Samsung Galaxy Young. Photo credit: (https://www.notebookcheck.net/)
My Long-term goals
Work in a top tech company. It is my goal to work with highly experienced engineers in a top or growing tech company by 2023. I want to gain exposure to the latest technologies, and best practices and collaborate with a diverse group of experts in the field. I have had the opportunity to work in different capacities with different teams, but I am open to exploring opportunities that challenge my skills and offer a good working environment and culture.
Contribute more to the open source community by supporting some of my favourite libraries and tools. I want to give back to the community that has helped me grow as a developer by actively participating and contributing to open-source projects. This will not only help me improve my skills but also help others who are also learning.
Short term goals
Re-read the updated React docs: I want to refresh my knowledge and stay up to date with the latest features and best practices for React.
Build an impressive portfolio with Next.js: I am planning to create a portfolio website using Next.js to showcase my skills and projects. I am open to collaborating with anyone who has interesting ideas for the project.
This is my first published tech article, and I am committed to creating more content like this in the future, including tutorials and sharing my professional experience. By doing this, I hope to give back to the community that has helped me grow as a developer.
I appreciate all the incredible work and generous efforts that many developers are putting in to make the world a better place. I firmly believe in the power of open-source software and will continue to support it.
Thank you for reading.