7 ms·
What it really means to be a “junior” developer.
- pearjuice 13y agoYou don't have to put all that pretentious stuff in your writing. Other than that; good article.
- jonathanmarvens 13y agoPlease tell me what the "pretentious" stuff that I put in my writing are, because I am a bit confused at the moment.
- pearjuice 13y ago"If you have not read it, go get yourself a cup of Mott’s® Original 100% Apple Juice (cause it is good for you and of course since that is what I am drinking right now…[;p]), turn off the TV, Punch Your Brother in the Face™ (okay…I never said that), navigate to the article using the link above, and read it attentively."
- jonathanmarvens 13y agoHow is that "pretentious"? Seriously. Do you even know what that word means?
- dubfan 13y agoYou link off to some blog posts as being 20% of your inspiration for writing the posts, but they're behind bit.ly redirects. Now I can't tell if I've read those before without actually clicking on the link, which is rather annoying. What's the reason for this?
- thejosh 13y agoLazy way of tracking clicks, I guess?
- jonathanmarvens 13y agoSorry about this actually. I have an extension that automatically does the bit.ly redirects on CTRL+C. I will update the post with the expanded URLs.
- wcdolphin 13y agoThe links are also very vaguely related to the topic. If there is a point which can be made using links, typically the text of the anchor tag should tell part of the story.
- 1123581321 13y agoI'm glad the author is changing the URLs. In the meantime, there is a Chrome extension to automatically expand shortener URLs to the real link: https://chrome.google.com/webstore/detail/knowurl-expand-tiny-short/jedbdfjojhbladdiccmdejgebfalbpdl/reviews?hl=en https://chrome.google.com/webstore/detail/knowurl-expand-tin...
- jonathanmarvens 13y agoI've updated the URLs. Sorry about that.
- bennyg 13y agoDon't know if anyone else will tell you, but thanks for doing that.
- jonathanmarvens 13y agoYou're welcome. [:)].
- verelo 13y agoIt's very hard to say this without sounding like i'm not respecting the effort you put into writing this or the knowledge and experience you have accumulated as to date (which i honestly believe is significant), so please don't take it the wrong way. Sometimes you don't know what you don't know. Experience often teaches you a lot more than the best design pattern to use, there is a lot of gut feeling involved, especially when it comes to making a decision today about how you might need to modify a feature in the future - you get better at predicting the future with time. I have been doing this for around a decade now, and while I've done a lot in that time, realizing you have gaps and that you need to do your time to gain experience is very key if for no other reason than not coming across as a know it all in the workplace. I still have a lot to learn too.
- jmduke 13y agoAgreed. Put another way: less than 1% of the world runs on anything based on Node.js.
- pjmlp 13y agoOr most of the other technologies that tend to be hyped around HN. With experience one learns languages, OS and frameworks don't really matter that much. What really counts is delivering solutions that the customers what to pay for and the consequent business value of investing in a specific piece of technology.
- jamesaguilar 13y agoThere's a lot of people stuff too. I have found that junior developers, perversely, are more defensive about bad decisions than senior folks. They tend to be quicker to leap to conclusions or become attached to a particular technical approach to a problem. Of course, senior people make these mistakes too, but, I find, at a lower rate. It's not universal. I have no doubt that there are kids with six months of experience who perform better than me after my six years. But, I'd also be willing to bet that's an exception, not the rule.
- 13y ago
- wcdolphin 13y agoGive him some advice: speak up in a non-threatening way: "hey, can you help explain to me why X is actually worse of an idea than Y? From my experience and reading, it seems like Y has many issues with blah, while X is better at blagh." I believe the root cause may be a bad culture fit. Either: A. His ideas really aren't as good as he thinks they are, and he is either not soliciting feedback or receiving it in a productive and understanding way. or B. The team does not have a problem solving process which clearly identifies the 'best' solution to a problem for the company.
- espeed 13y ago"We can't learn to see until we admit we are blind." -- Alan Kay
- TempleOS 13y agoAcademics are liberal elites. Conservatives are from industry. My parents lived through the depression. They have money habits. I'm pretty fiscally conservative, too. I don't drive, so I have money for soda. I have no respect for people who place themselves in a pinch with high mortgages and stuff. Anyway, my little brother once threw change from a restaurant in the street and said, "That's for the homeless". I paid my way though school with scholarships and work. Liberals like to fuck-with conservatives by extravagance. A liberal programmer loves it when he comes-up with some wasteful algorithm, so he can fuck with conservatives. Linus uses C, not even C++. Academics like LISP, completely worthless, but boy do they like their little 50 line programs that are embarrassingly parallel, so to speak. ---- I have 640x480. The people at OSDev mock me -- retards. What good is it if you support 2 GPUs out of 30? Or run with no acceleration and can only do terminal? They like to imitate best practices from Linux. They think someone is going to write drivers for them, so they are doing documentation and planning on their driver interface and talking about monolithic and microkernels. They are desiging for portability. Basically, they make grand plans being monkeys doing best practices. They feel superior to me because they think I'm too stupid to do grand plans like they do, and oh how smart they are for doing best practices. In the end, they have something unfinished that is grandiose and useless... but they mock me.
- rfnslyr 13y agoI had a similar experience recently. I read a lot of HN and other programming tech sites. It's easy to think you know a lot. I sat down for an informal interview with a founder, much older me and much more experienced than me and we bounced ideas back and forth. I got torn a new one. Destroyed my ideas and really offered a new outlook on things. That's the moment I knew I didn't know shit. I am a Junior Developer.
- jonathanmarvens 13y agoThanks for sharing this. [:)].
- xkcdfanboy 13y agoHasn't politics taught anyone that dividing disciplines/schools of thought into two camps hardly arrives at an intelligible difference? Junior/Senior..might as be Red and Blue.
- jonathanmarvens 13y agoCome to think about this, I have had to deal with that almost every week with our V.P. of Engineering for the past couple of months. It has been really interesting for me to see how little I know versus how much the little arrogant guy inside of me tries to make me think I know. In my opinion, it can be tough at first learning to deal with and learn from the experienced folks, and if you let the ego get the most of you, you may end up a quitter. However, if you just stick to it, understand your capabilities, strengths, and weaknesses, and make it all a learning experience, you will later find yourself in a better shape than before. I find the number one problem to be the part about understand your weaknesses. I have had to deal with that myself. Honestly, until someone more experienced than me, unintentionally, got me to realize this, I thought that I was good at everything. This is also why I recommend young folks who are freelancers to attempt at getting a job where they can work in a team with smarter folks than themselves. That experience in itself is just a life changer. Freelancing will always be there, but working in a team of software developers building an actual product from start to finish is quite rewarding.
- noonespecial 13y agoJunior developers know how to do stuff. Senior developers know how not to.
- perkof 13y agoThe more I learn about software, business, design and leadership, the scarier it is - I know enough to know that there is still a lot to learn.
- TempleOS 13y agoI swore to myself I will never criticize underengineering, just overengineering. We all know everything. Anybody knows how to overengineer. Don't feel smug like God told you how to overengineer and nobody else knows how to overengineer -- it's common trivial knowledge. We all know scaling and algorithms. You know when you scale, it doesn't get linearly worse, it's way worse. That applies in shrinking, too. When you work on a tiny project, it doesn't just get small, it gets way-small. You can eliminate linker and just have compiler, for example. We all know the score -- nobody doesn't know how to overengineer. So when a designer decides what scale to make it, a coward makes the airplane wing 10 times too thick. Is he smart and smug? No, everybody knows he's a fucken clown coward. Look at USB specs. Look at HD Audio Look at UDF.
- asperous 13y ago"Instead what they do is they make themselves experts in a few areas (usually one or two, as far as I have seen), and instead of learning every language, environment, and/or technology out there, they pick maybe one or two languages, environments, and/or technologies, and make themselves true experts in those." This seems to be in stark contrast with the "always keep learning" philosophy I've read on other blogs. Is focusing on one technology really the best way to be stay valuable in the industry?
- daeken 13y agoIt depends on what you want to do. If you want to stay on the bleeding edge of things, building awesome products and generally having a good time, then sure, always keep learning and switching toolsets and all that. But there are niches (e.g. driver development, reverse-engineering, compiler dev (just taking some niches I personally work in and know well)) where your toolset may not change substantially for a decade or more. This isn't necessarily the most fun work in the world, but that's why it remains highly paying, and will for a very long time to come. You don't see many people coming out of college and saying "you know what? I want to write kernel drivers for webcams!", versus "I'm going to build the next Facebook!"
- emelski 13y agoOf course, you can both master a niche _and_ build awesome products and have a good time -- the two are not mutually exclusive as your comment implies.
- hatu 13y agoFacebook was built with PHP. I think it's almost a cargo-cult to think that you HAVE to be switching technologies constantly to build the awesomest stuff out there. You do your best work with a language/environment maybe 2+ years in when you know it very well.
- jmduke 13y agoBeing the best at a few things is better than being okay at everything. This is not limited to programming languages.
- scotty79 13y agoOnce I was hired as a senior developer only because I negotiated salary too high to fit in junior developer salary bracket. Names, badges ... just smoke and mirrors.
- ddoolin 13y agoHonestly agree with this one whole-heartedly. Nothing really gives these people authority other than their title. Lots of junior engineers don't know shit, and a lot of senior ones also don't, either. It's pretty meaningless.
- xkcdfanboy 13y agoIt really is a sum of bravado, years experience, and pay grade. These titles arrived out of pure dread. What other careers have "junior" and "senior" in the titles?
- jmcdonald-ut 13y agoAs a student almost done with school something that I've noticed or watched is that a lot of CS students tend to get egos at a certain point about their work, myself included. I recall from my experience that I did group work with a good friend and pushed a lot of my ideas without really listening to all of his--because I was so confident in my ideas. After self inflection I realized that my doing this led to two problems: First it is just downright rude, and the second is that I limited my learning experience by not hearing other ideas and learning how to merge ideas to create a superior one. Even funnier is that in retrospect some of my ideas were downright stupid or would have been difficult to maintain. My main takeaway from the experience was that every time my ego starts to inflate I should take a step back and breathe. I'm not some God coder, I have three years of experience. I realize that this doesn't quite parallel what the author was talking about, but I felt like sharing it because it was a hard lesson for me to learn. Also, as an aside, my step dad has been developing for 25+ years. He's a really quiet guy, but when he gets talking I realize just how brilliant he is at this stuff. To those already in the field with careers just blossoming, watch out for those who are quietly smart, if he's anything like other developers sometimes they just don't feel the need to prove themselves to you.
- speeder 13y agoOne of my jobs, I applied for a junior position (it would be my first "serious" programming job in a big corporation), I went for the technical interview with the CTO, and was invited to get interviewed by the CEO other day. During my interview with the CEO, I was frank with him, I did not went to a CS school, and if you asked me a random CS question I probably would not know, I did not knew how to use properly version control, my skills in the languages they used were lacking, and my OOP skills were also lacking. But we also ended chatting for about 2 hours actually, his early career resembled mine, and we had lots in common, and were likeminded, the CEO during our chat saw where my strenghts were, and hired me. To my surprise, when I was to do some bureaucratic stuff, my title was NOT Junior, it was "Solutions Architect", that in that company was above Senior... I wondered for a good while, why? The Juniors around me all knew more than me about basic CS... I found out, when I could do lots of stuff they could not, they insisted in using whatever they learned at university, and anything that could not be fixed with their existing skills, they would fail to do... The juniors once lectured me after seeing a "goto" on my C source code (I left it on the screen and went to lunch), yet when I asked them to make a better solution, noone could, all of them create incredibly complicated code, hard to maintain and confusing, and yet they were convinced their solution was better, because their teachers told them to not use goto. After a while, it became clear, that my title was not for my knowledge, but my extensive experience (I started programming when I was 6 years old, most of the other company employees started during university), and my creativity, the fact I could always handle myself WITHOUT learning CS, meant that sometimes I would see solutions that everyone else would not see... Yet, the CS part I could learn, other employees (that were correctly always above my own title) would happily teach me. It was back then that I learned how in a proper company with true meritocracy how titles work... Also, a company that actively avoided the problem I forgot the name (ie: the CEO for example told me he would never turn me into a bureaucratic manager, I was too valuable in the tech, to not be near the tech, likewise, there was junior programmers that he would promote to bureaucratic positions, because they were good for them, but lacking in decent coding skills, making them more valuable there)
- contravert 13y agoWow, this is one of the most arrogant comments I've ever read on HN. How does this story highlight how titles work in "a proper company with true meritocracy"? A true meritocracy assigns titles based on if the CEO shares the same background as you? You might be a great developer, but have you considered that you could be even better if you have a good foundation in CS as well?
- ryanSrich 13y agoHaving graduated from RIT I can tell you that most grads going into junior or entry level positions experience the same thing. That one year of co-op and a campus that breathes tech makes all the difference.
- throwaway1979 13y agoI have to ask ... do they really teach Dependency Injection, Prototypes, Factories and other design patterns in school? If so, I am (a) very impressed, or (b) a bit obsolete because my CS education didn't even touch on these topics.
- knurdle 13y agoJust to throw another comment in the pool. I've been playing around with computers and writing code now for about 25 years. I've been playing with computers longer than some of the guys I've hired have been alive. They are really smart guys, they are way smarter than I was at their age. But it's just hard to beat experience and just being around means you've experienced a lot of different things. There's stuff I know where I didn't even realize I knew it until the context of that problem comes up and then all of a sudden, a little flicker goes off in my brain and it seems familiar to something I did x years ago and I can remember why it works like that. This actually comes up all the time in debugging when something breaks. I've done it enough that the patterns are all familiar and I can pinpoint what broke a lot faster than someone more junior.
- greenyoda 13y agoIn this famous Zen koan, substitute "junior developer" for "professor" and "senior developer" for the master: Nan-in, a Japanese master during the Meiji era (1868-1912), received a university professor who came to inquire about Zen. Nan-in served tea. He poured his visitor's cup full, and then kept on pouring. The professor watched the overflow until he no longer could restrain himself. "It is overfull. No more will go in!" "Like this cup," Nan-in said, "you are full of your own opinions and speculations. How can I show you Zen unless you first empty your cup?" (Source: http://ashidakim.com/zenkoans/1acupoftea.html http://ashidakim.com/zenkoans/1acupoftea.html)
- freework 13y agoIs it just me, or is the site making you sign in through twitter to read the article?
- rektide 13y agoI could be less enthused. There's some ok caution here, in two points: 1. Don't be emotionally attached to your work. Itself obviously horrifically bad advice for everyone: we should be building with passion, in tech the group has fervently picked up and can be excited to roll with. But emotionlessness and removing oneself is a fact of professionalism (to save oneself) and the mired compromise-oriented culture of professional life and business (where historically business plans have always trumped the everloving fuck out of passion and belief). The linked article? #1 rule of programming, leave emotions at the door? It's not about emotions. It's about pride and hubris, being unable to let go, as the junior developer in the article is, as he is silently unfeelingly antipathically checked without discourse or camraderie from coworkers that simply hit "mute" on him. 2. Design and process is indeed a great caution, something we need to burn cycles on- but the author flat out says junior people don't even think about what they are saying they want to build. Envisioning and end goal and hacking out some code can be a way of life, can be remotely possible, if your company can parcel up responsibilities in neat little independent units where you don't have to interact with anyone. As soon as you have to work on a project of >1 person, design first immediately becomes mandatory to some very minimal extent. This is a company problem, a danger if you really are leaving everyone running wild and hoping they see the virtues of designing for themselves. Last, I'd contend the green-horns, with their fancy notions of "what-if," have usually spent more time considering combinations and ways to lay things out than the experienced. If you really do exhibit the well-invested-techie syndrome and you have any self respect, your plan isn't "use redis and node.js and win," there's some kind of data-model, spoken or unspoken and it's up to a company to determine what kind of design proposal process it wants to run for pulling in these ideas and formulating a plan and direction. The author hits themselves in the forehead by the end: they finally get to process, where they discuss lifecycle. Lifecycle which needs to be the company's lifecycle, which needs to entail design. If a developer is off coding without a plan and there's no process in place where they had to think before hand, yeah, bad news, bad programmer, but how did that happen and why did the inexperienced person not have a standard of work from their workplace they drew from to get in such a bad spot? Did they not see the corporate wiki full of UML diagrams? Did they really forge ahead without filing any tickets for their work? Honestly some of the best programmers are young ones, because they are humble and they don't purport to know. Experienced ones are the ones coding from the seat of their pants, because they've seen it, they know it, they have assurances and confidence from the past and they're repeating it, day in and day out, and it's not exciting for adventurous for them, it's what they already know. It takes a certain moral rectitude in the junior class to exhibit this, but more than that, it takes a culture that supports discourse and process, it takes a workplace culture that can relish getting into it and understanding what they are doing, and executing first prototypes and then well to plan, and if that idea is hinted at and space is made where a junior programmer can cycle themselves through that and not be looked down upon, they have every chance of being as good today as they will in ten, twenty, thirty, or three hundred years.
- cunac 13y ago30 years ago when I started I knew everything , now I know a little :-) life sucks ...
- xentronium 13y agoI can absolutely attest to this revelation. The more I learn, the less I seem to know.
- zachlatta 13y agoWhen I was hired by my current employer I was initially frustrated with my Junior Programmer title, but once I got to know the other three programmers on the team, I was blown away. I didn't know anything. I cannot stress how important it is to keep an open mind and to not let your ego get the best of you.
- jonathanmarvens 13y agoExactly.
- deleted 13y ago[deleted]
- nahname 13y agoWelcome to ageism. Human beings, including technology people, have great difficult accepting good ideas from young people. I suspect it is because we like to hear stories about how something affect something else. For example, one development shop I was at decided to use Hibernate and we spent the next six months fighting performance problems. I'll never make that choice again! That's not a real story, but I'm sure you've heard it before. Or the converse. Or some mix in between. Not really scientific how we base decisions on someone else's experiences.
- ibisum 13y agoI rue the day I was ever given the "Senior Developer" title at a company .. it instantly turned me into a target for all the other smart-ass little shits that were in the company, doing their darnedest to bring the big old guy down. Meh. Humans are cannibals. Never forget that, folks.
- UK-AL 13y agoA lot of junior developer positions, are expecting people who can't code just yet, straight out of college. They are not expecting a developer whos been freelancing and building start ups at college. But they are not going to do something about it, because they are getting someone good for cheap. Thats all thats going on. No need to justify it.
- jpd750 13y agoGREAT post. I can definitely relate.