I've met some amazing developers through React Native Community, and I decided to ask them, "How do I become a better developer?"
This is a compilations of answers I received from them. Some of these quotes are not limited to answers from that specific question.
Send me an email @[email protected] if you want to share your word of wisdom with growing developers around the world! :-)
#Interviewees / Current Position
##Q&A
###Aravind Kumaraguru Aravind is an undergrad at UC Berkeley for a degree in EECS, and Engineering Director for the nonprofit organization Pioneers in Engineering.
Q: How do you think I can become a better developer?
A: Obviously, never stay complacent with what you know - this field changes ridiculously fast, and you need to keep up with it. Follow along with the news in the tech industry, perhaps read up on some source code for a Python module that you recently used.
A friend of mine had some free time over winter break, so he decided to teach himself Django and build a webapp that he could interact with over SMS. It's sort of a toy project, but he really enjoyed learning the different development paradigms. For context, he specializes in embedded systems and robotics, so this is nowhere near his comfort zone.
But pushing yourself to try different things will make you much stronger as an engineer. I personally wish I had done more web stuff before this year - in my organization (PiE), we're developing a new iteration of a robotics kit to be used by highschool students. While I have a good grasp of the low-level and systems stuff, I'm at a loss when it comes managing our UI design. Never had an interest in doing that type of stuff full-time, but having even a surface-level knowledge can be immensely helpful
Q: Do you have any projects you did to push yourself out of your comfort zone?
A: I built an automated door opener last summer, which operated a mechanical lever to open a door when an RFID card was scanned. The project used a really powerful motor and a mess of sensors to track the state of the arm, which proved to be quite difficult to coordinate. I learned real quick that I would need to do a bunch of offline testing before running my code on the device, which was very different from what I was used to up till then.
In terms of academics, I just finished CS 189, which was a massive crash course in data science, optimization, and probability theory. The programming I did in that class was also very different from what I'm used to, even though it was all in Python.
###Brent Vatne Brent is Front-end web/mobile developer working on Exponent and React Native. He contributes to tons of open-source projects.
Q: I really want to become a better developer; what would you say the first step is?
A: Do stuff you're excited about and contribute to open source projects :-D
Q: How old are you and how much experience do you have as a programmer?
A: I am 30 years old, and very much :o
Q: How did you join Exponent? What was the cause?
A: James (ide) and I were the most active contributors to react-native outside of facebook and so we spoke a lot. He created exponent with Charlie. I ended up doing some consulting work with them and Charlie asked if I'd be interested in working with them full time and yea, it was lots of fun so I joined.
Q: I should know objective C and Java thoroughly before I jump in to React Native, right?
A: You can learn it as you go if you need to. there's also tons of pure javascript stuff that needs to be done. and documentation. lots of things :)
###Charlie Cheever Charlie Cheever is the co-founder of Quora, an online knowledge market. He was formerly an engineer and manager at Facebook, where he oversaw the creation of Facebook Connect and the Facebook Platform. Prior to Facebook, Cheever was employed by Amazon.com in Seattle. He left Facebook to start Quora in June 2009 to work on Exponent.
Q: What's the motivation of Exponent being free and Open Source?
A: I really want to make something that like a 12 year old version of me would use. So, someone who doesn't know tons about programming but can learn new things and doesn't have a credit card or lots of money, but has time and creativity and a phone and friends. I learned to program making calculator games on TI-85, it's sad to me that kids cant make stuff on their phones today.
Q: Why did you leave Quora?
A: I managed the mobile teams there and it was so slow to work on those apps even tho we had good people, I found it so frustrating And after I left I tried to build some mobile stuff and it was so annoying that I decided there needed to be a different way to make stuff. So James and I made something like react Native called Ion. It was strikingly similar actually. But React Native already had android support and 20 people working on it, and we had 2 people. So we decided to make everything else around it that we wanted to make!
Q: What did you do at Facebook?
A: I made the developer platform that all those games like FarmVille were on. Well not all of it obviously but was one of two main developers. And I worked on the first version of facebook video, then did a lot of random other things. Then was a manager and did login with Facebook on other sites, and then left to do Quora.
Janic is the co-founder of App & Flow, a react-native contributor and open-source contributor.
https://github.com/janicduplessis
Q: Any tips to becoming a better developer?
A: Don't think there's anything in particular, you just have keep learning and getting out of your comfort zone. Like trying a new language or framework from time to time. At least that's what I do but I'm pretty sure there are some other good ways haha :-)
Q: How can I start contributing to React Native?
A: The best is to start with something small like a bug fix or adding a small feature like an extra prop on a component. Most contributors know either iOS or Android and a bit of JS. There are also some JS devs that work on things like the packager and cli. We keep some issues with a Good First Task label that should be a good place to start
Jake is an Open-source Archaeologist. He writes buzzword compliant code. Co-founder at @commitocracy.
Q: Hey Jake, any tips to becoming a better programmer? :-)
A: Number one thing you should do is to learn your tools before you learn the language you work in, because it will lead to faster feedback loops and you will get to experience more in less time. So install a linter and it will catch most of your errors as you type. It statically analyzes your code and recommends best practices to follow. You should always follow best practices until you gain enough experience to start questioning them.
###Keon Kim Keon is a student at NYU who is really passionate about Machine Learning. He is very active github member who tries to contribute to open source projects related to machine learning.
Q: What are your interests? What kind of projects have you worked on?
A: I've been working on machine learning projects these days. I am one of the project members of DeepCoding Project, a project with a goal of translating written English to source code. I've been contributing to a C++ machine learning framework called mlpack(https://github.com/mlpack/mlpack), which is equivalent to scikit-learn in Python.
I've also done some fun side projects: DeepStock (https://github.com/keonkim/deepstock) project is an attempt to predict the stock market trends by analyzing daily news headlines. CodeGAN (https://github.com/keonkim/CodeGAN) is a source code generator that uses one of the new deep learning methods called SeqGAN.
Q: How do you become a better developer?
A: I think it is really important to understand the basics. By basics I mean math, data structures and algorithms. Deep learning is really hot right now, and I see people jumping into learning it without basic knowledge in computer science and mathematics. And of course most of them give up as soon as mathematical notations appear in the tutorial. I know this because I was one of them and it took me really long time to understand some concepts that students with a strong fundamentals could understand in a fraction of the time I spent. New languages, libraries, and frameworks are introduced iterally every day these days, and you need the fundamentals in order to keep up with them.
Sunggu worked at Daum Communications for 4 years. Then, he left Daum to work at Scatter Lab as the CTO. This is his 5th year at Scatter Lab.
Q: How do you become a better developer?
A: Hmm... Becoming a good developer... Every developer has his or her own personality when it comes to programming. As an analogy, think about blacksmiths! Not all blacksmiths are alike--some enjoy crafting the best sword, while some might enjoy testing out the sword more than crafting it. I am a thinker--who plans and organizes thoughts before I carry out an action. I think a good developer knows how to write concise and clean code; you should practice this habit. Even though the trend for programming is always changing, and many people use different languages, write a piece of code that anyone can understand without comments.
Q: What do you think is the next BIG thing?
A: I've observed the evolution of programming languages, and I think it's becoming more abstract every generation--procedural programming, imperative programming, functional programming... I think in the future, maybe in about 20 to 30 years, we will live in the time where the computer writes the code for us, and we just put them together like legos.
Q: What should I focus on studying?
A: I think deep learning is a must. Try different tutorials and learn it with passion. Math, algorithms--anything will help you in the long run.
###Timothy Ko
Timothy is a software engineer at Snapchat. He previously worked at many places such as Riot Games, Square, etc.
https://www.linkedin.com/in/timothy-ko-33127159
Q: What do you do at Snapchat?
A: I'm a software engineer on the monetization team, so I work on anything related to making money. Some example projects are: Snapchat Discover, a news platform within the iOS and Android apps; Ad Manager, a control panel used by sales and ad operations to flight ads; Ads API, which allows third party partners to integrate their own ad platforms into Snapchat. Also, I was a past intern at Snapchat so I occasionally give talks and Q&As to upcoming interns. I'm also heavily invested in hiring and conduct a lot of interviews there.
Q: What do you do on day-to-day basis?
A: What I've mentioned previously. Also, even after I pass on the work to other people, sometimes I have to go back and help support it or be part of the technical discussions on future changes. When new people join the team, usually I'm the one to ramp people up on how the code base looks like, the kinds of frameworks we use, how a typical engineer workflow looks like, etc.
Q: What languages / framework do you guys mostly use?
A: For server code, it's usually Java and for UI we use React Redux. Most teams work in google appengine, which is why we use Java, but some teams switch it up a little bit due to some appengine limitations. And of course, the product teams work in objective C for iOS and Java for Android.
Q: How do you think I can become a better developer?
A: I think the best thing to do is to do as many things as possible. I did seven internships while in school so I already had two years of work experience before I graduated. Work experience is super important because coding in a hackathon, doing personal projects, and doing school assignments are totally different than working with enterprise software and apps with real users. But you have to start somewhere, so that's where going to school, doing personal projects, and competing in hackathons comes in. And while at work, i think the best way to succeed is to ask lots of questions and learn by doing. You can read and study all you want, but you might not understand what's going on until you actually do it. Another thing is code reviews -- you can do so much knowledge transfer by having a more senior engineer tear your code apart and tell you how to make it better. Also, if you ever come up with a proposal on how to solve a problem, getting a tech lead to bombard you with hard questions forces you to make sure you have every little detail covered.