Hello World!

My name is Przemek and I am a developer with a small perfectionist complex. I know how much I don't know and I want to find out, and about what I know I want to tell you.

tl;dr

Intro

"I am a Developer". If someone had told me 10 years ago that I would proudly be able to say those words someday - I wouldn't have believed it. To be honest, at that time despite trying, "me" and "programming" definitely didn't go hand in hand. A good confirmation of this is that for the C++ course at school, I've tried to put static results of the tasks in the codebase hoping that the instructor wouldn't check the source. Sometimes it worked.

Today I can't imagine any other path. And that's exactly what I want to talk about. What made it happen, that I turned from an anti-developer into a programmer who was happy with himself and his work?

Designer

I've always liked to create something out of nothing. When I was young, I used Lego for this. Over time, the first computer and Need for Speed Underground 2 came to help. I lost myself in this game for a long time because besides sharing my big passion for cars at the time, it allowed me to create. For those times - it was something!

One day, while browsing the no longer existing GT magazine and stumbled upon the "Virtual Tuning" column, which presented computer-modified car designs. I was fascinated by this because in some way it removed the limitations that the game brought with it. I quickly set up a new email account on the school computer and sent a question to the magazine: "How did you do it?". I was lucky not to have to wait long for the answer - or rather two words. "Adobe Photoshop".

I've been sitting in front of the computer for hours, learning new techniques for modifying cars and creating something using online materials and the help of other people. For the first time I experienced criticism (sometimes unfortunately not constructive), Photoshop crashing without saving, failure and anger that what we created didn't really resemble what we had in mind. Over time, the first podiums, feedback and positive comments appeared. It was then that I realized that this is what I want to do and that I'm good at it.

Knowing that I was far from being a programmer, I tried my hand at interface design and I can't say I was unsuccessful, because over time my projects started to look good to me, but it still wasn't something I was really proud of. This wasn't also my first time with web interfaces either, as I had already tried my hand at it a few years earlier by creating graphics in Photoshop and then converting them into websites in Dreamweaver. So my first website was one that was completely made of images and I'm sad I don't have those projects saved somewhere because I would love to have a good laugh.

Once upon a time, I saw a colleague magically create a different appearance of HTML elements for mobile devices. This fascinated me so much that I sat down and delved deeper into the topic. I sat down so long that I got into it. You could say that the media queries my colleague showed me sparked my career in the web industry. A small thing changed my life completely.

Deweloper

As a developer with no experience in the industry and basic knowledge of HTML, CSS, and a good understanding of Photoshop, I decided to take the plunge and try my hand at a professional company. Coditive came to my aid and offered me an internship, which I gladly accepted. To not come across as a complete newcomer and to be able to showcase myself, I started the process of learning about GIT, writing styles using Sass, and creating WordPress themes again. I spent a lot of time using publicly available content created by other people and learning what I should have learned in school.

It turned out that this whole programming thing wasn't as bad as it seemed initially. The further I went, the more enjoyment I felt. A similar pleasure to putting together Lego blocks from my childhood, both in terms of satisfaction with myself and the concept of creation.

Finally, thanks to hard work, learning, and trust from my employer, I found something that probably everyone is looking for - fulfilment. I have been successfully creating web software for over 6 years now, from simple websites to large e-commerce solutions or CRM systems. For several years now, I have also been a mentor and team leader responsible for its development.

Why blog?

As you can see, both successes in computer graphics and web dev would not have been possible without the people who knew something and shared it. This is key. Therefore, the main goal of this platform is to share my knowledge. Perhaps, just like me, someone among you will find a passion, or at least peace of mind, through these contents?

Another important factor is the desire to broaden my own knowledge. I know how much I don't know and I would really like to find out. Constructive discussion, brainstorming and getting to know other perspectives are important ingredients that help me grow as a professional.

What form?

One of the biggest problems I encountered in my previous education (especially in the public education system) was a theoretical and template-based approach. In most cases, schools force us to think according to a specific pattern BECAUSE IT'S SUPPOSED TO BE THAT WAY. They mainly teach us theory BECAUSE IT'S SUPPOSED TO BE THAT WAY. And what do we have after a few years of study? We have knowledge of something called "X" but what exactly are we going to use it for? Hardly anyone knows.

In many cases, the most important thing is missing in education. The history, the moral that will help us remember the knowledge we have just learned. There is a difference between saying "this is integral, it is calculated like this and like that," and "calculating the integral saved my life in this case." Of course, this is an abstract example, but it shows that it is much easier for us to remember what we have just learned through an interesting story from life or an anecdote or at least an analogy to everyday life.

The same goes for some educational content in the IT industry. Besides the fact that sometimes they teach a template-based approach, they also discuss problems using examples (out of nowhere) that we cannot connect to real life. We learn about SOLID rules using triangles and squares, without further discussion of the problem with a real-life example that has already happened and made sense. That is what I would like to fight against by presenting content.

