10

I have been working as Junior Web Developer (self-taught) in a start-up company for six months until now. I am currently 19 years old and this is my first employment. I have been programming since five years in my own free time as I develop for passion.

However I am having a hard time at keeping up with my current position due to lack of manpower and experience. My only colleague, tutor and boss at the same time is not exactly a developer. He's more of a Web Designer, he only takes care of UX and stylesheets of the website. He barely knows anything of our server-side language we use and knows as little in terms of Javascript.

Currently we are working on our internal website and things have been going pretty well except of the unusual ways of handling the life cycle of the product. The issue is that management underestimates the time that is needed to complete a certain task in a decent manner.

For example, I have been given the task to complete two websites in twenty-one days and it is really a very hard task given the fact we have just released on production our new internal website and we are constantly running on bugs related to it.

The thing I "hate" the most is that I need to take care both of back-end and front-end development (that is, Javascript) which I don't really have time for. Our current Javascript code is really.. bad and as much as I'd like to study more about Javascript, it would really be detrimental to my work-life balance (as I can't study on work hours).

I feel like a second developer that takes care only of front-end development, or even better a full stack web developer would benefit A LOT our team. Upper management however due to economical issues can't afford a new developer for now.

This position is a huge responsibility towards the company since it's a break it or make it situation for us (due to an upcoming project) and I don't want to fuck it up, however I am struggling a lot.

Update (28/04/16)

To whoever wishes to know the updates about the situation explained in the question: things gradually started to get better. The company is growing larger in the country and we've hired a second developer that deals with front-end development (currently of an application used internally, and the front-end codebase of what's going go to be the new company website).

I am still the most busy in the team since the business model is changing quickly and the current back-end needs to stay up to date.

Just wanted to let you all know, especially to those who had bad hopes at the beginning.

  • 19
    Jump ship ASAP. An startup that relies only in the output of an unexperienced developer is doomed to fail. Even if you receive "divine illumination" and gain 20+ years experience overnight, most likely your boss is cutting other vital corners, too. – SJuan76 Jun 8 '15 at 0:58
  • 2
    Jump the ship means "search for another job". If the alternative is unemployment, it is better to stay if only for the experience. But the prospects of the startup as you describe it are bad (and, in general, 90% of startups are doomed) enough to do an intensive search, as if you already were unemployed (it is just a matter of time, and not due to your fault). – SJuan76 Jun 8 '15 at 1:10
  • 2
    On top of what SJuan76 said, I would never recommend a position that involves being the sole developer as your first job as a developer. You will be much better off in a role where you can learn from other, more experienced devs. – Carson63000 Jun 8 '15 at 4:14
  • 3
    "I can't study on work hours" - one of the things you'll find as you gain experience is that "studying" (or sometimes researching) during work hours is often one of the most important things you can be doing. It's much, much better for you to spend a little time now to gain knowledge you'll be using for years. It will result in a better product and ultimately increase your development speed. – Chris Hayes Jun 8 '15 at 8:52
  • 1
    @GiamPy Studying things related to your profession on your own time that you find interesting can have benefits. It can lead to new opportunities at your current company but also at new companies. Try to separate what is required by your job and what is interesting and done on your own initiative when defining your work life boundaries. – Eric Jun 8 '15 at 11:06
23

Firstly you need to be aware that if you are struggling due to a lack of resources this is not your fault! You are a junior developer with very limited experience and capacity. It sounds very much like that your employer is trying to do too much on the cheap and expecting you to pick up the slack of his not wanting to outlay the money for a proper development team.

What you CAN do is to raise to the business owners that you feel that you are unable to meet their expected deadlines due to the amount of work that they are requiring you do do.

They can then:

  • Prioritise the tasks that they have (reduce scope) or push out time frames to more realistically reflect the amount of effort; or
  • Add more experienced resources to share the load of both development and design.

Also, you need to put in place a cycle of estimation that accurately reflects the amount of time to achieve tasks. An Agile methodology is a good way of managing such a project, where you have short development cycles that you can gauge your performance and how much time things really take.

If your employer is unwilling to do either of these things, then you need to step away from what is a completely untenable situation. It is not your responsibility to make the business owner's dreams happen if their dreams are unrealistic and are putting far more pressure on you than they should.

  • Good advice. I was going to suggest an edit for that they are requiring you do do. but it's too small – Sharlike Oct 31 '18 at 16:50
5

You may have an interesting opportunity here, actually, though it may be tough to perceive this opportunity through the pressure you feel. Why?

  1. You are in a position of real responsibility, in essence serving as a lead developer.
  2. You may have more influence than it seems.
  3. You recognize your current limits and know that you have more to learn.

These factors add up to the next three weeks being great real-world experience you can use both in this job and when interviewing for future jobs.

Now: most managers, in my experience, do understand that your time comes with tradeoffs. In other words, if you are spending time on one task, you are not spending that time on another task. You seem to characterize your current workload as:

  1. Production support ("we have just released on production our new internal website and we are constantly running on bugs related to it"); and
  2. Creation of two websites in a rapid timeframe ("I have been given the task to complete two websites in twenty-one days")

