I've been working for a few years at Mindsmiths now, and although we don't strictly have roles like junior/senior, others do regard me as a senior. I certainly have responsibilities that reflect the role.
Sometimes people ask me how I know so much. It's funny to me, because I only see how much I don't know, and I feel way too inexperienced to give any advice. However, it seems I am doing something right, so I decided to share my story. I hope it will help someone who finds himself in a similar situation.
One day, my friends asked me to go to a hackathon with them. I was a sophomore, and my friends were a bit older. I had some programming experience even before college, but I had no idea what to expect so I was pretty nervous. Nevertheless, I gave it my best, and we ended up winning the 3rd place.
This attracted some attention, so a guy from another team asked me to go grab coffee with him. I thought 'why not', and accepted. It turned out he was working for a small startup developing AI solutions. That intrigued me, so a few days later I applied for a job and passed the interview.
At first I wasn't sure how I'd balance college and work, but I knew I'd find a way, and it was too good an opportunity to miss out on.
I got my first project to run, and it was a pretty important one. I was expected to do all these Scrum ceremonies, communicate with stakeholders, make sure things were going okay, keep my team informed, make some important architectural decisions, mentor others, etc. It was a bit overwhelming at first, but at the same time it was a huge learning opportunity.
Being in a startup means you have to wear a lot of hats at the same time. It's a densely packed environment of learning, working, and playing. You also get to see how things work on every level - you're not just a small cog in a huge machine, you're building the machine from ground up.
So, what happened in those 2 years? I'll try to summarize what I learned in 7 lessons.
There is no way I would have achieved what I have if I wasn't deeply passionate about it. I do my work because I love doing it, not because I have to. It's easy to work hard when you love what you do.
Sometimes people tell me "you have to rest, it's important", and I'll often respond "I don't want to, I don't need to". That's the feeling you're going for. I know why I'm doing my work, I know what's pushing me forward, and I know why I'm getting up in the morning. Of course, there are days when that's not the case, but then I just try to find that passion again (after resting a bit).
I've developed a simple habit for myself - when I don't know or understand something, I ask. Sometimes I ask a colleague to teach me, and sometimes I google it. Sometimes I play with a piece of code to see how it works. All of that provides me with a steady stream of new knowledge every day.
With time, I've accumulated a good amount of expertise in certain areas. Then people started asking me questions, and when I was able to provide good advice, my reputation increased.
I was lucky to get a lot of opportunities. Opportunities enable you to show what you're capable of. They are also a risk, and often a responsibility. But, if you're aiming high, take every one of them and do everything you can to succeed.
I got a lot responsibility fairly early on because some senior developers left the company. It seemed horrible and scary, especially because they were (and still are) my friends, but it turned out to be a huge opportunity. I simply stepped up, asked what needed to be done, learned and adapted as fast I could, and did my best.
Proactivity is the best way to get noticed. Sometimes opportunities are simply scarce. It's much more effective to try to create them, rather than wait for them to find you. Also, proactivity shows you're ambitious and interested.
Proactivity is also the fastest way to learn. I've been doing side projects (during the summer, holidays, weekends) as long as I can remember. I learned a lot from them, and it made me a better developer. At Mindsmiths, proactivity is one of the most important things we look for in job interviews.
Sometimes it's scary to be proactive, especially in situations in which you're not sure if you'd be able to do something, or if you feel it's not your place to do it. However, you can't make those really big steps if you don't step outside your comfort zone. So, every now and then, I'd push myself to speak out, be bold, and do things I otherwise wouldn't. When I'd succeed, the risk would pay off big time, and I'd take another step forward.
Sometimes I failed - I'd get excited about something, spend a lot of time on it, and it'd turn out to be completely irrelevant. Or I'd miss my deadline because my estimates were way off. Or I'd deploy something to production without testing it and the whole thing would come crashing down. It's normal for those things to happen. In fact, if they don't happen regularly, there's a serious lack of innovation there.
Failing isn't a pretty feeling, but you learn to deal with it. You get up and try again and again. Each failure is a beginning of something better. It's only the end if you give up.
For me, the beginning was hard, and I constantly seeked approval for everything. I'd do only "my part" of the work and said I was done. After a while I realized I was constraining myself to a small "box". In order for me to take the next step, I needed to allow myself to peek outside of that comfort zone and experience the challenges and adrenaline of the real world. When I managed to do that, a new set of doors opened. I recommend trying to determine what your "box" currently is, and then figuring out a way to go a little bit outside it.
In the end, the only thing that matters is how much value you bring to those around you. Efficiency is great, it means you're doing good quality work quickly. However, effectiveness is the measure of how well you're accomplishing what you actually want to accomplish. Efficiency asks whether you're good at doing your work, but effectiveness asks whether you're doing the right work.
As a junior I was also lured by the beauty of efficiency - how to type fast, how to setup keyboard shortcuts for everything, how to hack something working together, how to test whether something works as quickly as possible, etc. Some of those things do matter, but what matters even more is solving the right problem, making sure the solution fits into the whole architecture, keeping everyone on the same page, thinking about what could go wrong, etc. Because if any of those things fail, all my work will be for nothing and I won't bring any value, even though I delivered the tasks that were given to me.
The most helpful question I've found to begin with is "why?". If a person comes to me with a task (X needs to be done), I ask "why?" to find out what the underlying problem is. Without understanding the context, I wouldn't be able to come up with a good solution. Many times, the solution won't even require any programming. Communication is key.
The thing is, you can't succeed alone. I've had a lot of support, trust and encouragement from wonderful people around me. Without that I know I wouldn't be where I am now. That support won't happen if others don't care about you, and they'll care about you only if you care about them.
The best way I've found to do that is to form deeper relationships with people around me. This sounds hard, and sometimes it is, like in every relationship, but I've actually found it to be quite simple. I just look at everyone as a personal friend and treat them like that. That means asking them how they're doing, how I could help them, and sometimes simply listening to them. But, it also means sharing, being honest, and asking for help - which most people find even harder.
I'm just saying, everyone is different and everyone has their little quirks and gems - show them to others, both good and bad, and also accept them in others.
If I hadn't gone to that hackathon I never would've found this wonderful place and learned so much. You never know in advance what might turn out to be a big opportunity.
To my younger friends I highly recommend to try working at a startup. It's going to be hard, but totally worth it. You'll learn an enormous amount of things, and get many opportunities to prove yourself. Also, don't be afraid to try out a bunch of things until you find your passion. Do your own summer projects (which are even better with friends) and experience the joy of creating something with your own hands. You'll learn a lot from it.
I'm continuing my journey, and as soon as I learn something new, I'll share it with you.