What kind of content?

Only the best! Of course, I'll spoil it. I definitely don't want to show you the best solutions all the time because there simply aren't any.

Everything is a compromise. If any of you played NFS Underground 2, you surely remember the dyno mode, which allowed for a more advanced car configuration. We could change it to suit specific requirements, and compromise played a particularly important role here. We could increase the nitrous oxide boost associated with launching, but this caused it to be used up faster. If we wanted to have it for longer, it simply worked weaker.

The same processes occur in virtually every industry, and particularly in the IT industry. And unfortunately, I know from experience that not everyone understands this. During my learning, I often came across people or even content that presented an "aaa never do this" approach, "the only correct solution is this and that", "always use the DRY principle", "Singleton is always bad" bla bla bla. Of course, sometimes such statements are justified, but in most cases, it was something like "just because". And this is no justification.

Such an approach leads to limitations in the development of creative thinking and significantly complicates clever problem solving. Many young developers I worked with were able to spend tens of hours searching for a solution to a given problem because someone once said "aaa don't ever do this". But what if in this one specific case, that solution would have been temporarily the best and would have allowed avoiding loss of customers and money? As I mentioned, everything depends.

That's why another aspect I would really like to focus on is presenting solutions that fit different types of problems. You won't hear from me "always use the DRY principle" because I'm sure that in some conditions there will be a need to give it up. I won't say "Singleton is bad and don't use it" because I know that in some specific cases, it's good. Just like we say "never say never", we can also say "never say always".

I follow "it depends" philosophy and that's exactly what I'll be using here.

What technologies?

Here, mainly web technologies (PHP, JS, CSS) and their related technologies (TS, Vue, WordPress) will be discussed in various forms. From simple solutions that ease work and allow you not to make a mess, to more advanced solutions that touch on the use of design patterns or software architecture concepts.

If you are looking for content that does not require technical skills - you probably won't find anything interesting here. Sometimes, I will also deliberately omit discussing some basics for the reason that I don't want the content to turn into hours-long lectures. If any knowledge will be required to properly understand the topic - I will try to clearly mark it so that you can get the most out of your time.

In addition to technical matters, I will not shy away from sharing my experiences related to soft skills, such as communication with the client, preparing estimates, estimating tasks, project and team management. Sometimes I will give a little advice in relation to interface design. I would also like to spend some time reviewing and analyzing books that changed my perception of some aspects of work.

I will try to present all the hard-sounding theories and principles of software creation that I know, wrapped in pleasant-to-the-ear and mind stories, to maximize the value of the knowledge gained.

WordPress

Since I have been specializing in creating large applications based on WordPress for many years, I will mainly deal with this system at the beginning.

It is easy to find many negative opinions about this CMS on the Internet. Of course, in each such bad opinion there is a grain of truth because I can say that WordPress is not perfect, but if we learn to operate within the "depends", we will see that it's not as scary as it's painted.

I will discuss why many hardcore programmers consider WordPress to be one of the worst products in the WEB industry and show in what cases, in my opinion, they are wrong. I will present ways to solve certain problems, tricks that allow us to avoid trouble, ideologies that guide me during development, and sometimes even point out a few uncomfortable truths.

We will deal with the construction of a full-fledged website at a higher architectural level (that's how it seems to me) and optimization (a result of +90 in PSI is the default result with little effort) from the process of communicating with the client to estimates, implementation, and enjoying the final result. And then, of course, fixing bugs.

I will dedicate many hours to this topic to show how pleasant it can be to work in this system. Like everything, it has its own problems, but if we approach them correctly, we will achieve a lot. For example, at least we will slightly close the mouths of some fervent haters.

Vue + TypeScript

Vue and TypeScript are my second love! Over time, I would like to present to you my vision of creating applications using these tools, tricks and conveniences that will allow us to avoid fatigue. (Here I will think of something else).

Summary

Maybe all I have proposed to you is utopia. It still bothers me, but I won't know if I don't try. If in any way I help even one person find what they are looking for (e.g. a solution on StackOverflow xd), I will be happy.

I am aware that some of the content presented here may be considered incorrect - that's normal. But I don't consider myself a "rockstar among developers" either. I see myself as a "person who is happy with their work" and I simply want to share my experience. And that's big words, especially from a perfectionist.

I want to show that with a high motivation to learn, sometimes even a word of help from another person and self-discipline, we can achieve a lot! We can fulfil our goals by creating something out of nothing as mentioned at the beginning.

Do you want to learn how to achieve great results with little effort while maintaining inner peace? Do you want to show hardcore developers that WP is not that bad? I invite you to read on!

Feedback

How satisfied you are after reading this article?