Win a copy of Event Streams in Action this week in the Java in General forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Devaka Cooray
  • Liutauras Vilda
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Paul Clapham
  • Knute Snortum
  • Rob Spoor
Saloon Keepers:
  • Tim Moores
  • Ron McLeod
  • Piet Souris
  • Stephan van Hulst
  • Carey Brown
Bartenders:
  • Tim Holloway
  • Frits Walraven
  • Ganesh Patekar

Is this the norm?

 
Bartender
Posts: 322
24
Eclipse IDE Firefox Browser
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi all,

I'm sorry I haven't been active here much for the last few weeks. As most of you know, I'm an midlife career changer who decided to career change into programming from finance. As my academia course load is beginning to wind down, I've started actively looking for work outside of the freelance. I've been pretty happy with the feedback so far from the firms I've sent resumes to (hitting about a 30% response). The coding tests are something very new. No one asks you to explain on a whiteboard how you will sellout a client in a margin call.

Until yesterday. Yesterday, I completed a phone interview with a big online retailer. Honestly, I was surprised they had contacted me. The opening questions were mild (mainly stuff covered in the OCAJP7 exam). After 50 minutes, I felt way out of my element. Especially when we got into the Big O notation and the efficiencies behind various Collections. The screener was really good (actually went way beyond the scope she was supposed to) in helping me understand why they value understanding over coding skills and it's made me think perhaps I'm not as ready as I thought.

So, I have to ask (especially for those that do hiring), do you all regularly calculate the Big O values of the methods you create to compare against other team members?
Maybe I need to start looking at some Algorithm courses...

Cheers!
Chris
 
author & internet detective
Posts: 39396
763
Eclipse IDE VI Editor Java
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think it is reasonable to expect a candidate to be familiar with Big O notation. Especially at a large online retailer where the difference between 1 and 2 seconds is loss of revenue. Also, the larger/famous retailers have a lot of people who want to work there and can be pickier.