Are there additional tasks in your workload? Make a quick list. For this answer, I will presume that the list above represents your complete workload.

Given that spending time on one task takes time away from other tasks, it is important to the business that the most important business priorities are delivered the fastest. In an abstract sense, the task with the highest business value (highest profit, regulatory benefit, cost savings, etc.) and the least cost (delivered in a shorter timeframe, purchased off-the-shelf versus development in-house, etc.) is the task that should be accomplished first. Usually -- as I believe is the case here -- the value vs. cost is not entirely clear. Fortunately, you don't have to rank all your tasks this way, since business priorities change all the time. Just rank the top few.

In a more practical sense, I would recommend:

Organize your thoughts and tasks.

Look at your task list. Are there tasks (such as lower-priority defects with the internal website) that can be delayed until after the launch of the two websites? Are there parts of tasks that can be reused, especially between the two websites? Are there libraries (free or paid) that may solve parts of your problem for you? Don't spend much time on this effort, but even a few minutes organizing this list will help you have a conversation with the business stakeholders.

Get agreement on business priorities for your tasks

Now that you have a list, find out which tasks in your workload have the most business value from the perspective of your management. This means asking your manager -- and anyone else your manager believes should be involved -- to decide which tasks in your workload take priority over the others. In your situation, the two questions I would most likely raise are:

  1. Which production support issues have a higher priority than the two websites, and which production support issues can wait? It helps if you can help to identify temporary workarounds for more minor issues. It also helps if you have anyone else in the business who is able to triage the production support issues for severity so that you don't have to do it yourself.
  2. Of the two websites, which one is more important? Yes, yes, they're both important. But, pretend that only one could be done. Which would it be?

From these questions, gain agreement on which work is to be done first. If production support issues are the most important, they get done first. If some production support issues can wait until after one website or both websites are done, work on the websites first.

Important: "agreement" does not mean "set in stone." Business priorities can and do change all the time. As long as you recognize and the business stakeholders recognize that changes come with a cost, if your manager (or other "boss") changes your priorities, and you have advised the business on the cost, then your priorities have changed.

Keep the business updated at least daily on your progress

This doesn't need to take long. A quick e-mail should suffice. Raise any new issues that someone else could reasonably help you resolve.

If you are waiting to get a question answered, work on your next priority

That way, you are continuing to make progress.

Don't push yourself past your level of productivity

You have a job that requires you to think -- or at least, we hope so. It does no one any good for you to keep working when you are too tired to continue. Get some rest and come back the next day, rested and ready to work.

You are in a tough situation. You may or may not get everything done that the business wants. But -- the business is almost certainly better off if you deliver something usable. If you can get your first website done in a little under half the time allotted -- or at least the most important, usable parts of that first website -- you are in a great position to reassess the situation with the business.

Good luck to you. Many of us have been in situations like this, and while you cannot and should not constantly work in crisis mode, know that you can survive this ordeal and maybe demonstrate more worth to this employer -- or a more reasonable, future one.

2

You have two options

Option 1: Improving the organisation

  • Introduce Agile project management, and try and streamline project delivery.

Option 2: Join a more established organisation

If you are the only Developer, you risk the following:

  • Poor career development and developing bad habits since there is no one to guide you
  • Since it is a start up, you are likely to earn below the market rate. Many start ups try to hire graduates or earlier, since they are cheap. Combine this with point 1 and you will find it hard to get well paid dev roles.
  • Extreme pressure (you are the only developer after all)
  • being out competed by those who have worked with senior developers in organisations where there is a lot more structure in terms of a cross functional team being at their disposal. This might not affect you now, but it will affect you when you move on and are working in an organisation that has processes. Since they will screen you to try and get an understanding of how you can work in a team.
0

1) Time management for your own self is key. Being able to dispassionately assess whether you have space in your schedule to accommodate extra work requests is a great skill to develop.

Being able to refuse those requests diplomatically is a key work skill: "Yes, I'd love to do that for you. Unfortunately, that would mean stopping working on ... . What do you want to prioritise?"

It really helps to separate the Important from the Unimportant, and the Urgent from the non-Urgent.

                      Non-Urgent      |     Urgent
                    ____________________________________
        Important   |    Do This      |    Do this 1st! |
       -------------------------------------------------|
      Unimportant   |  Don't bother   |  Weigh against  |
                    | unless you have |  "Important and | 
                    |   spare time    |   Non-urgent"   |
                    |___________________________________|

2) Work on your theoretical knowledge of software development. Being self-taught is great, but it can leave gaps in your professional knowledge that you won't be able to spot are there. ("You don't know what it is you don't know".)

Getting a good theoretical grounding will speed you up in both the short-ish and the long runs.

I recommend learning Smalltalk as an excellent way of gaining a thorough understanding of OO development. Once I learnt Smalltalk, and its object model and its laser-like focus on sending messages to objects, the other languages - Ruby, Java, C#, Objective C and JavaScript were much easier to learn, and to improve in, and to develop with.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.