Junior developer woes



  • As a growing company, we recently hired a new Junior developer. The guy didn't have any work experience, but he did have a fresh university degree in CS, and he did well in the interview. In order to help him get his feet wet, we gave him some simple one-off projects to work on. We didn't have time to review his code, but the projects were so simple that they a university grad should have had no problem with them.

    It turns out that this was a terrible mistake. He left the company after about two months of development. Then, the trouble started. As we began using the projects he had worked on, nearly every single one had some critical bug or flaw that prevented it from being used. This forced us to scramble to start fixing his work.

    I have never in my life seen code this poor. There are too many WTFs for me to include them all here, so instead I'll just provide the most recent one that I had to fix:

    private boolean isYearLink(String name) {
        
        boolean isYear = false;
        
        switch(name) {
            case "2005":
                isYear = true;
                break;
            case "2006":
                isYear = true;
                break;
            case "2007":
                isYear = true;
                break;
            case "2008":
                isYear = true;
                break;
            case "2009":
                isYear = true;
                break;
            case "2010":
                isYear = true;
                break;
            case "2011":
                isYear = true;
                break;
            case "2012":
                isYear = true;
                break;
            case "2013":
                isYear = true;
                break;
        }
        
        return isYear;
    }
    

    Rather unsurprisingly, this choked on a year of 2014. To date, this developer has actually cost us more time than he saved us, and we are still running into time bombs left in his code. I've taken to just completely rewriting his code any time there is a problem with it.


  • FoxDev

    That code is pure :wtf:

    Also, why do you haver isYearLink() in the first place? Have to ask; quills twitching



  • @davewtf said:

    We didn't have time to review his code

    So, you actually ruined his career?

    Universities don't teach sensible programming, they teach how to make a project work at the exact moment it will be graded by the teacher.



  • Businesses offloaded the responsibility of training onto college, and expected it to just work without their involvement.

    Just like parents offload education onto public school system, and expect it to just work without their involvement.

    At least parents don't reject their children if they aren't fully functioning adults by the time they graduate.


  • FoxDev

    @davewtf said:

    a fresh university degree in CS

    My degree is in CS, from the University of Manchester no less. Six months into my first job, it was rendered forever irrelevant.

    There is no substitute for real experience.



  • @davewtf said:

    To date, this developer has actually cost us more time than he saved us

    One time I had my boss send a contractor home for his last four weeks even though we were obligated to pay him. There's no way we would have finished the project with his help, but we had no problem finishing without him.



  • @RaceProUK said:

    There is no substitute for real experience.

    Let's see.

    My school is on my resume still....

    Education


    [Degree] : [Department], [Year]
    [School] -- [Location]

    Yeah, I guess I don't even have my GPA on my resume any more.



  • The project was a screen scraper for a client who was transferring his business to us. The client had many thousands of records with his old provider, who refused to transfer the client's data to us. This was part of the parsing code in that project.


  • FoxDev

    of all the things i learned in college the most valuable stuff was what i learned going "ooh that looks fun (code code code) wait.... it's 00:00‽ well i guess i'm sleeping in the lab tonight because my car's locked in the garage again (code code code) 07:00? i have class in an hour? fracking hellfire! (code code code)"


  • FoxDev

    @xaade said:

    My school is on my resume still....

    it is useful for getting through the HR gauntlet. that's about it. good to get the networking started and it does teach you more than you'd think. it's just the best stuff is learned outside the classroom.



  • @davewtf said:

    The project was a screen scraper for a client who was transferring his business to us.

    @davewtf said:

    we gave him some simple one-off projects to work on. We didn't have time to review his code

    No, I think you guys are TR :WTF:

    Live data from existing system isn't valuable enough to ensure it was done correctly?

    Also.

    One off project is complaining about not continually working in future years?

    Look, I don't feel sorry for you guys here.

    Maybe his code could have been better, but what kind of time constraint did you have? How much cost did you put into it. You failed to judge the cost/time/quality triangle correctly, and you blame a junior programmer?



  • Sorry, when I say that he left the company, I mean that he quit. I would have been happy continuing to train him (albeit with a much shorter leash than we had previously given him).


  • FoxDev

    @davewtf said:

    I would have been happy continuing to train him

    I'd be tempted to run a very intense training course. Perhaps involving a hammer…

    ClueBats are an acceptable substitute.



  • @davewtf said:

    I mean that he quit

    Could it be that.....

    @davewtf said:

    We didn't have time to review his code

    You put no effort into helping him further his career.

    @davewtf said:

    I would have been happy continuing to train him

    And when was this training supposed to start?



  • The code didn't work the first time it was run. It was written in 2015.

    Client data is always verified before a transfer is finalized, so the actual amount of damage the developer could do was quite limited (aside from wasting our time). That being said, this project was just about the simplest thing imaginable. It was rewritten in about 100 lines of code.


  • ♿ (Parody)

    @davewtf said:

    As we began using the projects he had worked on, nearly every single one had some critical bug or flaw that prevented it from being used.

    Lucky guy. Sounds like one of the "Senior Developer"s we have.



  • @davewtf said:

    It was rewritten in about 100 lines of code.

    So all the way up to 2038?


  • Grade A Premium Asshole

    @davewtf said:

    We didn't have time to review his code

    You took a guy fresh out of college, gave him a blank check and a clean slate (albeit on a presumably small project) and he shit in to a text editor...color me surprised. You guys are TRWTF. You always do code reviews and you do code reviews with a fine tooth comb when they are so green they need mowing.

    @davewtf said:

    The project was a screen scraper

    And you thought that a n00b could handle any part of this on his own? Really? There are millions of ways that even a senior developer could shoot themselves in the foot on this considering the circumstances. Parsing stuff like that is like tap dancing in a minefield.



  • @davewtf said:

    The code didn't work the first time it was run. It was written in 2015.

    Client data is always verified before a transfer is finalized, so the actual amount of damage the developer could do was quite limited (aside from wasting our time). That being said, this project was just about the simplest thing imaginable. It was rewritten in about 100 lines of code.

    You hired directly from graduation, want to put no effort into the education system or training your employees, and you blame the kid?

    He had zero direction, zero support, it's no wonder he wanted to quit.

    Did he even have a test environment? Did you at least give him that?

    I'm sorry, I'm tired of businesses wanting to put zero effort into improving the career and skills of their employees, then complaining that they didn't get an all-star at hiring.

    Half the interview :wtf: are because companies can't even get hiring right.

    College is ruining us. We need to go back to mentorship and apprenticeship.


  • Grade A Premium Asshole

    @xaade said:

    Half the interview are because companies can't even get hiring right.

    Or even having realistic expectations when you hire them...



  • redacted.


  • BINNED

    @Polygeekery said:

    Or even having realistic expectations when you hire them...

    People over here still have this idea of putting up insane requirements as well. Up until recently any job past cleaning the streets "required" a full college degree (bachelors? bah!) and at least 3 years of work experience. There is a job site here called, literally translated, "My first job". Every single job asked for prior work experience.

    It's a bit better now, apparently. Dunno, didn't browse the listings in a while.

    I also have a friend in a trainee position atm. The extent of education they get is links to documentation and maybe a few examples made by previous trainees. I already had to help her get an assignment done in time twice, since they just throw a project that has to use technology X at them and expect a fully working demo app within a week.



  • @RaceProUK said:

    There is no substitute for real experience.

    Agreed. 15 years in the field, and I don't even have a CS degree.



  • @xaade said:

    So, you actually ruined his career?

    Universities don't teach sensible programming, they teach how to make a project work at the exact moment it will be graded by the teacher.

    That's not entirely fair. Universities certainly take a lot of money for their services. Part of those services include "make sure our degree holder is able of writing a code to check if a string contains a 4-digit number".

    The company could have done more to help, but the kid should have known better too. My intern is frustrating me to no end, but he would have never produced crap like that.


  • Grade A Premium Asshole

    @Onyx said:

    There is a job site here called, literally translated, "My first job". Every single job asked for prior work experience.

    May I ask where that is?


  • BINNED

    Idiotville. Also called Croatia at times. But I prefer Idiotville.

    Offtopic: Yes, Discourse, may I help you?



  • Ok I was on a bus while you posted this and apparently there was some kind of crazed, insane posting frenzy during that one hour for some reason, so I'm sure everybody beat me to it but:

    I think you're The Real WTF here.

    @davewtf said:

    We didn't have time to review his code,

    That's a huge red flag.

    @davewtf said:

    but the projects were so simple that they a university grad should have had no problem with them.

    I've interviewed university grads who can't figure out how to write code to add two numbers together. I might be exaggerating slightly, but only very slightly. Not to encourage Atwood, but the "FizzBuzz" tests and similar super-easy tests exist for a reason.

    In fact, from my experience, a degree is completely irrelevant to predicting how competent a programmer is. It doesn't move the needle even one tiny notch.

    @davewtf said:

    He left the company after about two months of development. Then, the trouble started. As we began using the projects he had worked on,

    You let him write code without testing it for two solid months? Like, code you actually need to solve business problems?

    @davewtf said:

    To date, this developer has actually cost us more time than he saved us, and we are still running into time bombs left in his code.

    I am not surprised.

    @xaade said:

    Universities don't teach sensible programming, they teach how to make a project work at the exact moment it will be graded by the teacher.

    Right; after choosing my major, I soon realized that universities taught either:

    1. stuff I already knew, or
    2. stuff I couldn't possibly anticipate ever needing in a programming career, like Advanced Calculus (turns out I was 100% correct in that regard)

    They certainly never taught anything useful for the practice of software development. What weren't we taught? How to organize a large, complex project. How to do usability testing/design (ironically, our school had Psychology department classes that did but the CS program didn't require or even mention them.) Tools like debuggers, source control, static analysis. A million other things.

    The only thing of value I learned in university was relational database design. And my biggest regret is wasting 4 years of my life on that crap.



  • @davewtf said:

    Sorry, when I say that he left the company, I mean that he quit. I would have been happy continuing to train him (albeit with a much shorter leash than we had previously given him).

    He'd been there two full months. Did he know that?



  • @accalia said:

    of all the things i learned in college the most valuable stuff was what i learned going "ooh that looks fun (code code code) wait.... it's 00:00‽ well i guess i'm sleeping in the lab tonight because my car's locked in the garage again (code code code) 07:00? i have class in an hour? fracking hellfire! (code code code)"

    Sadly, bodies can keep up with our project enthusiasm for only so long (and that capacity seems to dwindle with time once one gets past their twenties)...

    I avoid overnight projects whenever possible now.


  • FoxDev

    @redwizard said:

    I avoid overnight projects whenever possible now.

    i never did them intentionally. they always happened by getting sucked in and completely losing track of time.



  • @Polygeekery said:

    You always do code reviews

    +1, but to be fair, you only need to review the code which goes into production and that your business depends on. (Compare: you only need to floss the teeth you want to keep...)



  • @xaade said:

    So, you actually ruined his career?

    That's a bit harsh: the kid was straight out of college—he didn't even have a career to ruin yet.


  • Grade A Premium Asshole

    @tar said:

    Compare: you only need to floss the teeth you want to keep...

    Good analogy. Or metaphor? Or simile? I don't know, I always sucked at English class. ;)



  • File under "stuff my dentist said", if that helps...



  • @cartman82 said:

    That's not entirely fair. Universities certainly take a lot of money for their services. Part of those services include "make sure our degree holder is able of writing a code to check if a string contains a 4-digit number".

    Is it though?

    The precursor to college was apprenticeship. You would work up through a company to the point where you apprentice under an engineer or other trade.

    Colleges were invented to give us a shortcut to mastership of a trade. However, they keep failing horrendously. Mostly because they can't provide an environment that:

    1. Shows the consequences of failure.
    2. Has students overcome failure.
    3. Has students maintain a product, as opposed to just building one.

    Enterprise Software is like a Jenga Tower, where the foundation is destabilized in the name of expanding features. As features become non-congruent with existing features, and no time is given to refactoring, you end up with a monster that becomes harder to maintain. So in my mind its similar to Jenga in that you remove a piece from the bottom to add to the top, until your tower collapses. It's only then that you can convince your company to rebuild a new tower, but often they force you to just carefully add a the next piece and blame you when the tower falls.

    None of these stressful situations are tested in college.

    The most college tests is the production of a product that works at grading time, which exactly produces pieces like this.

    private boolean isYearLink(String name) {
        boolean isYear = false;
        switch(name) {
            case "2005":
                isYear = true;
                break;
    

    And so forth.

    @blakeyrat said:

    Right; after choosing my major, I soon realized that universities taught either:1) stuff I already knew, or2) stuff I couldn't possibly anticipate possibly needing in a programming career, like Advanced Calculus (turns out I was 100% correct in that regard)

    And since businesses aren't involved in the formation of the degree, this is allowed to be acceptable preparation for a job.

    And given at least a decade by businesses to figure out how to work out the lack of preparation problem, and that neither can figure out how to work together. Especially the fact that businesses complain, but never offer a solution. We have to come to the conclusion that college is failing its purpose.

    College insists on scholarly pursuits in lieu of job preparation. Therefore, if someone's intent is to be prepared for a job, college is not the correct provider of that need.

    And this is the problem we face when we want a shortcut to trade mastership. We divorce the trainer from the work environment and complain when the trainer can't adequately prepare workers for a work environment.

    College is failing us => FACT.

    How do we solve it?



  • @davewtf said:

    We didn't have time to review his code

    So what you're saying is, this is actually all your fault but instead of being an adult about it you just blame junior for not knowing anything.



  • @xaade said:

    Colleges were invented to give us a shortcut to mastership of a trade.

    This has produced three problems.

    1. It has devalued the work of what was previously entry level jobs. Now the old entry level jobs (like mail 'boy') are dead-end jobs without the ability to increase pay to a livable amount to provide for a family. Previously you would exit reliance on parents to start a new life, work a mailroom job to provide for yourself, then graduate to a trade to provide for a family.
    2. Workers are no longer prepared for trade jobs. This has devalued the work of entry period trade jobs. Now you have to work 5 years before you can expect to get paid at the level of worth for a trade. Mastership is still gated to work experience.
    3. Companies expect colleges to do all the work for them. This means that workers cannot get the training and support they need from companies and are punished for not knowing how to act like a professional, when they were never trained for that part, by the school or the company.

    Yet, here we are two/three generations away, still convinced that college is necessary, and even increasing its reach of necessity to lesser and lesser valued work.

    Eventually you're going to need a college education to be a store clerk, and the rich poor gap will increase even more.



  • @xaade said:

    College is ruining us. We need to go back to mentorship and apprenticeship.

    @Onyx said:

    People over here still have this idea of putting up insane requirements as well. Up until recently any job past cleaning the streets "required" a full college degree (bachelors? bah!) and at least 3 years of work experience. There is a job site here called, literally translated, "My first job". Every single job asked for prior work experience.

    You guys hit the nail on the head.

    When my dad went to Zagreb University back in the 60's, part of his mechanical engineering course requirement was to work at a job as an intern, for which he was graded by his Supervisor on the quality of his work. Thus, upon graduation, he had real work experience in tandem with the degree.

    Seems these days industry still expects that work experience without being willing to put in their part of the internship work. Hence the insane job requirement of the "first job" requiring work experience, which anyone writing such an ad should realize what an oxymoron it is these days (not to mention how it sounds).

    @Polygeekery said:

    You took a guy fresh out of college, gave him a blank check and a clean slate (albeit on a presumably small project) and he shit in to a text editor...color me surprised. You guys are TRWTF. You always do code reviews and you do code reviews with a fine tooth comb when they are so green they need mowing.

    Pointing out exactly the problem. Yes, the code presented is WTFey, but we all take for granted that this is WTFey in the context of real world implementation. What real world experience does this coder have? Exactly: none. I've been in this coder's equivalent shoes (see this if you want a review) & having someone take exactly TWO MINUTES in their day to show me the error of my ways and why it's an error made all the difference in the world. Just that one correction alone caused me to adjust my approach to not only that problem, but all future ones, as I was now cognizant of real world costs and consequences that I had to take into account when designing/building/coding anything.

    This coder clearly never had the benefit of that "aha" moment.

    @boomzilla said:

    Lucky guy. Sounds like one of the "Senior Developer"s we have.

    Bet you one of two things has happened here:

    1. He is and always was too arrogant to be allowed to show how to approach problems as outlined above, or
    2. No one ever showed him, and now he's "successful" [at getting and keeping a job] this way for so long that he's no longer open to being shown how to approach problems the right way.

    It takes the right mix of creativity and opportunity to maybe get through to a person like that. The tendency instead is to shoot and bury them before their insanity becomes contagious (wait...is it technically too late by then? That aside, want to borrow my firearm?)

    EDIT: link fixed, courtesy of @darkmatter


  • ♿ (Parody)

    @redwizard said:

    Bet you one of two things has happened here:

    She's just an idiot. I base this on several years of shared work experience.


  • Grade A Premium Asshole

    @redwizard said:

    having someone take exactly TWO MINUTES in their day to show me the error of my ways and why it's an error made all the difference in the world.

    Which is exactly the reason I am a big proponent of "why". You can tell a person over and over again what to do and you only create an automaton. Tell them why they should do it and they can learn to make decisions on their own.



  • @boomzilla said:

    She's just an idiot. I base this on several years of shared work experience.

    Let me repeat the question:

    @redwizard said:

    That aside, want to borrow my firearm?

    ;-)



  • @redwizard said:

    When my dad went to Zagreb University back in the 60's, part of his mechanical engineering course requirement was to work at a job as an intern, for which he was graded by his Supervisor on the quality of his work. Thus, upon graduation, he had real work experience in tandem with the degree.

    Businesses have outsourced their training, made their workers pay for it, then complained that it wasn't tailored for their needs.

    Businesses need to take back responsibility for the preparation of the workforce.


  • ♿ (Parody)

    @redwizard said:

    That aside, want to borrow my firearm?

    For the record (and any law enforcement that happens to be around): no.



  • @boomzilla said:

    For the record (and any law enforcement that happens to be around): no.

    For the record: that was in fact a joke, since I don't currently own any firearms. :P


  • Grade A Premium Asshole

    @redwizard said:

    That aside, want to borrow my firearm?

    Pfffffbt. @boomzilla fell off the right wing. You think he doesn't have his own?



  • @xaade said:

    College is failing us => FACT.

    How do we solve it?

    Computer science isn't a thing, That's the fundamental problem. (It is but bear with me, I'm making an argument here.)

    Programming is a great tool. It can save millions of man-hours of time. But there's no point in engaging in programming without a problem domain attached.

    My university seemed to think the only purpose of programming computers was calculating orbits, or something. That's why they were crazy about calculus, things like Fourier transforms, etc. But isn't it just as valid to use your programming skills to assist an accounting firm? Why did they teach calculus and not double-entry accounting? Why is the problem domain of "calculating orbits" any more or less valid than the problem domain of "double-entry accounting" or "having 40,000 friends in a social network"? Why does the university teach skills needed for one of these problem domains and not any of the others?

    The problem is that they had some kind of weird romantic notion about what programming is used for, completely divorced from real-life use. Programming is a tool; it's a tool that can be applied to tons of different problems. But it's not taught that way in universities. It's taught as if programming is a field in and of itself. (Of course, even all that considered, universities still fuck it up by not teaching the things I mentioned above: source control, organizing large programs, usability testing, etc.)

    Some of those problems can be described as "making programming itself better", things like designing new programming languages are tools-- and maybe that's what "computer science" should be.

    Note that other useful skills do not have this same problem. Statistics, for example, is recognized to be useful by many different fields. Statistics lives in the Math department, but there's no such thing as a 4-year degree in Statistics-- it's just something you take if you want a 4-year degree in, say, Psychology or Sociology or Economics any other field that happens to make use of Statistics.

    If there were any justice in the world, any at all, people would look at the history of IT-- an industry where virtually every important contribution came outside the university system* and they'd mock the entire idea of requiring a computer science degree to get a job in IT. Because it's a ridiculous idea if you think about it.

    *) Or only incidentally inside the university system-- Facebook and Napster weren't popular because they were written by people physically located at a university. Since I know some pedantic dickweed is going to bring that up.



  • @redwizard said:

    Bet you one of two things has happened here:1) He is and always was too arrogant to be allowed to show how to approach problems as outlined above, or2) No one ever showed him, and now he's "successful" [at getting and keeping a job] this way for so long that he's no longer open to being shown how to approach problems the right way.

    My experience is developers like come are most likely:

    1. They started working as the only technical person at a non-technical workplace (i.e. they were the first computer expert Bob's Lumber Distributing hired) and so they were seen as a genius.


  • perhaps it is naive of me, but

    A) I would fail that code if I was to grade it.
    B) our software engineering progammes would fail anyone who were not able to work independently for at least six months before they fail beyond recovery.
    C) Ergo, I would see no problem in giving the 2 months leash.

    There is a difference: in sweden there are no tuition fees (for EU citizens), so we can be more concerned with quality. I have heard from colleagues in other countries where the students basically see it as they are paying to get passed, so if a course has less than 85% pass through rate the teachers have to explain themselves to the vice chancellor. This does not foster a quality minded attitude.



  • @blakeyrat said:

    Programming is a tool; it's a tool that can be applied to tons of different problems.

    +1



  • @blakeyrat said:

    If there were any justice in the world, any at all, people would look at the history of IT-- an industry where virtually every important contribution came outside the university system* and they'd mock the entire idea of requiring a computer science degree to get a job in IT.

    My degree is in Electronics Engineering Technology. I work in IT. Q.E.D.


Log in to reply