Two things that might you feel better:
  • Sometimes companies are interviewing for multiple positions and will ask questions that pertain to only some of them. I've had this when interviewing. While I'm primarily looking for someone to fill a certain role, the candidate seems like he/she would be better on another. I'll bring them over to someone on that team or we will schedule a follow up.
  • Some interviewers like to see where the boundaries of your knowledge lie. Which means by definition, you'll get questions where you have no idea.
  •  
    Marshal
    Posts: 67275
    170
    Mac Mac OS X IntelliJ IDE jQuery Java
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    To Jeanne's second point -- it's sort of like a materials test. You never know how strong a material is until you can make it break.

     
    Chris Barrett
    Bartender
    Posts: 322
    24
    Eclipse IDE Firefox Browser
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Thanks guys.

    She definitely tested my boundaries. My knowledge vs her Masters in CompSci was a very one sided battle.
    On the plus hand, I didn't swear at her (which she hinted happened more than I would think).

    Seriously, it was highly informative and I'm happy I did it.
    Learned a bunch about the interview process, and the company, and it'll only make me better for the next interview.

    Cheers!
    Chris
     
    Bartender
    Posts: 2407
    36
    Scala Python Oracle Postgres Database Linux
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Getting an interview is the hard part, so you're doing pretty well on that score. You can always work on your interview technique/preparation, but it's no use if you don't get any interviews.
     
    Rancher
    Posts: 3742
    16
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    Chris Barrett wrote:Thanks guys.

    She definitely tested my boundaries. My knowledge vs her Masters in CompSci was a very one sided battle.
    On the plus hand, I didn't swear at her (which she hinted happened more than I would think).

    Seriously, it was highly informative and I'm happy I did it.
    Learned a bunch about the interview process, and the company, and it'll only make me better for the next interview.

    Cheers!
    Chris


    People seem to be divided on whether this is a good idea or not, but at this point I would send this lady a short email (or letter if you don't have her email address) thanking her for the opportunity to speak with her and saying how helpful the process had been to you. You may not get this job, but if she has something more suitable in the future, this may make your name pop into her head.
     
    Rancher
    Posts: 43011
    76
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    +1 on testing the boundaries. As long as candidates keep answering correctly, I'll keep asking harder questions - until they can't answer. I'll tell them about that beforehand, though, so they know they will likely strike out at some point and not get too nervous about it.
     
    Chris Barrett
    Bartender
    Posts: 322
    24
    Eclipse IDE Firefox Browser
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    I really appreciate everyone's feedback. I just kind of wonder if I would have been better off spending more time taking courses in Big O, Algorithmics, and more Design Patterns, instead of concentrating on higher level courses about Servlets, JSP and JPA. I'm the first to admit that outside of the Singleton and MVC (Model 1/Model 2), I don't know many patterns in detail. Not much point in knowing how to use a RequestDispatcher if the interviewers are more interested in knowing if I know if the code I wrote is log(n) or log(n^2). Looks like the next few months will be spent on codility and Coursera!

    And I should have asked here for more advise over the last year. Like Jeanne mentioned, I totally get now why they want the understanding (the screener did a fantastic job showing me how an often given coding test directly related to her work - again, something she didn't need to do and spoke to her fantastic character). The second reason the screener mentioned that understanding is valued over knowing code, is that the company uses a lot of internal frameworks that create "Java-like" code. So, as long as you can prove you understand one language was all that mattered (I was given the choice of Java7, Java8, C++, Python or Perl for the interview). They will teach you the syntax if you don't know it. Which also makes me thing the time I invested in C++ and PHP could have been better used elsewhere.

    Regarding, follow-up, I cannot agree more with Joanne. Coming from a sales background, I think it's really important to follow-up. Takes you a few minutes only and why wouldn't you try to keep in that interviewer's mind? Often, if I know a phone number, I'll call (sometimes outside of work hours to not bother them and so it's the first thing they hear the next morning) and thank them. I had an IT manager tell me that too many IT people only want to talk via email, and with the more modern methodologies (like Agile), you need to show you have a voice. And, how often has an IT problem been understood/fixed via a single Email? Often the phone is faster to reach problem understanding. If you can show someone you are not afraid of the phone, that can make you more valuable than someone with equal skill who refuses to talk.

    Cheers!
    Chris
     
    Ulf Dittmer
    Rancher
    Posts: 43011
    76
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    In my experience (and I've been on both sides, lately mostly asking the questions) there is no "they" or "the interviewer" - everything about the hiring process including the interviews varies widely between companies and even between different people doing it for the same company. I don't recall ever having been asked about asymptotic approximations (of course, I do have an MS in CS, so a discussion on this might conceivably expose limits to the interviewer's knowledge, the danger of which not everyone may be willing to run ).
     
    Sheriff
    Posts: 13560
    223
    Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    For me, interviews are about finding the right fit. This applies to the parties on both sides of the table. My approach as an interviewee has always been to be honest when I don't know much about something. Trying to fake it seldom, if ever, works out and often outright honesty is more appreciated. However, when conceding a lack of knowledge in one area, it's always good to have something to offer in return, even by way of a question like "Do you guys actually think about Big Oh often?" From there, you can try to steer the conversation to focus on your strengths. To the answer of "Yeah, we value understanding over coding skills" you might say something like "What about diversity and different points of view? I come with an extensive background in finance and I think I could offer a different perspective, especially when it comes to the business aspects of a project." If the interviewer opens up to that line, then you might have helped him/her find your niche. Better yet, you might have created an opportunity for you to carve out your own niche. If not, then maybe the fit just isn't there and you leave it at that.

    I have come to believe that a principle-based stockpile of knowledge will outlast any technology-based stockpile in the long run. Sure, you have to know the tech stuff but knowing the principles behind the tech makes it easy to jump from one receding technology wave to the next rising one. When I've been the interviewee, I always try to steer the conversation towards my strengths which is largely a good understanding of basic and mostly timeless principles of software development. I know a lot about Spring and JEE but it's my relatively deep understanding of programming principles that helped me adapt quickly to Scala. Technologies change and vary, principles by nature stay pretty much the same. I know about things like Big Oh but I would be hard pressed to discuss it off the top of my head. But get me started about Agile principles, design principles, and why test-driven development works and you'll be hard pressed to get me to stop.

    I guess what I'm trying to get at is that I think it all depends on what kind of fit you're looking for and how you use the interview as an opportunity to find it. Play off of your past experience and find ways to use that as a better gauge for your potential. Use the interview as a way to explore how you might be a fit. Don't let the interviewer limit you to being measured by some arbitrary rigid mold that they already have prepared. Don't be afraid to break the mold. As Steve Fahlbusch told another later-life career switcher, "You have many, many life experiences that make you very valuable."

    Good luck.
     
    Chris Barrett
    Bartender
    Posts: 322
    24
    Eclipse IDE Firefox Browser
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Thanks everyone. I'm inclined to close the thread, but I've left it open just because there is so much good feedback on a topic I couldn't find in the forums. We've talked about "career changers", and if someone 40ish should start learning programming, but I couldn't find anything about the issues we might encounter as we complete that transition from academia to industry (outside of discussions about perceived age discrimination - which I haven't experienced at all).

    Excellent link Junilu and mirrored my thoughts exactly - the one big thing (and I've said it before in other threads) that any of us "career changers" have over a 20 year old university graduate is experience. And that experience has to be worth something. I rarely have issues with the HR components of interviews, and I believe my experience helps a lot with that. This interview I outlined in my OP was my first formal coding interview. The code interviewer pointed out she was surprised I had made it even that far, based on my technical college background.

    It really is about finding your skill set (and experience) that fits a firm's needs and I'm happy to see from all of you who responded that the expectations of all firms are not the same. The trick for me is to find a role that balances my positive attitude, my sales/resource management experience, and my mid-tier understanding of multiple languages. That seems to be happening as I just completed the second interview with the Team Leader at another firm that was super happy I understood multiple languages (C++, Java, PHP and HTML/CSS) and had experiences I could use in client management. Third round of "meet the team" takes place at their office next week, and I figure at this point it's my job to lose.

    Aside - I wonder if having such a rigidity to coding interviews is really wise. It would seem that a C (or even C++) coder, who doesn't have the robust STL of Java, has a bit of an advantage as they will be more familiar with implementing things like sort functions by hand, while a Java coder would not be thinking past Collections.sort().
     
    Bear Bibeault
    Marshal
    Posts: 67275
    170
    Mac Mac OS X IntelliJ IDE jQuery Java
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    Chris Barrett wrote:while a Java coder would not be thinking past Collections.sort().


    That's a mighty broad brush you are painting with.
     
    Bartender
    Posts: 1840
    12
    Eclipse IDE Java Windows
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    I've been a developer for only a few years. I had an interview about a year back within my organization and I got asked questions about design patterns and names of sorting algorithms. And it wasn't, honestly, that I didn't know all the answers (I know what a singleton is, but who doesn't use pre-made sorting apis?), it was that the way some of the questions were described I had no idea what they were asking. Sometimes it's not about knowing or not knowing the right answer, sometimes it's about communication.

    I wasn't a computer science major. I don't know about Big O notation in a scientific/mathematical sense. Everyone says they can describe it to me, but I always end up with a blank stare. But I do know that if I have a list of things and I need to iterate and do stuff, it needs to take the least amount of time/iterations possible. I know how to write code in a clean and readable way, making it immediately identifiable if I'm doing unneeded work. Is that just as good? Not sure, but I would try to discuss the point in an interview.

    Especially as a newer developer, it's important to set yourself apart in different ways and be prepared for certain questions about what you don't know. And as an older person, it's also critical to show that you're not "entry level" in the same sense as someone who's 20 years old. You have work experience, maturity, soft skills, etc.
     
    Enthuware Software Support
    Posts: 4331
    35
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    IMHO, anyone who intends to pursue a long career in programming should read up on a few basic/fundamental subjects of the trade. Data Structures, Algorithms, Database Design, Operating Systems, and OOP are on top of my list. One doesn't need to complete a CS major to learn. They can take free courses or even read college level theoretical books on these subjects.

    I don't think not having a CS degree is a valid excuse for not knowing Big O, if you are an experienced s/w professional. Your experience should tell you that you need to read up on it within may be 5 yrs of you being in business of writing s/w.


     
    Janeice DelVecchio
    Bartender
    Posts: 1840
    12
    Eclipse IDE Java Windows
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    Data Structures, Algorithms, Database Design, Operating Systems, and OOP are on top of my list.



    Paul. I disagree. I think it totally depends on your career goals and your occupation. In that list, "thinking/learning to be more OO" is on my list, but my list differs vastly from yours. Mine includes JQuery, regular expressions, ajax, JPA/Hibernate, more advanced unit testing concepts, and automated build tools like ant/maven. I have devoted an enormous amount of time to writing clean readable code, software quality processes, and learning to do code reviews for security and light penetration testing.

    Not everyone needs a thorough knowledge of all the concepts in your list. In a larger organization, it might be the "norm" to work as a more generalized developer and then ask a DBA to design your database, or a performance specialist to work with you to tune a performance issue. At less than 5 years in, I find I'm still really busy trying to learn about the frameworks and processes that are needed for me to function on a daily basis. I found I have an interest in web security so I learn about that when I'm not working or in school.

    Not everyone knows everything. When you go to the doctor and she doesn't know enough about a skin problem, now you go to a dermatologist. I know lots about things that people with more experience might not know, and I ask when there's things I don't know.

    I'm far more likely to get asked in a future interview about Hibernate, Spring, software quality, agile development and unit testing than I am to be asked about big o notation. I don't feel insecure about my ability to perform in the workplace because I don't remember the difference between a bubble sort and an insert sort. If that kind of knowledge is what's important to an employer, I wouldn't be a good fit. I'm not a DBA, I can write sql/tune queries, but I don't have strong opinions about database design.

    It's ok for some people to focus on learning things that are more practical while others focus on the theory. That all said, if I wanted to get a job where Big Data and Business Intelligence was "their thing," my skill/knowledge set would need to be a lot different. But I have no forseeable goals in that space.
     
    Sheriff
    Posts: 4648
    300
    IntelliJ IDE Clojure Java
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Awarding a Cow to Chris for a Journal worthy thread.
     
    Greenhorn
    Posts: 4
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Chris, the question that you raised - how important is to a software engineer to know the theory that underlies the tools - is a very hard topic to me either. I'm a professor at a very small college in Brazil, and we have a short-term course to prepare system's analysts. Choosing what to teach in such a short time has been always a challenge.

    In fact, I agree partially with both the colleagues Janeice and Paul. It really depends in your goals, but I also think that a minimum set of theory is needed in such a fast changing profession like ours. Thinking about that matter, I came across an article called 'competency matrix' and I recommend you to take a look: http://sijinjoseph.com/programmer-competency-matrix/

    The most curious thing is how the author classify the various levels of maturity. It alone reveals how important this metric (Big O notation) is important to the computer science.
     
    Greenhorn
    Posts: 7
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Just want to weigh in here on the importance of knowledge about algorithms etc. I work mostly with performance issues (in the financial industry) and , imho, most often performance issues break down to poor choices of algorithms or abstractions. I've actually seen bubble sort in production (and behaving poorly, no surprise). So I would deem knowledge of algorithms and data structures essential knowledge.
    And, if you code for the java vm, knowledge about java garbage collection as well, as that tends to be another performance issue.
     
    Chris Barrett
    Bartender
    Posts: 322
    24
    Eclipse IDE Firefox Browser
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Thanks Tim for the cow - I wasn't expecting that, and I'm happy to see my question drummed up such a response from all. I feel blessed to see I added value to the forums.

    Janeice, a friend of mine (senior manager in IT) just started the CEH Certification program. He says it's very good. If you have an interest in security, that might be something you would want to look at.

    Cheers!
    Chris
     
    Rancher
    Posts: 352
    21
    Mac OS X Monad Clojure Linux
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    As a hiring manager, I don't give typical "technical interviews" but instead I get the candidate talking about a wide variety of topics from their background and "guide" them into areas that I like to explore in more depth. Candidates that actually know about Big O seem much thinner on the ground than I would like since, for me, this is a very basic piece of "programmer knowledge". It's not a deal-breaker but lack of that knowledge is disappointing to me.

    As for some of the other "comp sci" stuff, I'm not particularly set on data structures or algorithms. These days I expect developers (in my space - the web) to have some understanding of database design so that they can write at least vaguely reasonable SQL without driving my DBA to drink. As for OOP, I find that excessive OOP background makes it much harder for developers to learn FP - and we're a Clojure shop primarily - so I am wary of developers who've done Java-and-only-Java all their career (Java is pretty much the worst sort of OOP background when it comes to learning good FP practices, in my experience).

    I'm with Janeice in that I think clean code, software quality, craftsmanship and TDD / unit testing / automated testing are all much more important than a lot of the academic stuff. I think there are some jobs where the comp sci stuff is important but that's not true for most jobs (much as I'd like a higher bar for entry into IT some times! )
     
    chris webster
    Bartender
    Posts: 2407
    36
    Scala Python Oracle Postgres Database Linux
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    Sean Corfield wrote:...These days I expect developers (in my space - the web) to have some understanding of database design so that they can write at least vaguely reasonable SQL without driving my DBA to drink. As for OOP, I find that excessive OOP background makes it much harder for developers to learn FP - and we're a Clojure shop primarily - so I am wary of developers who've done Java-and-only-Java all their career (Java is pretty much the worst sort of OOP background when it comes to learning good FP practices, in my experience)...


    That's an interesting point. I'm a grizzled old database application developer with limited Java, so for years my skills have seemed to be increasingly orthogonal to the mainstream job market. For years I struggled to find work because I'd spent too long in the Oracle eco-system, so my Java wasn't really good enough, and people were fixated on "generic" JEE-style approaches to building database applications. But with big data becoming a massive growth area, suddenly I am seeing lots of opportunities to apply my data-oriented experience in new areas. I'm also really excited by FP, as it seems to be a natural fit with data-centric applications (Dean Wampler calls big data the killer app for functional programming). I just wish all these exciting new toys had been around 10 years ago!

    As for Big O, I know what it describes, but I'd have to look up how to calculate it. And I haven't really studied algorithms anyway. Yet another gap in my education that I guess I'll have to fill via Coursera!
     
    chris webster
    Bartender
    Posts: 2407
    36
    Scala Python Oracle Postgres Database Linux
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    E Erik Svensson wrote:I've actually seen bubble sort in production (and behaving poorly, no surprise).


    Wow. Did the programmer hand-code this sort, or did they manage to find a bubbleSort() method in an existing Collections library?
     
    E Erik Svensson
    Greenhorn
    Posts: 7
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    chris webster wrote:

    E Erik Svensson wrote:I've actually seen bubble sort in production (and behaving poorly, no surprise).


    Wow. Did the programmer hand-code this sort, or did they manage to find a bubbleSort() method in an existing Collections library?



    Hand-code it. When I questioned the choice of algorithm the programmer said that it was the only sorting algorithm he knew and the only one he was taught at school.
    And I seriously doubt bubble sort exists in any 3rd party library (together with randomSort()).
     
    Marshal
    Posts: 65088
    247
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Is random sort the same as bogosort?
     
    E Erik Svensson
    Greenhorn
    Posts: 7
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    Campbell Ritchie wrote:Is random sort the same as bogosort?



    Yes. When in parallell also known as 'million monkey sort'.
     
    Sean Corfield
    Rancher
    Posts: 352
    21
    Mac OS X Monad Clojure Linux
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    chris webster wrote:I'm a grizzled old database application developer with limited Java, so for years my skills have seemed to be increasingly orthogonal to the mainstream job market. For years I struggled to find work because I'd spent too long in the Oracle eco-system, so my Java wasn't really good enough, and people were fixated on "generic" JEE-style approaches to building database applications.


    Oh you were just applying for the wrong jobs! I think this is the problem with "Java shops" - they're so focused on "Java" that they forget everything else. By contrast, I won't hire anyone whose experience is "all Java". Sure, if you have a giant corporate machine with interchangeable developers, then pure Java developers might be a good fit. It's not what a lot of shops are looking for tho'. It's certainly not what I'm looking for.

    chris webster wrote:As for Big O, I know what it describes, but I'd have to look up how to calculate it. And I haven't really studied algorithms anyway. Yet another gap in my education that I guess I'll have to fill via Coursera!


    Knowing what it describes is enough for most interviewers.
     
    chris webster
    Bartender
    Posts: 2407
    36
    Scala Python Oracle Postgres Database Linux
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator

    Sean Corfield wrote:Oh you were just applying for the wrong jobs!


    Yeah, you can say that again!

     
    It is sorta covered in the JavaRanch Style Guide.
    • Post Reply Bookmark Topic Watch Topic
    • New Topic
    Boost this thread!