How I got into tech
I’ve always loved learning by making things. Being an electronics engineer, I had a fun time working on microcontrollers/robots, but electronics is an expensive hobby to pursue. Back in 2009, Reddit was a big social platform for people to network, share their ideas and voice their opinion on. And so was Diaspora. In an era of narcissist leaders who would like to shut down the voice of others, especially women and the less blessed, it was very surprising that just by writing code on a computer in your garage, one could give rise to a platform which gave people part of their freedom back. I loved Reddit and wanted to know how it worked. Not knowing anything about the tech field, I went to MIT OpenCourseWare for answers. But alhamdulillah, during this time, Harvard open-sourced one of their top computer science courses on edX called CS50, which was taught by David J Malan, probably the best CS teacher ever. And later Steve Huffman, CEO of Reddit himself had a course on Udacity on how Reddit was built. That was the starting point of my interest in computer science. And my passion for computer science grew when I saw tools like Foldit which were solving real-world problems. Foldit is a revolutionary crowdsourcing computer game enabling you to contribute to important scientific research, by playing a game of protein folding. And folks playing this game are contributing to solving complex diseases.
I started my career by working at a multinational company, TCS. Later, I worked at HapPay, a payments startup funded by Mastercard. And then at a gaming, Adtech startup called GreedyGame, which graduated from Google’s Blackbox connect program at Silicon Valley. Now I work at Cisco, with my current focus being on building distributed scalable systems for our upcoming products.
Cisco is working on some cool new products in the market. The project I work on involves a lot of work on distributed systems, so my current role revolves around coming up with solutions to various problems, pitch-in new ideas, maintain the codebase, nurture the team in the area of concurrent programming and help the team adapt the best OSS practices.
I’ve worked at established companies and startups. This is what it’s like working at a startup and what you need to do to succeed at one.
Working at a startup is a different ball game compared to working at an established company. Both have their pros and cons.
At startups, you get a lot of responsibilities on your shoulders early on. One day you are working on a particular problem, next minute you may have to wear the DevOps hat and see why something is failing on a server, or to add a fix on the frontend web panel. You get honed as a problem solver than just being a language expert.
The responsibilities/requirements change often based on customer’s feedback on the product. At a large corporation, every team has a fixed set of tasks assigned. Work is done at a manageable pace compared to a startup where work gets done quickly in small iterations.
Also at startups, you have a small group of people. So one needs to solve problems on their own. Or if you have good connects in the community, you can get it addressed by them. At established companies, you do have subject matter experts who can easily be reached out to.
One of the major concerns could be job security. A startup, when badly managed, risks getting shutting down quickly. At an established company, one can expect better job security.
On the bright side, you get to learn a lot at a startup! There is no micromanagement. You get to try new things, suggest new features to a product, or own it completely. You get the chance to earn more quickly too. A well-funded startup pays its employees very well. And you get offered stocks/shares in the company.
More importantly, you get to be more than just a developer. You get to see how a company is run from grounds up, how funding works, how products are shipped, how data/analytics is impactful and how the small features one works on is impacting customers worldwide. You gain experience and skills which are invaluable. And it ain’t something you would get to learn in many years at an established company.
The qualities needed to succeed at a startup are to be confident, brave, ready to shoulder responsibility, not be averse to working hard, and not be afraid of trying new things and failing at it.
Here’s what I’m looking for as a tech interviewer and what you can do to make the best impression
Preparation for a tech interview should ideally start a few months in advance before a person applies for a job. It is important to take your time and prepare for the interview with a proper plan.
Being an interviewer, the thing I look out for is whether a candidate has a strong grasp on their fundamentals in the skillset that they have mentioned. One must take time to refresh their basics (and practice basic algorithms well, if needed). Another thing that stands out most is showing a portfolio of your work. If you are a frontend/backend engineer, you can build small side projects and put it on Github. If you are applying to be a data analyst/machine learning engineer, it is helpful to write blogs on your learnings based on various data sets that one has come across. This showcases a lot about a candidate’s skill set compared to what has been listed on the resume.
Nerves before an interview are very common. A candidate should try to undertake many mock interviews online. There are a lot of sites available for it like interviewbit, interviewing.io, interviewbuddy, Youtube videos, etc. Giving a lot of mock interviews will help prepare you to handle these nerves.
And remember, if you’ve worked hard and have not been able to crack an interview, it is part of Allah’s will. A bad interview is always an opportunity to figure out which areas you are lacking in, and to improve on it. It helps you in preparing better for the next interview. One has to be calm and positive in this process. Most of the folks who crack the interview at the Big six have been rejected more than once. I’ve seen many candidates at Cisco who’ve tried multiple times, and companies do give preferential treatment to candidates who try again.
The qualities you need to succeed as a junior developer
The traits of a successful junior developer are that they are hard-working, eager to learn, humble and when things go wrong, they learn and grow from the experience. A junior developer’s main focus is to get the job done. They come up with good ideas to solve a problem but need guidance to validate it. However, a senior developer’s job is to make sure the code is written well, well tested, follows the best OSS practices, etc. A senior developer is also responsible for making architectural decisions and for asking the right questions before starting to work on any feature.
How we can encourage more kids to learn tech
“What I cannot make, I do not understand.”
This is a famous quote by Richard Feynman, someone I grew up listening to along with Walter Lewin.
Science is a study of how things work. There is nothing that you study in your textbooks that can’t be practically manifested or simulated. Coding makes it easy to apply one’s knowledge to action.
Computer science will be an inherent part of every STEAM (science, technology, engineering, arts, and math) field soon. So having an idea about how to code will help kids fall in love with math and science. It is important to inculcate in kids the culture to build things on their own, no matter how useless it is. I’ve been teaching my nephews and sister (who has no interest in tech) a bit about robotics (using things like makey-makey, a sphero bolt, and an ollie) It surely got them interested in robotics, to a point where the kids just sit all day long trying to figure out how to tweak these robots. These platforms offer a very simple interface for anyone to write code, by not actually writing code. There are a lot of tools/platforms which are teaching kids the practical know-how of science, to make them fall in love with this field. MIT App inventor, Tinkering studio, LEGO educational division, tekkieuni, etc are some of them. So the next time you want to keep your kids entertained without them disturbing you, make sure you teach them how to code!
Tech is a great option for Muslim women who want to work from home
Tech is not hard at all. Anyone can learn how to code. One just has to be willing to learn and take the first step. Our mothers have always been our first teachers, so I don’t think women in any way should think that tech is not a field for them. In this age of decentralized software jobs and projects, it is easy to earn a living by working remotely.
I believe we all have our strengths, and diversity is our greatest asset. But tech can also be a hobby, a way to build cool things for the community to help them out, or within a family to learn a lot about science together. niqabicodermum‘s work is an example in itself. (read our interview with niqabicodermum)
I have to thank Allah first and foremost for where I am today. I would say the right challenge (or solution to a problem) has come to me at the right stage in my career, and Allah has guided me through it. When endowed with any kind of knowledge, it is easy to think it is a result of our own strengths that have led us to a certain position, which is wrong. Our job is to work hard, and Allah provides us with the best in our rizq.
Also, my parents have been very supportive. And the OSS community has played a crucial part in my growth.
Farhan is a software engineer with a focus on distributed systems and currently works at Cisco.