Working at a Startup as an Intern
Over the past three months, I was lucky enough to join a tech startup company as an intern. This was not my first working experience, but my first time working in a startup. A startup environment could be vastly different from an established corporate, and there are also ups and downs come along with it. For me, working as an intern is really all about learning new things, which are not limited to technical skills, but also soft skills that needed to communicate and collaborate with other people.
** Originally published on LinkedIn
But first, I would like to give you some context. This startup company is funded, and has three employees before I joined, five (excluding me) when I left. Among the five, there is a CEO, CTO, two software engineers, and another intern. There are also some other employees with position that do not work in same location as me. Of those five, only the CTO has about a year of working experience, the rest are all fresh graduates or yet to graduate. With this context, you may better understand where this article is going.
One of the biggest different between a startup and a corporate is that a startup company is starting everything fresh. This could really be both advantage and disadvantage. A fresh start gives the company opportunity to align its goal, its business model and business logic, which could be difficult when you are already established. Planning out a company business is always fun and exciting right? However, experience really matters a lot in this case. In order to not waste unnecessary effort on error correction in the future, good planning is the biggest contributor. Experience is what a startup always lacks, especially startup company like us. This statement is later confirmed when we made wrong assumption about our users and have to spend plenty of time doing modifications.
As a software company, project management is one or the most important part when developing software. Most of us have a major in software engineering, and we have learnt the importance and theory of various software development life cycle techniques. But none of them really come into good use when we are interacting with the real world. The first few months is a mess. We did not have a structured nor systematic development model to adhere to. For a few months, we are chasing our own tail, correcting and rewriting code that we thought were good enough. We spent precious time to sort out unnecessary complicated mess. Work and responsibility assignment were also a mess. For a few months, we had just one person responsible for both mobile platform specific app development, as well as web server development and administration. Although I was underqualified and lack of knowledge in a lot of fields, I felt that I could do more to ease the burden of my peers. Despite the messy appearance, we did have a source control management for all our code base. It is so important to have a source control in code collaboration; therefore, we did not forget about that. However, most of our branches and commit messages did not follow any convention and resulting in many awkward cases. Sometimes one would not understand another person code nor his commit message and caused accidental deletion or duplicated code for the same functions.
Another issue faced by startup company, especially startups in the city I located, Johor Bahru, is a serious case of talent starvation. There are just not enough talented graduates that willing to work in this city. This can source back to a lot of other geographical and political issues, but the problem is apparent and must be warned to anyone attempt to startup. As a result, this leads to heavy work life imbalance. I have noticed my colleagues are in constant risk of getting burned out, and they worked more than 14 hours a day. This is a huge no for any company that wanted to maintain employee morale and a huge risk on employee health. Furthermore, the issue deteriorate as there are no job specialization could be found. This is essentially one man do everything type of scenario. Juggling too many stuffs could cause one to overlook something, one a serious security flaw might be one of them.
As I mentioned earlier, startup company has its advantage too. Every move is uncharted water to us, which means we learnt new things every action we took. For me, because of my lack of skills and knowledge, I have to learn a vast amount of technical skills in a very short amount of time. I learn more in a week than what I could learn in a month if I am learning in my own pace. Furthermore, start up company tends to have a friendlier environment, or at least the startup company I went to. Colleagues are more like friends than working partners, which makes any barrier practically disappear. It was a very comfortable working environment. On top of that, I had a very good mentorship experience and would have not learn much without.
Overall, my journey with them is an enjoyable one, and had given me valuable experience. It was an encouraging environment, where everyone’s opinion is valued and considered, even an intern like myself. Everyone in this company has the equal volume of voice on majority of software development decision making, which is extremely valuable for any company that wants a high employee retention.
In conclusion, it was an invaluable lesson for me and I am really glad that I was given this opportunity. Learning just the software development and technical theory is not enough nor learning solely the practical. Both theory and practical knowledge must come hand in hand to have the ability to solve real world problem efficiently.