I wondered if I should write this article since, technically, I never had to be a ‘one-man developer team’. All my developer life I’ve worked with other people. Luckily for me, I worked in companies that harbored different cultures. That gave me a unique perspective of what the developer world looks like. After 5+ years in the business, I kinda see the problems that often trouble a ‘one-man-band’ in the freelancing world. How do you advance as a developer?
Part of the inspiration for this post came from being an interviewer. I saw a lot of cases of developers who have been freelancing. Majority just implemented WordPress themes and plugins to their client’s sites. We call this the plugin-based development.
Other cases were ‘cowboy developers’. They have been lucky enough to work on one project for over 10 years, but all alone.
Both have the same thing in common: they are wrapped in their own bubble of knowledge. Or, rather, lack thereof.
Trouble with working alone
I’ve been interviewing people at my job for about two years now. This has given me a unique position to observe some things. And I’ve seen that there is a certain trend going on with freelance developers.
They all plateaued at one level.
And I don’t blame them. I know what that’s like.
In my old company, I worked on creating themes for ThemeForest. That was it. Here and there we had some client jobs that required us to do development that included a bit more backend work. It was a small company/startup. All the developers, besides the boss, were juniors. None of us were really aware of the developer world outside of what we did all day.
What we were missing was an outside force, a pressure that would make us want to excel at what we were doing.
The same thing happens when you work alone from the get-go. You have one client. And do just one kind of work. You get ‘better’ (quicker) at it, and that works for you. You get paid and you’re happy doing what you do.
But is this sustainable?
Pushing yourself
I like to think that people are inquisitive by nature. I know that I can get bored with one thing unless it sparks joy in me. And as Marie Kondo said: if it doesn’t spark joy in you, you should throw it out. She was talking about clothes, but the principle stands.
There comes a time in a freelancer one-man-band life where they think to themselves: what am I doing with my life? Is this what I’ll be doing for the rest of the time? Do I want to keep doing this, and if so, can I be a professional, or will this be it?
Often, this is the turning point where they say: I have some experience, let’s apply for an agency job. This will broaden my horizons. See how the big players work. Many are overly confident. Unfortunately for them, they realize the hard truth when coming to an interview. They don’t know as much as they thought they knew.
It’s the price you pay when living in a bubble.
How did I get my current job?
Let me tell you a story about how I got the job at Infinum. You can skip this part if you want, but I like the anecdote. And it has a good point at the end 🙂.
2016 was kinda uneventful for me. I stagnated and I wasn’t happy with my job. I needed a change.
A friend of mine was working on his icon a day project for some time. Seeing him working his ass off, drawing illustrations every day was a good inspiration. He got a huge following and clients out of that project. That inspired me to do something similar. But with tutorials. I started my website where I planned to write simple WordPress tutorials every week (every day would be too ambitious). So I started to do that. I said to myself: 2017 is going to be the year of Denis™️ 😂. I was adamant that my life was going to change.
Writing tutorials got me some positive feedback, and I started to learn more and more. Not only about WordPress, but about PHP as well. I also found a link to a local meetup group, and I decided to give a talk about coding standards. A few months later I got a message on LinkedIn. They wanted to meet with me for a potential job at Infinum.
And so it begins
I was super surprised when I got the message on LinkedIn. Infinum? WordPress? I thought they worked on mobile apps. It was a huge deal for me. I was both scared and excited. The first interview was with Tanja who is the head of HR. We talked about things I do, what I like, and if I follow influential people in my community, etc.
Then I got to work on an introductory task. ‘Slicing’ a design. I worked my ass off. Every day I had to go to work, work for 8 hrs, then got home and worked on the task. I said it is going to do it by Friday that week. Boy, did I underestimated my self 😅 .
It was 23:50 PM Friday when I sent an email with the task. The waiting game started. Finally, I got the email asking me if I’d like to come to a meeting with the management and developers. Little did I know that they would later become my team leads.
I studied up on what I could, got myself prepared, and walked in the interview. Before that, the only interview I had was with my ex-boss, and that was for 15 minutes, nothing technical. This was different. About an hour of questions. Ranging from some personal questions like what I like to do, hobbies, etc. . All the way to the technical questions. WordPress ones I knew, database ones I knew how to guess, and JavaScript ones I also kinda connected the dots. Not great, but not terrible 😁 .
Keeping up the confidence
At the end of the interview, Tanja asked me: What do you think is the percentage that we’ll hire you?
I said around 70%. With full confidence.
My future CTO, my 2 future team leads, and she were a bit baffled (by the look on their faces). She asked: How come?
I answered: Well, you contacted me, so I guess you need me.
She said: Good answer 😁 .
We laughed, said goodbyes, and a little later I got the email saying I got the job.
I was ecstatic. I’ll get to work at one of the top IT companies in Croatia. I made it. The year of Denis™️ is working out as planned.
The key point here is that confidence is the key (backed up confidence). And you need to know how to sell yourself. Interviews are nothing more than that. The presentation where you are selling your self, and your skills to your future employee. Trying to convince them that you are the person they need for the job.
Is there a distinction between developer and engineer?
There is a reason the job title we have at Infinum is software engineer.
Back in 2017, I was a WordPress engineer, where I had only one WordPress colleague beside me. We were a part of the JavaScript team at Infinum. Infinum hires the best of the best developers. After the initial shock of meeting new people, and remembering their names, came the impostor syndrome period.
All the people around me had so much knowledge. About so many things besides programming. Besides their own programming language. Knowledge about systems, design, other CS-related stuff. It was a lot to process. And, being ‘just a WordPress developer’, meant I was somehow less valued – at least that’s what I thought. I mean, all the cool kids programmed in React. Who uses WordPress?
That kind of thinking is super scary. And super detrimental to one’s mental health. It can go one of two ways:
- You’ll either convince yourself that you’re stupid. That you have no place working with people who know so much, and you’ll quit.
- Or you’ll say: to hell with this, and start learning stuff. Learn to better yourself in your field. Learn how to work with other technologies and other programming stacks.
Learning new things
Luckily for me, the majority of the projects I worked on were some frontend things written in Ruby on Rails. This required me to learn some small things about how Rails works, how to get the projects going. Being in the JavaScript team, I had to learn JavaScript properly. And not just jQuery that I worked with. I had to learn how to work with Webpack and how AJAX really works under the hood (check out learnQuery).
After some time I realized that I got this job because I’m worth something. I have some skills that they need. And I shouldn’t feel bad for not knowing as much as my colleagues.
Nobody can know everything. And you shouldn’t be pressured to know everything. But the things you do know – you need to be at the top of your game. You need to constantly learn and watch tutorials, read books. Keep track of the tech changes in your field.
What it means to be an engineer?
Before Infinum, I was a developer. I knew how to build a WordPress theme. And an okayish plugin. There was no pushing myself further. I didn’t try to learn about object-oriented programming or testing.
I just developed and plateaued.
After 3 years at Infinum, working on interesting projects I had to become an engineer. Adapt the engineer mindset. I had to learn how to work with AWS, how to integrate various third-party code into my project. I had to push myself. And it wasn’t easy. I would rack my brain about a problem, but in the end, I learned new things and adapted. Which is a trait of a good engineer.
I had that outside force that pressured me to do better. The first force is the pressure from being in a bad situation (stagnation). The second force is the pressure from being surrounded by an excellent bunch of people. And I cannot stress enough how excellent each person at Infinum is. Both past and current employees.
How to better yourself as a developer?
You may wonder, why am I telling you all this. Sounds a bit like I’m tooting my own horn. Or promoting the company I work for.
The point I’m trying to make is that I know the feeling of being stuck. I want to help anybody who recognizes themselves in a similar situation. There is a way to get out of that rut and better yourself.
And you might not need an excellent agency to push you. There is a simple way that you can become a better developer. A professional in your own field. There is no shortcut tho. It takes time and dedication. Here are a few tips to help you:
Subscribe to newsletters
There are so many excellent newsletters out there that you can subscribe to.
WP Tavern is a sure-fire way to keep up to date with any WordPress changes.
Deliciousbrains have interesting tech articles.
freeCodeCamp also has an interesting newsletter with various topics to check out.
Infinum’s Frontend Cookies newsletter gives you a great overview of frontend related news. Also, there are other newsletters at the end you can check out.
Learn from tutorials
Look at great sites with tutorials like Smashing Magazine, Torque or Sitepoint.
For more technical side Refactoring guru is a great way to learn more about things like design patterns and refactoring principles.
You can look at my own blog.
Check out the websites of some bigger names in the industry. A common trend is to have a handbook or a developer guide with advices that can help you better understand how they work. Great examples are 10up, HumanMade, and of course Infinum’s Handbooks (P.S. check the WordPress one 😜).
Follow some excellent people on social networks
There are excellent people in the IT world, and almost all are on one social network or another. Go, create a Twitter account, and start following.
Read books & programming magazines
I recommend reading Clean Coder and Clean Code from Bob C. Martin (aka Uncle Bob Martin). The code is written in Java, but it’s the principles that matter.
php[architect] has excellent magazines and books for PHP programming.
Go to local meetups and conferences
Meetups and conferences are a great way to be a part of the community, learn something new, and meet new people. Granted 2020 hasn’t been kind on us with having a face to face conferences. But there are lots of quality online conferences you can check out.
Work on an open-source project
This is a great way not only to give back to the community. It’s also a great way to learn how to work on a project with other people. Find a thing that you think you could contribute to, try playing with it, maybe you’ll find a bug you can fix. Fork it, create a branch, and submit a pull request.
Being involved with open-source projects will give you a sense of accomplishment. In the beginning, it’s hard. There are all these contributors who have experience. But that shouldn’t discourage you from helping out in any way you can. You can start small, with documentation changes. Checking out if the project has a list of good first issues. Those are easier tasks that newcomers can work on.
People often criticize open source work, because it’s doing work for free. And partly that’s true. But if you work on a project that is impactful for the community, that can get you noticed. And you could find sponsors or a company that will hire you because of your work.
Plus you’ll learn tons when working on a project like that. How to work with Git (branching, merging, rebasing, etc.). How to work on libraries that interact with end-user code (watching on making breaking changes). And you meet amazing people.
There are tons of projects in the WordPress community to pick out from:
WordPress Themes Team – several projects could use some love here.
WordPress Coding Standards – if you want to learn how to check your code using PHPCodeSniffer.
WP-CLI – a lifesaving tool for working with WordPress using a command-line interface (CLI).
And many more.
Final tip when applying for a job at an agency
Here I’ll just leave my twitter thread that I’ve made recently, about applying for an agency job 🙂
What are you waiting for?
If you read through this whole thing, phew, kudos 😄 . I hope some of these links and advices will help in guiding you on your path to becoming a professional in your field.
Now go and start learning, what are you waiting for?
Leave a Reply