I'm currently a junior developer and will share the lessons of my experience 6 months in:
- Making mistakes will kill you, when you sit at home working on your personal projects and a bug slips through, it's not so bad, you can fix them and the client (or yourself) is normally pretty cool with it. On the other hand, when it's someone elses fault, E.G. yourself, your boss will come down hard on you. That's his project, his clients and his shame, if you make mistakes in a commercial environment, it costs someone money - get in to the habit of being your own quality assurance.
- Your wage is shitty. Well, mine is, anyway. You have to learn to deal with this, I could go in to detail about finding housing and the lack of respect you face when you need housing benefits, etc, or can't eat for a few days, but there's no need. Get used to having no money and always put as much as you can aside for that rainy day you think you are immortal from at the moment.
- Get used to being the go to guy for all the boring work, no one wants to sit there and refactor spaghetti code or build yet another custom joomla module when they have some cool CSS3 design or some technical challenge of epic proportions to work on.
- Give your boss respect, he may be friendly but he isn't one of your friends, you can joke with him but at the end of the day don't forget that this (wo)man pays your wages and evaluates your work, if you're making a lot of jokes but you have a week where your work goes wrong, the evaluation will be that you're the class clown.
- Slow down at the start, when everyone goes in to a new job, we work our asses off trying to impress then slow down once we settle in, even more so for a junior in their first role, we want to prove we belong in the industry. The kicker is that this pace is difficult to maintain and once you slow down your boss will notice your apparent lack of progress.
- Always be early, never be late. Your boss doesn't notice the fact that you come in early every day (by 15 minutes), what he does notice is the one day you're ten minutes late and unfortunately the hours aren't interchangeable. If you make a habit of being late, you are going to get fired, this isn't college where you could turn up to a lesson 15 minutes late and get a giggle from your peers for being that guy, this is the real world, where lateness isn't tolerated for very long.
- Arrogance is bad. You aren't arrogant, but you have an opinion and you come across as it, starting sentences with "actually, I think" or "No, that's wrong..." will land you in the shit, especially in front of a client. Your boss wants to appear to be an all singing, all dancing super coder and until you have a few more years under your belt, your opinion is largely invalid. However, if something is seriously wrong, drop your boss an email or a skype or a campfire (That's a thing, right?) and explain why in the least condescending way possible, if you do this tactically and only at the right times it will look very good on you.
If anyone is about to jump in to their first job as a junior or needs any advice, feel free to email me, I normally check it every couple of hours.
My experience as a junior engineer is completely opposite to yours. I'd also suggest finding another job--your current gig is not offering you a good environment to grow and learn.
Where are you and where is the GP? Cultures around the world are different. My experience as a junior developer in London around 2004 was very similar. Especially that whole "don't be late" thing which really really annoyed me and I'm still coming to terms with.
We do a lot to mitigate mistakes (code reviews, testing, rigorous QA), but when they happen I'm not getting the switch.
We're taken care of w.r.t wages and time. Hours are totally interchangeable here--if I arrive 45 minutes late, I make it up on the back end. I'm also taking care of a graduate degree out-of-pocket (speaks to both the wage and time thing).
I won't speak to arrogance (fallen into this trap, and you don't want to be the guy asserting falsehoods matter-of-factly), but junior devs shouldn't be afraid of assertiveness. I wasn't happy about something here, and when I was asked to discuss it with our tech management team they (a) listened and (b) acted on it immediately. That's big.
I'm located in the north of England, I can't speak for the parent. And yeah, I'm sick to death of the "don't be late thing", my bus comes at an awkward time and it's hit or miss if it's late to be honest (it normally is). Most mornings I have to run to the office.
To be fair I think all of that is good advice if you work at a certain kind of company. At my place of work I don't think any of those apply, nobody tracks your hours for example and you can work from home if you want so the never be late doesn't really work.
And this is from a reasonably sized company (~1500 full time staff)
This does not sound like a positive work environment! This seems to be very unusual.
Also, if you can't make enough to live on, that's insanely unusual in the West.
You need to be able to fail and make mistakes. That's part of being a junior developer. You need to be able to provide intelligent opinions, even contradicting your boss.
But you're right about being aware of the politics and what your boss wants. It's usually bad form to cause one's boss to lose face in front of clients/his peers/bosses.
Your place of work is terrible. When there's a bug in my code, it's because I made a mistake, but it's also because A) my code reviewers didn't catch it, and B) the testers didn't catch it. In a decent organization, blame should be spread and the reaction to problems should be systemic.
> Your wage is shitty
Your place of work is terrible. I had more money than I knew what to do with starting out.
> Get used to being the go-to guy for all the boring work
This is somewhat true, but starting out, many things are new to you, so even if they'd suck for a more experienced dev, it's still good stuff build a foundation on.
> Give your boss respect, he may be friendly but he isn't one of your friends, you can joke with him but at the end of the day don't forget that this (wo)man pays your wages and evaluates your work
I've considered lots of my bosses my friends. Give your boss respect if they earn it. If they don't, complain to someone you DO respect or leave. Also: I've had several reviews mention my sense of humor as a positive.
> Slow down at the start
Don't try to impress anybody. Just do your best because why would you do anything else? And if you're slowing down, it's because they're giving you boring work. Talk to your boss or go find better work.
> Always be early, never be late
Your place of work is terrible. They don't trust you. (My hypothesis: they're projecting their own poor work ethic onto you.) I can work 7am-4pm, or 8-5, or 9-6, or whatever. I can come in late whenever and nobody bats an eye, because I am trusted.
> Arrogance is bad.
Sure, of course, so just mind how you speak. Be good-natured and generous in your assessment of others.
> Your boss wants to appear to be an all singing, all dancing super coder and until you have a few more years under your belt, your opinion is largely invalid.
Your place of work is terrible. Nobody should expect you to be a genius, and your opinion does matter. If they respected you, they'd ask your opinion, and constructively criticize your ideas so that you improve.
In case I forgot to mention it: your place of work is terrible. It is not like this everywhere. Don't start feeling trapped, though: feel empowered. You deserve better.
I'm currently a, "something" developer this is what I would tell you over a beer after a hard days work in the salty salt mines of programming, after 6+ years on the job.
> Making mistakes will kill you
Nah they won't. No matter how it's worded, your current agreement with your employer is actually something like: "We agree that you will make mistakes and learn on the job. In return for this we will pay you peanuts". If they wanted a senior developer, they should be paying for one.
It's also important to point out that the mistakes you make now will play a big part in making you a senior developer. If you're putting yourself out of your comfort zone often enough you should be make plenty of mistakes on a weekly basis. It's nice if like you say, you catch them before your boss/clients do, but I wouldn't beat yourself up too much if you don't.
> Your wage is shitty.... or can't eat for a few days
Leave. Even with only six months of experience you're probably worth at least double what you're getting paid now. That a developer can't eat, in this market, is truly fucking ridiculous.
> Get used to being the go to guy for all the boring work, no one wants to sit there and refactor spaghetti code or build yet another custom joomla module
Refactoring spaghetti code doesn't go away when you become a senior developer, and it's a massively important skill to build up. Most non-trivial projects on big systems will require that you do this. I know it doesn't feel like you're learning anything, but reading code is a hugely important task that junior developers need to do more of (as opposed to just writing it).
The more you do this, the better you will get at understanding big systems quickly. Learn this now, do it at future clients 1, 2, 3, and 4. By the time you do it at client 5, you'll be so good at it that they'll think you're some sort of prodigy (so get paid accordingly!).
> Slow down at the start,... your boss will notice your apparent lack of progress
Who cares? If your boss has a problem with your progress he should let you know and you should work together to improve it. Also: Leave!
> Always be early, never be late. Your boss blah blah...
Personally I like coming in at the crack of dawn and leaving very early. I know other wickedly good developers who prefer turning up at 11 and leaving at 8. Non-developers don't get this, but it's fine. As long as you're delivering results and are available for any in-person rituals, no one should really care what time you arrive/leave.
> Arrogance is bad.
You say that now, wait a few years. When you've surpassed your heros in terms of skill/knowledge and spend most of your time watching other developers wrap themselves into webs of complexity for no good reason (and then have to clean up after them), then tell me not to be arrogant. A strongly worded opinion, arrogant or not, has demonstrably saved months of work and oodles of money for clients down the line.
> starting sentences with "actually, I think" or "No, that's wrong..." will land you in the shit, especially in front of a client
Bzzzt, wrong again! Expressing my opinion in front of clients, even as a junior developer, has consistently been a positive experience for everyone involved, including my boss's at the time. "No, that's wrong" is admittedly a little strong, but it really depends on the content. "No, that's wrong, the google search algorithm works like X so you'll probably have better results doing activity Y" or "No, that's wrong, if instead we make it a RESTful API we get the following 3 benefits..." is a hell of a lot more useful to everyone in the room than you just sitting in a corner being demure.
> Your boss wants to appear to be an all singing, all dancing super coder
I don't think I like your boss very much.
Based on the attitude you've displayed in this post, by any metric you're probably better than you think you are. The worst sort of junior developer is one with no humility, but I think you can afford to be a little more confident, especially when dealing with "Your boss". Also, Leave.
I don't agree with your comments about arrogance. You can be right and strongly opinionated without being arrogant. Junior or senior -- making anyone, boss or not, look bad anywhere, but especially in front of a client is a perfect way of finding yourself at the business end of some pretty nasty social dynamics.
Practice voicing your opinion and arguing for it in a way that isn't confrontational. 9 out of 10 times, it's as simple as acknowledging the other person: "I see where you're going with this, it's a good way to solve A, B and C. But when we get to D, I fear X will bite us in the tail - Y can avoid that.". This also avoids the stinging embarrassment of being arrogant and later being proven wrong.
> "I see where you're going with this, it's a good way to solve A, B and C. But when we get to D, I fear X will bite us in the tail - Y can avoid that."
In practice, I word things similar to what you've described here, probably even more deferent.
Still, if I believe it is in a clients best interest to do Y, I don't mind sticking my neck out and make the case more strongly for it, even if I turn out to be wrong.
Additionally, I've found over my career that I've learned the most useful skills, both technical and otherwise, from developers who were fantastically arrogant. They also happened to deliver the most value to the business, so no one cared.
You can be arrogant if you're brilliant - not the other way around. As a junior engineer (in the 'not much experience', not 'pay grade' sense), you're probably not brilliant enough to be arrogant.
Thanks for your advice and information - personally, I agree with a lot of the points you've made.
The problem is that at the time I took my job, I didn't have much choice, I was in a shitty position, no job, no money, no home, etc. and I took the fist position which came along.
I wish I had been in a better position and been able to better evaluate my current workplace, but in my bosses defence, I am the first (out of family) employee for this oompany, my boss is new to the world of being a boss too and he is unsure of when and where to show his authority.
As for moving elsewhere, I am currently in the process of applying for other jobs and hoping one of them come through.
I should state that I actually like my boss, he's a good person and is as new to being an employer as I am to being a commercial programmer.
I would like a more professional and tactful environment in my next position but I don't in any way blame my boss for how I feel, in fact I have a lot of respect for him.
>> The problem is that at the time I took my job, I didn't have much choice, I was in a shitty position, no job, no money, no home, etc. and I took the fist position which came along.
No shame in that. I graduated in 2001, and was ecstatic to receive my first (and only) job offer. 1.5 years later, the company went bankrupt, and my team of ~7 was sold (OK, the IP was sold, the team got offers). News came out that one person on the team was getting a raise during the transition and that person was me!!
...because the new company didn't have a pay grade that went low enough to accommodate my existing salary. :/
About 5 years later I cracked 6 figures in the Midwest U.S. and I'm not a super/rock/ninja/adjective du jour star by any stretch. My $.02: Keep working hard, know what you want (and don't be afraid to ask), communicate well, and generally be a Good Guy/Gal™. The rest kind of fell into place for me and my guess is that it will for you too. Best of luck!
You're preaching the virtues of submission. Don't let others make you feel this way.
- Making mistakes will kill you, when you sit at home working on your personal projects and a bug slips through, it's not so bad, you can fix them and the client (or yourself) is normally pretty cool with it. On the other hand, when it's someone elses fault, E.G. yourself, your boss will come down hard on you. That's his project, his clients and his shame, if you make mistakes in a commercial environment, it costs someone money - get in to the habit of being your own quality assurance.
Mistakes won't kill you. Pain must be felt. Risks must be taken. Take responsibility for your work but remember that being protected from the reaction to your work is bad.
- Your wage is shitty. Well, mine is, anyway. You have to learn to deal with this, I could go in to detail about finding housing and the lack of respect you face when you need housing benefits, etc, or can't eat for a few days, but there's no need. Get used to having no money and always put as much as you can aside for that rainy day you think you are immortal from at the moment.
Get confidence in your own abilities and then solve the money problem. Get confidence by being really good. And I don't mean wait for your boss to tell you that you're good, I mean look around Hacker News and find those that are good and then do as they do.
- Give your boss respect, he may be friendly but he isn't one of your friends, you can joke with him but at the end of the day don't forget that this (wo)man pays your wages and evaluates your work, if you're making a lot of jokes but you have a week where your work goes wrong, the evaluation will be that you're the class clown.
Don't give anybody respect just because they have authority to evaluate you. Give them respect because they are worthy of your respect. Do your best; if you're cracking jokes and things go wrong, it's significantly better than if you were being dead serious and things went wrong. A positive, fun atmosphere increases the chances of people working well together and getting shit done.
- Always be early, never be late. Your boss doesn't notice the fact that you come in early every day (by 15 minutes), what he does notice is the one day you're ten minutes late and unfortunately the hours aren't interchangeable. If you make a habit of being late, you are going to get fired, this isn't college where you could turn up to a lesson 15 minutes late and get a giggle from your peers for being that guy, this is the real world, where lateness isn't tolerated for very long.
- Arrogance is bad. You aren't arrogant, but you have an opinion and you come across as it, starting sentences with "actually, I think" or "No, that's wrong..." will land you in the shit, especially in front of a client. Your boss wants to appear to be an all singing, all dancing super coder and until you have a few more years under your belt, your opinion is largely invalid. However, if something is seriously wrong, drop your boss an email or a skype or a campfire (That's a thing, right?) and explain why in the least condescending way possible, if you do this tactically and only at the right times it will look very good on you.
Care about being right, constructive and doing lots of high quality work. I wouldn't give a fuck if somebody thought my opinions were 'largely invalid' because there are few opinions in technology: when you want to win you should call upon hard facts! If you want you can massage your bosses ego a little bit but all of this talk of turning up early and bowing to people even when they are wrong has little to do with good business and everything to do with egos and social decorum.
Currently, moving to London isn't possible for me, I've been with my girlfriend for 3 years now and I have to take that in to account when relocating is considered.
That aside, I agree with a lot of what you've said, I'm currently feeling pretty shitty about my job and actively seeking work elsewhere (and being interviewed, etc).
Out of curiosity, why do you propose a relocation to London?
> Out of curiosity, why do you propose a relocation to London?
Not sure about the OP, but the London market has been screaming for web developers for the past three years at least and I would be very surprised if it slowed down any time soon.
To give you concrete numbers, I came off a contract at the end of October (I'm taking a few months off for baby arrival, due any day now) and went to one local user group event to line up some new work for January.
Based on that outing and pinging a couple of recruiters, I have two potential clients who have given me offers for 3+ month contracts, another two interviews next week and the client I just finished with wants to re-contract too. None of the new clients are referrals. Daily rates (subject to change!) circa £500.
I get regular emails from past employers asking for recommendations for full-time developers too. In the vast majority of cases, I have no one to recommend as all of the good full-timers I've been in the foxhole with tend to be quite happily employed.
Don't feel shitty. Concentrate on what you can achieve on a personal level: programming languages you want to know, projects you want to start, and very importantly attitudes with others that you want to hold.
But understand that while you might be able to become great, you're in Lancashire. There aren't going to be as many big deals going on there.
> Currently, moving to London isn't possible for me, I've been with my girlfriend for 3 years now and I have to take that in to account when relocating is considered.
Move to London together, perhaps? You can probably make more alone there, than your two wages together at the moment. (Add in a London job for her, and it becomes even better.)
- Making mistakes will kill you, when you sit at home working on your personal projects and a bug slips through, it's not so bad, you can fix them and the client (or yourself) is normally pretty cool with it. On the other hand, when it's someone elses fault, E.G. yourself, your boss will come down hard on you. That's his project, his clients and his shame, if you make mistakes in a commercial environment, it costs someone money - get in to the habit of being your own quality assurance.
- Your wage is shitty. Well, mine is, anyway. You have to learn to deal with this, I could go in to detail about finding housing and the lack of respect you face when you need housing benefits, etc, or can't eat for a few days, but there's no need. Get used to having no money and always put as much as you can aside for that rainy day you think you are immortal from at the moment.
- Get used to being the go to guy for all the boring work, no one wants to sit there and refactor spaghetti code or build yet another custom joomla module when they have some cool CSS3 design or some technical challenge of epic proportions to work on.
- Give your boss respect, he may be friendly but he isn't one of your friends, you can joke with him but at the end of the day don't forget that this (wo)man pays your wages and evaluates your work, if you're making a lot of jokes but you have a week where your work goes wrong, the evaluation will be that you're the class clown.
- Slow down at the start, when everyone goes in to a new job, we work our asses off trying to impress then slow down once we settle in, even more so for a junior in their first role, we want to prove we belong in the industry. The kicker is that this pace is difficult to maintain and once you slow down your boss will notice your apparent lack of progress.
- Always be early, never be late. Your boss doesn't notice the fact that you come in early every day (by 15 minutes), what he does notice is the one day you're ten minutes late and unfortunately the hours aren't interchangeable. If you make a habit of being late, you are going to get fired, this isn't college where you could turn up to a lesson 15 minutes late and get a giggle from your peers for being that guy, this is the real world, where lateness isn't tolerated for very long.
- Arrogance is bad. You aren't arrogant, but you have an opinion and you come across as it, starting sentences with "actually, I think" or "No, that's wrong..." will land you in the shit, especially in front of a client. Your boss wants to appear to be an all singing, all dancing super coder and until you have a few more years under your belt, your opinion is largely invalid. However, if something is seriously wrong, drop your boss an email or a skype or a campfire (That's a thing, right?) and explain why in the least condescending way possible, if you do this tactically and only at the right times it will look very good on you.
If anyone is about to jump in to their first job as a junior or needs any advice, feel free to email me, I normally check it every couple of hours.