I recently joined a software development firm in China - they are small-to-mid-sized of around 20-30 developers, mostly Chinese, and with 5 - 6 "foreign" software developers that are of the most technically apt. I was hired from my school's co-op program, and this will be my third and final co-op, having done one co-op at a web development firm (having not learned much), and my second co-op at a research and development firm primarily using C#.

I decided to come to China because this is the country where I was born. The prospect of working here enticed me since:

  1. It would be a major challenge for me, having grown up in the West (though I can speak and read Chinese perfectly fine).

  2. I wanted to experience the country I was born in on a technical level.

I was hired to the company expecting to be working on their Android team since the majority of my professional experience has been in Java/Android and C# (though their job description was much more general, encompassing web development languages to Objective-C/Java).

I was pulled into the web development team on day one since this particular project was meeting a deadline, and there were still many things that needed to be done. This knowledge definitely stressed me out a little, since the nature of being pulled into a due-project means you're expected to deliver. I said, "alright, let's face this with a good attitude."

Immediately, I had issues with the first project I was given. PHP. I had very little prior experience with this language. My technical project manager was understanding of this, and understood that while he would be quite busy throughout the day (he handles a lot of the technical things of the project), he could still meet with me every day at the end of the day (around 6:30 PM in Chinese office standards) to answer any questions I would have. I got better. I started delivering. I had questions, and I started asking.

But it seems like for the tasks I've been given, and with the team scrambling to catch a deadline, I feel exhausted. I know as an intern/co-op, we are expected to not know much, and for precisely that reason, I decided that I will face learning web development languages with a good attitude since I wanted to challenge myself and learn more. However, with the fact that I was pulled into the project while it was facing a deadline, I find my capacity to learn greatly stifled. Knowing my lack of experience in web technologies, I don't think I am handling the stress well (feel free to say.. "boohoo. What kind of stress do you have?" I understand that).

My questions is - what should I do? I want to learn and I want to be challenged, and I truly believe I have the capacity to do so, but with the stress of the entire team working hard to meet a deadline, and personally also having deadlines, I find myself unable to perform at what I expect of myself.


You do realize that developers will generally be expected to pick up new technologies regularly and this opportunity could be a way to see how this works for you. Thus, this can be where you can work on how to handle the challenge of picking up something new which should be where you apply how you learn to use something different than you have had before. While it may be nicer to have more time to pick up something, the time constraints are likely to be common in the business world at least this has been my experience in 16 years of doing web development.

My suggestion is to consider what coping techniques do you have and find some new ones as if you stay in this field this is likely to be a recurring problem where each person has to find their own way through this stuff as developers are often asked to do things they haven't done before as quickly as possible as there are 1,001 other things to do next and while doing the next 5 there will be another 1000 ideas someone will have so there is no shortage of possible work in the field. Not all companies will properly fund projects but that's a slightly different story.

Note that by coping I mean what do you do to recharge yourself, how well do you know what will drain your energy and what will give you energy. This can be a rather valuable life skill in the world that you have a great opportunity to work on this that while it may be tough at times, by being an intern you will have a bit of an advantage as you aren't expected to have mastered it, unlike more seasoned professionals where it may be expected that in having been in the trenches for so many years that, "Well, you got used to it, right?" is the unspoken thought from other techies and non-techies. Consider how you view deadlines and possibly look into if you have perfectionistic tendencies where a book like "The Perfectionist's Handbook" may help you get to healthier forms of perfectionism.

Software is rarely ever finished in the sense that it has all the features and zero bugs. Rather, it is often abandoned as there are other projects to work and newer technologies that may make the business processes more efficient that come along to replace things. Thus, you have to know how to prioritize your time to be adding business value or managers may have issue with your performance if you work on bugs with little business value.

A project will often have general deliverables to meet along with deadlines. What I've often seen is that when a new software application is released, there will be a warranty period to address any show stopping issues but other feature requests will be wrapped into a new project that will be the next phase that gets put onto the road map for the department to then be prioritized. Thus, there is often a lot of potential work that could be done but limited resources to address all that work. This can become an issue in some companies as some of the work may not require a lot of resources though it may be pushed back as bigger projects take precedence and how to juggle this is something I still haven't really seen handled well in any place I've worked.

| improve this answer | |
  • I don't consider myself a perfectionist, but the point you raised is an interesting one. How do you assess when a project is "completed"? It appears to me sometimes when you've completed a project, there still appears to be XYZ that isn't fully completed, such as, changes in configurations required when moving from development, to staging, to development, or fully testing whether the new commit didn't break previous functionality (we do not have unit testing at the moment..). I suppose this is a part of the stress - the feeling that you haven't fully completed a task and moving onto a new one. – theGreenCabbage Nov 2 '14 at 11:23

Not the answer you're looking for? Browse other questions tagged .