So, I have recently resigned from the company that I work for and started looking for a new one. I sent out my resume to a few interesting senior PHP developer recruitment ads that I saw online and one recruiter scheduled me for an initial interview. The interview went well and I was able to answer all of the questions she asked me. I was also able to ask couple of questions myself. So she scheduled me for a technical exam which she will send the details through the email. Couple of hours later I received the email with the instructions for the technical exam. I was drinking soda while reading the email and I almost choked when I got to this part: > Create the following: > > A web app that does CRUD with authentication and user roles using PHP/Laravel + React.JS. > Create APIs, using PHP/Laravel, that is consumed by your mobile app (React Native, iOS preferably otherwise Android). > Add features that will impress us to showcase your skills, expertise, and experience. Examples below: > > - payment gateway (Paypal, preferably Stripe) > - maps / navigation (Google Maps, Here, etc.) > - social media (SSO, automatic posting, etc.) > - machine learning / AI (facial recognition, eye tracking, etc.) > - blockchain / cryptocurrency > - digital signature, image processing, etc. > - SMS / email integration > - real-time, push notification (chat for example) > - may use any other external or 3rd party API integrations My first thoughts were, *Are they serious?! Are they really asking me to implement Payment Gateway, Navigation, Machine Learning/AI, Blockchain/Cryptocurrency on a freaking technical exam to IMPRESS THEM?!* Dear recruiters, please do not do this. This is equivalent to me applying as a dentist and you're asking me to perform a brain surgery as a technical exam just so I could impress you. This is like asking me to develop a product MVP on my technical exam. This is giving me an impression that you either do not know what you're looking for from a senior developer, or you have no idea what these technologies are. If you have no idea what skillsets to look for from a candidate, then ask some one who has expertise on the field, like other senior developers. And I am 100% sure they will not include Blockchain or Machine Learning from that list.
I have been working in tech industry as a Software Developer for more than a decade now. Let me share with you my 10 honest takes on the job and the industry: ## Technical Knowledge + Communication Skills will take you further in your career Filipino software devs tend to underestimate the power of effective english communication skills. The reality is that as you go along in your career, you will find that good communication skills open a whole lot of opportunities. Being able to negotiate and leverage with your clients and better understanding between yourself and team members are just a few. And it is also a good way to prevent career stagnation. ## Having co-workers is really important Software Developers are notorious for being lone wolves. However, if you want to grow your career as fast as you can, it is important that you work with people that you can give and receive feedback from. ## Technical choices doesn't mean you're better than anyone Software Developers are problem solvers and we approach solutions in ways that we think we would be most efficient for us. But choosing a certain framework or tool does not, in anyway, make you better than anyone. ## Master the basics Anyone can start their Software Development career wherever they want. But if you find yourself getting stuck a lot, then maybe its time to revisit your fundamentals. Build your career on solid and strong foundations. ## Be prepared to unlearn, learn and re-learn Technology is constantly evolving at a rapid pace. A tool that you like using at the moment might become obsolete come next month. Your adaptability to the changes will most of the time drive your technical proficiency as a Software Developer. ## Do not be afraid to make mistakes Everyone at some point will make mistakes. Mistakes are essential for growth. Recognize your mistakes, apologize to those who were affected, learn, and do your best to not make the same mistake twice. ## Burnout is real Software Development is mentally demanding. Constant stream of new information and the pressure of staying current can be quite taxing. Make sure you are giving yourself adequate breaks. And know that it is okay to ask for help. ## Seniority is not all about being the best coder Technical proficiency is just one part of being a Senior Software Developer. It's also all about experience, impact and soft skills. ## Share your knowledge One of the best ways to make a quick and effective impact is to share your knowledge. Be a mentor, create a software package or library, and make content that others can consume are just a few ways on how you can impart to others what you know. ## Remember that there are humans behind computers Software Development is not just about technical skills. It's also about making connections and fostering relationships. Computer programs are developed by humans like you, it's humans that will use them too.
Okay, so this post will highlight something that I think is not being discussed enough, not just in Laravel, but in programming field in general. And this is very much applicable to those who are still studying and fresh grads. Someone, a while ago, just ranted to me something in the lines of *"nakakainis po kasi hindi po tinuro sa amin to sa college" (it's annoying because it wasn't taught to us in college)*. Now look, first and foremost I think one, if not the most, important skill of a good programmer is **knowing how to learn**. That means your willingness and ability to research and discover things on your own. Let me tell you that there are a lot of people in this field who either did not go through college, did not finish college or had a completely different degree in college, but are notably successful, just because they know how to learn. As someone who often screens people for developer position, I weigh too much on the candidate's ability to adapt and learn things. I do not ask candidates during the interview "did your college teach you about interfaces?", instead I ask "do you know about interfaces?". Because this field does not care how you gained such knowledge, this field cares if you already know it or at least willing to know it. And if your answer to those types of questions is along the lines of *you don't know it because your college did not teach you* then do not expect a callback from your interviewer. Second, the point of going through a computer college is not to spoon feed you all the skills that you need to be successful on the field. The point is so you could **acquire the ability to learn on your own**. Computer colleges will give you the fundamentals, but it's up to you to expand your knowledge around what you've learned. Technology improves so fast that you can't really expect your college curriculum to be up-to-date. So if you are the type of person who is lazy, or hates reading and researching, or used to getting spoon fed in high school then better shift to another course because you'll just waste your parents' money on this field.