Aspect questions?

M

Martin Gregorie

Another guy whose been hired for jobs where he didn't have the core
skill! How did YOU manage that, Martin? I've already asked Lew....
Quite simple: I was working for a large and technically very competent
software house (My first business manager there designed CHAPS, the UK
secure interbank network and the first of its type anywhere - the
division I was in implemented quite a few national banking networks off
the back of CHAPS). I remember him saying (in the pub, our common room)
that he didn't care what a potential hire knew: he hired brain power, not
existing knowledge. We assembled project core teams at the bid stage: the
bid manager would become the project manager if we won the job and the
members of the bid team became key members of the project. The bid team's
project estimates and costings were subject to rigorous review by
management, who made the bid/no-bid decision, so if we won the job, the
bid team was expected to deliver it. Naturally, we took prior knowledge
of team members (and their ability to pick up new skills) into the bid
costings and pulled in expertise as needed. This approach worked really
well but demanded a high level of technical experience in the management
team: it all fell apart when the founders retired and let salesmen into
top managerial positions. The result was that a lot of top tekkies left
or were made redundant and, though the company still exists, it is now
not much more than a more or less average outsourcing outfit.

During its best years the company operated as an association of small
(20-40 members) divisions, each having a known expertise and operating as
a small independent company with its own budget, targets and sales
people: divisions that grew beyond these limits were split. As a result,
everybody knew their peers, coherent project teams were assembled fairly
easily and team members were borrowed from other divisions and groups as
needed. I believe (was told) that Boeing's internal structure was similar
(as was IBM's - I know this from personal contacts) when both were
growing vigorously.
 
N

Novice

Lew said:
I meant where specifically. You didn't show me where. You talked a lot
about how you'd go about finding where, but you didn't actually follow
your own advice.
I'm finally back! Sorry for the longer-than-expected delay.

I had thought your questions were hypothetical, of the "how would you
determine such-and-such if you needed to" variety. I didn't realize you
literally meant for me to answer :)

Well, let's get on with concrete answers.

The ArrayList article in the Java (1.7) API is at this URL:
http://docs.oracle.com/javase/7/docs/api/index.html. From there, scroll
down in the lower left index window to find ArrayList and click on it; the
article appears in the main pane of the browser. With regards to
performance, we get various clues in the introduction to the article (the
part about the Field Summary), including:

"The size, isEmpty, get, set, iterator, and listIterator operations run in
constant time. The add operation runs in amortized constant time, that is,
adding n elements requires O(n) time. All of the other operations run in
linear time (roughly speaking). The constant factor is low compared to that
for the LinkedList implementation.

"Each ArrayList instance has a capacity. The capacity is the size of the
array used to store the elements in the list. It is always at least as
large as the list size. As elements are added to an ArrayList, its capacity
grows automatically. The details of the growth policy are not specified
beyond the fact that adding an element has constant amortized time cost.

"An application can increase the capacity of an ArrayList instance before
adding a large number of elements using the ensureCapacity operation. This
may reduce the amount of incremental reallocation."

Doing the same thing for LinkedList we find:

"All of the operations perform as could be expected for a doubly-linked
list. Operations that index into the list will traverse the list from the
beginning or the end, whichever is closer to the specified index."

That first sentence is a bit evasive if you have no idea how a linked list
would perform but that's what it says....
No. I wasn't talking about designing interfaces. I was talking about
writing a program.
Maybe I should have said that that's where I _thought_ you were going
because we were in the part of the note where we talked about interfaces
and I thought you had more to say on that ;-)
Yes. There's a reason for that. It's because I was talking about
selecting which existing interfaces you want to use.
Fair enough.
Right. Precisely. Just so.


Give me an example of some unit of functionality you'd like to design,
in broad terms, and I'll do just that.
I think that would be an interesting exercise. Let's do one that I've
already done myself and that you (probably) haven't. I'm sure I'll learn
some things by seeing how you approach it.

I have a project (that regularly undergoes polishing) to produce resumes.
More specifically, it creates various formats of my own resume (and only my
own resume.) Each of the resumes I generate contains the exact same
information obtained from a single file but I generate it in several
formats: an HTML version, a Java applet, an ASCII text version, a PDF
version (using iText), and a Word version. I also generate supporting
files, including a CSS file for the HTML version of the resume, and a short
PDF containing contact information for references.

The program that generates the resumes and supporting files is written in
Java. The data file that is parsed to create each format of the resume is a
Java ResourceBundle of the "list" type. NOw, I'm only producing the resumes
in English so I should mention that I am open to the possibility of
creating the resume in additional languages - I have a working knowledge of
two other (human) languages - so I chose to use a Resource Bundle so that I
could easily generate resumes in additional languages. Otherwise, I'd have
probably just used a standard text file or more likely a properties file.

Given the fact that several resumes containing the same data are being
generated there would seem to be obvious opportunities for refactoring and
probably at least one interface. This code has gone through various
permutations but I've used a single interface with a single method in my
existing code. The code works but I'm not at all sure it is designed well.
I'd be very curious to get your take on it. I expect that the design has
major flaws and I'd like to clean those up once I find out what they are.

Does that sound reasonable to you? I'm basically asking you to talk me
through the way you would design it knowing what I've told you. Naturally,
you're free to ask as many questions as you like to understand what I'm
trying to do.
Why do you use more sets than lists?
Most of the things I put in collections should not have duplicates so I
enforce that via Sets. Naturally, if duplicates are appropriate, I'll use a
list.
"You're supposed to answer"? What _is_ the answer? "The API" or
"something you said" isn't an answer. That's like saying, "Where in
the city will I find the post office" and you say, "There's a map
somewhere". I am still left unable to mail a letter.


Sorry, that's actually under-answering.
Yeah, I get that now.
What clues? Where? Show me. I asked a specific question about specific
classes.
Answered above for ArrayList and LinkedList.
"normally"? "performs"? "best"?
Just a generalization I saw in the tutorial for the Java Collection
Classes. Let me get you a reference....

Assuming you're already in the Java 1.7 API, the articles on ArrayList and
LinkedList both have this line: "This call is a member of the Java
Collections Framework". If I click that, then Tutorial, then Interfaces,
then Set Interface, I come to this paragraph which was the basis for my
generalization:

"The Java platform contains three general-purpose Set implementations:
HashSet, TreeSet, and LinkedHashSet. HashSet, which stores its elements in
a hash table, is the best-performing implementation; however it makes no
guarantees concerning the order of iteration. TreeSet, which stores its
elements in a red-black tree, orders its elements based on their values; it
is substantially slower than HashSet. LinkedHashSet, which is implemented
as a hash table with a linked list running through it, orders its elements
based on the order in which they were inserted into the set (insertion-
order). LinkedHashSet spares its clients from the unspecified, generally
chaotic ordering provided by HashSet at a cost that is only slightly
higher."


You described some useful strategies, but let's see what happens when
you apply them to 'ArrayList<E>' and 'LinkedList<E>'.
Answered above (toward the top of this reply).
And since you brought them up, the three 'Set' implementations you
mention.

The questions above are to stimulate thought. The questions that
follow are for you to answer here.

Without asking anyone else, but by research (which you should cite):
As above.
What are the performance differences (if any! - question every
assumption in a question) between:
- 'ArrayList<E>' and 'LinkedList<E>'?

I've cited the API on this already. Would you like me to paraphrase to show
that I understand what they're saying?

- 'HashSet<E>', 'TreeSet<E>' and 'LinkedHashSet<E>'?

I've cited the Tutorial on this already. Would you like me to paraphrase to
show that I understand what they're saying?
What are the differences between:
- 'List<E>' and 'Set<E>'?
Functionally, the big difference is the tolerance for duplicates: Sets
don't permit duplicates but Lists do. As a guy with a relational database
background, I tend to put primary keys on every data structure I conceive
which is why I do more Sets than Lists.
For your claim that "HashSet normally performs best", define:
- "normally"
- "performs"
- "best"
That whole claim was basically a paraphrase of the passage from the
Collections tutorial cited above. Bloch (I assume he's the one that wrote
this tutorial), states clearly that HashSet is the best-performing
implementation of the three (HashSet, TreeSet and LinkedHashSet). Since
HashSet doesn't guarantee the order of iteration, it is presumably cheaper
to build and maintain. Given that people often want data to be in a
predictable order, TreeSet is provided but he warns that it is
substantially slower, presumably since it has to keep things in order as it
constructs the set and that takes more time/effort. LinkedHashSet ends up
being sort of a hybrid of the other two by the sounds of it. It is based on
a hash table like HashSet but has a linked-list running through it to
ensure that elements are kept in the desired order (insertion-order) but,
through the miracle of clever programming, apparently only costs slightly
more than HashSet, rather than being substantially slower like TreeSet.

The paraphrase was a bit sloppy. I shouldn't have said "normally" since it
implies that sometimes what I've said in the preceding paragraph isn't
true. In fact, I assume that paragraph is ALWAYS true.

Basically, if you don't care about the order of the elements of the Set,
you'll find HashSet fastest. If you care about the order, LinkedHashSet
will be faster than TreeSet.

There's nothing to suggest any other factors, such as the size of the
entry, has any effect on the performance of the Set implementation.
Since you get to define these terms, there might not be exactly a
right answer. Instead, justify your definitions to whatever extent you
feel they need it. Be careful - justifications like "the standard
definition" do require citation of which standard.

Have fun.
I await your opinion of my answers. I hope I'm closer to the spirit of what
you had in mind this time.

Naturally, the other approaches I mentioned are still available but I
expect most people would stop with the API and/or tutorial unless they had
an especially challenging issue that they were handling.
 
L

Lew

The ArrayList article in the Java (1.7) API is at this URL:
http://docs.oracle.com/javase/7/docs/api/index.html. From there, scroll
down in the lower left index window to find ArrayList and click on it; the
article appears in the main pane of the browser. With regards to
performance, we get various clues in the introduction to the article (the
part about the Field Summary), including:

'ArrayList' has its own URL, also, but yes.
"The size, isEmpty, get, set, iterator, and listIterator operations run in

I'd've been satisfied with just the URL. But your answers are exactly right.
That first sentence is a bit evasive if you have no idea how a linked list
would perform but that's what it says....

How does a linked list perform?
I think that would be an interesting exercise. Let's do one that I've
already done myself and that you (probably) haven't. I'm sure I'll learn
some things by seeing how you approach it.

I have a project (that regularly undergoes polishing) to produce resumes.
More specifically, it creates various formats of my own resume (and only my
own resume.) Each of the resumes I generate contains the exact same
information obtained from a single file but I generate it in several
formats: an HTML version, a Java applet, an ASCII text version, a PDF
version (using iText), and a Word version. I also generate supporting
files, including a CSS file for the HTML version of the resume, and a short
PDF containing contact information for references.

What are the overall modules? For example: "Obtain resume from single file",
"Export to format X", "Generate references document", ...
The program that generates the resumes and supporting files is written in
Java. The data file that is parsed to create each format of the resume is a
Java ResourceBundle of the "list" type. NOw, I'm only producing the resumes

Sorry, "list" type?
in English so I should mention that I am open to the possibility of
creating the resume in additional languages - I have a working knowledge of
two other (human) languages - so I chose to use a Resource Bundle so that I
could easily generate resumes in additional languages. Otherwise, I'd have
probably just used a standard text file or more likely a properties file.

Given the fact that several resumes containing the same data are being
generated there would seem to be obvious opportunities for refactoring and
probably at least one interface. This code has gone through various
permutations but I've used a single interface with a single method in my
existing code. The code works but I'm not at all sure it is designed well.

What interface? What method?
I'd be very curious to get your take on it. I expect that the design has
major flaws and I'd like to clean those up once I find out what they are.

Does that sound reasonable to you? I'm basically asking you to talk me
through the way you would design it knowing what I've told you. Naturally,
you're free to ask as many questions as you like to understand what I'm
trying to do.

We'll go step by step.
Most of the things I put in collections should not have duplicates so I
enforce that via Sets. Naturally, if duplicates are appropriate, I'll use a
list.

Exactly right.

....
Just a generalization I saw in the tutorial for the Java Collection
Classes. Let me get you a reference....

Assuming you're already in the Java 1.7 API, the articles on ArrayList and
LinkedList both have this line: "This call is a member of the Java
Collections Framework". If I click that, then Tutorial, then Interfaces,
then Set Interface, I come to this paragraph which was the basis for my
generalization:

"The Java platform contains three general-purpose Set implementations:
HashSet, TreeSet, and LinkedHashSet. HashSet, which stores its elements in
a hash table, is the best-performing implementation; however it makes no
guarantees concerning the order of iteration. TreeSet, which stores its
elements in a red-black tree, orders its elements based on their values; it
is substantially slower than HashSet. LinkedHashSet, which is implemented
as a hash table with a linked list running through it, orders its elements
based on the order in which they were inserted into the set (insertion-
order). LinkedHashSet spares its clients from the unspecified, generally
chaotic ordering provided by HashSet at a cost that is only slightly
higher." ....

You did it in the opposite order, answering above and thinking below. That's fine.
I've cited the API on this already. Would you like me to paraphrase to show
that I understand what they're saying?

No, I wanted you to answer down here in the first place.
I've cited the Tutorial on this already. Would you like me to paraphrase to
show that I understand what they're saying?

Unnecessary. Just answer the questions below. And I am not so sure you do,
completely, yet.
Basically, if you don't care about the order of the elements of the Set,
you'll find HashSet fastest. If you care about the order, LinkedHashSet
will be faster than TreeSet.

Did you notice that "the order" is different between 'LinkedHashSet' and
'TreeSet'?
There's nothing to suggest any other factors, such as the size of the
entry, has any effect on the performance of the Set implementation.

On what basis should you choose which of these three 'Set' implementations to
use at any given point?
 
N

Novice

Lew said:
'ArrayList' has its own URL, also, but yes.


I'd've been satisfied with just the URL. But your answers are exactly
right.
I intended to just give the direct URL but the URL in the browser doesn't
change when I click on things in the API; it just says
"http://docs.oracle.com/javase/7/docs/api/index.html" no matter what I
click on. The same thing happens in Chrome so I know it's not just a
Firefox issue. Apparently, the folks at Oracle don't want us to know the
direct URLs to specific pages.
How does a linked list perform?
Given the additional infrastructure beyond what is in a regular hash set, I
have to assume it's slower than a HashSet. How much slower, I don't know.
If I were writing code that involved very large sets - probably at least
thousands of entries - I could research that during the design phase and
try to come up with a calculation to see if the difference might be
appreciable. Or I could wait until volume testing revealed an issue, then
possibly rethink the linked list in favor of a hash set if the iteration
sequence was not terribly important to the customer.
What are the overall modules? For example: "Obtain resume from single
file", "Export to format X", "Generate references document", ...
At the moment, I have a main program that simply generates each document in
turn. It's called ResumeFileGenerator. Its constructor gets the resource
bundle that drives the creation of the resumes. Each resume format is
generated by a separate class and is passed an object that represents the
data needed in the resume and the path and file name to be generated by
that class. Then, the supporting documents are each generated by their own
separate classes. They too are told the path and file name that should be
generated but are not passed the resume object since they don't need it.
Sorry, "list" type?

Sorry, that was sloppy shorthanding on my part. I meant the ResourceBundles
that are based on ListResourceBundles, as shown at
http://docs.oracle.com/javase/tutorial/i18n/resbundle/list.html, versus the
"text" and "message" types which are basically properties files. Some of my
data consists of arrays like the list of editors I've used and the list of
word processing programs I'm familiar with so the simpler property file
type resource bundles don't work well for that.
What interface? What method?
It's an interface I created as opposed to one that is in the API. It is
called ResumeFileWriter and has one empty method in it called writeResume.
It has two parameters, a String that identifies the path and name of the
file to be written and a Resume object that refers to the data contained in
the Resource Bundle. Each of the classes that writes an actual resume (as
opposed to a supporting file) implements it.

It's entirely likely that this interface should do a lot more than it
currently does. That's why I'm very curious to get your take on this.

I've also got an abstract class called ResumeFileCreator. It has four
concrete methods: deleteFile, openOutputFile, closeOutputFile and
getGeneratedBy (which simply generates a string containing the name of a
class and the current date and time which I use to create comments in each
of the files that are written). Each of the classes that writes a resume or
supporting file subclasses ResumeFileCreator.
We'll go step by step.
Works for me :)
Exactly right.

...

You did it in the opposite order, answering above and thinking below.
That's fine.


No, I wanted you to answer down here in the first place.
Sorry about that.
Unnecessary. Just answer the questions below. And I am not so sure you
do, completely, yet.



Did you notice that "the order" is different between 'LinkedHashSet'
and 'TreeSet'?


On what basis should you choose which of these three 'Set'
implementations to use at any given point?
Good point. I should have mentioned that TreeSet puts the entries in order
by their values (what I'd call primary key sequence in database terms)
while LinkedHashSet stores them in insertion order.

Obviously, that is going to be a major factor in which you choose. I tend
to use TreeSets because I may not be getting the entries in order by value
but I usually want them in order by their value, not by the insertion
sequence. But if insertion sequence is important to me, then I'll look
seriously at LinkedHashSet.

I'm not typically dealing with large sets of thousands or millions of
entries so I tend not to care much about the performance of the set. I know
that performance is going to be a bigger issue with large sets.
 
N

Novice

Quite simple: I was working for a large and technically very competent
software house (My first business manager there designed CHAPS, the UK
secure interbank network and the first of its type anywhere - the
division I was in implemented quite a few national banking networks
off the back of CHAPS). I remember him saying (in the pub, our common
room) that he didn't care what a potential hire knew: he hired brain
power, not existing knowledge. We assembled project core teams at the
bid stage: the bid manager would become the project manager if we won
the job and the members of the bid team became key members of the
project. The bid team's project estimates and costings were subject to
rigorous review by management, who made the bid/no-bid decision, so if
we won the job, the bid team was expected to deliver it. Naturally, we
took prior knowledge of team members (and their ability to pick up new
skills) into the bid costings and pulled in expertise as needed. This
approach worked really well but demanded a high level of technical
experience in the management team: it all fell apart when the founders
retired and let salesmen into top managerial positions. The result was
that a lot of top tekkies left or were made redundant and, though the
company still exists, it is now not much more than a more or less
average outsourcing outfit.

During its best years the company operated as an association of small
(20-40 members) divisions, each having a known expertise and operating
as a small independent company with its own budget, targets and sales
people: divisions that grew beyond these limits were split. As a
result, everybody knew their peers, coherent project teams were
assembled fairly easily and team members were borrowed from other
divisions and groups as needed. I believe (was told) that Boeing's
internal structure was similar (as was IBM's - I know this from
personal contacts) when both were growing vigorously.

The key thing is that you were already known by your colleagues and they
were confident that you would pick up the required skills in a timely
manner; you weren't an unknown outsider.

That makes perfect sense. I thought you were saying that you had gotten
into a firm where no one knew you and had somehow persuaded them that you
could learn the shop language in no time flat. I was wondering how you'd
managed that ;-)
 
N

Novice

Lew said:
I learned Java in a week because I'd spent time reading about it for a
year first.

But I didn't consider that I had learned it because I hadn't used it,
couldn't figure out how packages related to directories, and had some
other troubles.

I learned the language itself enough to program with it in about a
week in early 1999. That employer knew of my weakness in the language.
I told him I needed a week and he gave me a chance to prove it.

I wasn't adept in Java until at least 2000, not really until 2001.
During that time I went to Java Users' Group (JUG) meetings, heck, a
friend of mine and I ran a JUG for almost two years, training Java
programmers. (I got trained there, too.) I read constantly, then and
now, various Java articles and still go back and re-read the tutorials
from time to time. Then and now, I wrote sample applications,
sometimes relatively complex, to learn new techniques like JPA and
JSF.

Often I'd learn something like JPA using Apache OpenJPA, then shortly
thereafter get a job where they used Hibernate, but pre-JPA. So I
didn't have the specific buzzword ("Hibernate", and not JPA at that).
But I had substantial experience in ORMs (Object-Relational Mapping
frameworks), SQL, and JDBC, with study knowledge of JPA. It was
enough; in fact it made me better at Hibernate than the rest of my
team combined, and they had experience with it.

Beware of claims like "I learned Java in a week". It's taking me a lot
of years to become an overnight success.
:)

Thanks for the clarification on what you meant by "learned". As you say
further down, "learned" is a VERY imprecise term!
You know, "learned" is such an imprecise term.
Agreed!


I describe them with five pages of small-print, densely-formatted
resume comprising very brief synopses that mostly just list the
technologies from each project with a curt overview of what I did with
them.
Oh my gosh! You're breaking the One Page Rule!</mock horror>

So I'm not the only one that actually answers the question "what do you
know" without worrying too much about obeying that horrible rule about
keeping resumes to a single page No Matter What....
I learned COBOL in college, swearing then not to become known as a
programmer in it. It's actually not a bad language, I now think. I
programmed professionally in FORTRAN (and Fortran) for several years
after I graduated, before teaching myself C. (On the job, with my
manager's blessing. But then, I was already an employee there.) I
learned C++ on my own well enough to convince someone to hire me for
it, then got better at it on the job.
I'm hoping to do the same thing as you did with C++ but with Java
instead....
I've studied LISP but never used it. I don't claim to know the
language.

I used Python on my most recent project. I was successful at
programming with it, but I have yet to learn it. Nevertheless, it's
listed as a skill, since I can program with it, after all.



I sell the strengths I do have, acknowledge the weaknesses openly but
not obsequiously, and lay out a specific strategy and rationale why
those weaknesses don't matter much but the strengths do.

And I totally believe in myself.
Now there's something I need to work on.... Self-confidence is NOT my
strong suit!
Also, I spent a year living on straight commission once.
Yikes! One of my great nightmares is the prospect of having to do that. I
can imagine you pulling it off since you do believe strongly in yourself
but I don't have that. The prospect of having to live by sweet-talking
people into buying things that they probably don't want or need - and
maybe can't afford - is very distasteful to me....
 
D

Daniel Pitts

I intended to just give the direct URL but the URL in the browser doesn't
change when I click on things in the API; it just says
"http://docs.oracle.com/javase/7/docs/api/index.html" no matter what I
click on.
Hint. Click on No Frames first.

That leads to
<http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html>

You can then click on Frames again, which leads to:

<http://docs.oracle.com/javase/7/docs/api/index.html?java/util/ArrayList.html>

Which will load the main page, but redirect the main frame to the
ArrayList.html. Generally when pointing out JavaDocs, either form is
appropriate, however you can't use "#" to point to a specific section
when using the Frames version. For example, if I wanted to point you to
"contains" in ArrayList, I could use

<http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#contains(java.lang.Object)>

However, I have never been able to construct a "Frames" url that does
the right thing.

Hopefully this helps you and others in the future.
 
N

Novice

Hint. Click on No Frames first.

That leads to
<http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html>

You can then click on Frames again, which leads to:

<http://docs.oracle.com/javase/7/docs/api/index.html?java/util/ArrayLis
t.html>

Which will load the main page, but redirect the main frame to the
ArrayList.html. Generally when pointing out JavaDocs, either form is
appropriate, however you can't use "#" to point to a specific section
when using the Frames version. For example, if I wanted to point you
to "contains" in ArrayList, I could use

<http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#cont
ains%28java.lang.Object%29>

However, I have never been able to construct a "Frames" url that does
the right thing.

Hopefully this helps you and others in the future.


Thanks, Daniel. It's a bit awkward - and not very intuitive - but that's
not your fault :) It gets me where I want to be ;-)
 
M

Martin Gregorie

The key thing is that you were already known by your colleagues and they
were confident that you would pick up the required skills in a timely
manner; you weren't an unknown outsider.

That makes perfect sense. I thought you were saying that you had gotten
into a firm where no one knew you and had somehow persuaded them that
you could learn the shop language in no time flat. I was wondering how
you'd managed that ;-)

I should also have said that the company was a lot smaller when I joined
it. Enough so that my division could, and usually did, all get into the
same pub on Friday nights. A lot of things were discussed and, equally
important, our group and divisional managers were there too, joining in
the general discussion and buying the odd beer.
 
L

Lew

Novice said:
I intended to just give the direct URL but the URL in the browser doesn't
change when I click on things in the API; it just says
"http://docs.oracle.com/javase/7/docs/api/index.html" no matter what I

context-click (right-click for right-handers) on the link. It raises a menu
which includes an option to copy the URL into the clipboard, thus:
<http://docs.oracle.com/javase/7/docs/api/java/util/List.html>

That's with frames on. I like the frames.
click on. The same thing happens in Chrome so I know it's not just a
Firefox issue. Apparently, the folks at Oracle don't want us to know the
direct URLs to specific pages.

It's not anyone's issue.
 
L

Lew

Novice said:
The key thing is that you were already known by your colleagues and they
were confident that you would pick up the required skills in a timely
manner; you weren't an unknown outsider.

That makes perfect sense. I thought you were saying that you had gotten
into a firm where no one knew you and had somehow persuaded them that you
could learn the shop language in no time flat. I was wondering how you'd
managed that ;-)


I've done that. I'm doing that on my current job.
 
L

Lew

Novice said:
Yikes! One of my great nightmares is the prospect of having to do that. I
can imagine you pulling it off since you do believe strongly in yourself
but I don't have that. The prospect of having to live by sweet-talking
people into buying things that they probably don't want or need - and
maybe can't afford - is very distasteful to me....

There you go with your assumptions again.

And these could be construed as insulting. I did no such thing.
 
A

Arved Sandstrom

context-click (right-click for right-handers) on the link. It raises a
menu which includes an option to copy the URL into the clipboard, thus:
<http://docs.oracle.com/javase/7/docs/api/java/util/List.html>

That's with frames on. I like the frames.


It's not anyone's issue.
Not with a choice between frames and no frames it's not an issue, no. I
can't remember for the life of me whether Javadoc has provided the
frames/no-frames option since Day One, but I suspect it has...in which
case no problem.

AHS
 
A

Arne Vajhøj

...

An alternative, at least on Firefox and I assume on other browsers, is
to right click in the main frame and select "This frame" then "Open
frame in new tab" or "new window". The new tab or window can be used to
construct links and then closed.

I find it more convenient than switching my working tab in and out of
frames, but YMMV.

I do that all the time as well.

Arne
 
L

Lew

Arved said:
Not with a choice between frames and no frames it's not an issue, no. I
can't remember for the life of me whether Javadoc has provided the
frames/no-frames option since Day One, but I suspect it has...in which
case no problem.

In the specific question at hand of copying the link's URL to the clipboard,
the presence or absence of frames is immaterial. You can copy the link either way.
 
L

Lew

Patricia said:
I've been interested in how you do that.

I got one job by responding to a newspaper ad without knowing anyone, as
a new mathematics graduate and trainee programmer in 1970. Through 2002,
when I left work to go back to college, all my subsequent jobs were with
people who already knew me, and knew I would quickly learn whatever I
needed to know, because they had seen me do it.

Now my former bosses have retired or moved out of town, and I don't want
to move away from San Diego, so if I ever get bored with retirement, I
would have to get a job cold. I have a fairly impressive resume but much
of it is specialized skills like performance modeling of servers during
development. The things I have done do show that I'm able and willing to
learn, but probably not that I already have the specific skills for an
arbitrary job.

In my current job as a software engineer in test, they were looking for skills
in test automation in related areas. That I've not worked with Objective-C
before, for example, was of no concern to them. Someone who knows C, C++,
Java, Javascript and such isn't going to have a heart attack over Objective C,
but it's harder to find someone who can design and implement an automated test
suite.

Skills do translate, and many employers know it.
 
N

Novice

Lew said:
There you go with your assumptions again.

And these could be construed as insulting. I did no such thing.

Sorry, no insult intended! I suppose I just projected because having to do
sales of something like vaccuum cleaners is MY nightmare.....

I'm glad you've never been in that position. I suppose your sales job was
something like helping sell advanced technical services or software.

I've actually been peripherally involved in activities like that and did
fine with them. But the thought of cold-calling people to sell some general
bit of merchandise, either on the phone or door-to-door is definitely
nightmare-inducing for me.
 
L

Lew

Novice said:
Sorry, no insult intended! I suppose I just projected because having to do
sales of something like vaccuum cleaners is MY nightmare.....

Do you use a vacuum cleaner? Did you buy it? Should that be a nightmare forthe one who sold it to you? Are you glad you have it?
I'm glad you've never been in that position. I suppose your sales job was
something like helping sell advanced technical services or software.

Mortgages.

Why do you continue with those assumptions? It was neither technical services nor software, nor "helping" to sell. Straight up selling, on straight commission, no base pay.
I've actually been peripherally involved in activities like that and did
fine with them. But the thought of cold-calling people to sell some general
bit of merchandise, either on the phone or door-to-door is definitely
nightmare-inducing for me.

That's because you don't understand sales. I have done both door-to-door and telephone sales work, also professional-to-professional sales, and been awaiter. Sales is a service profession, not a coercive one. You make your money by helping people reduce pain and increase happiness.

Why should that cause anyone to have nightmares?
 
A

Arne Vajhøj

I've been interested in how you do that.

I got one job by responding to a newspaper ad without knowing anyone, as
a new mathematics graduate and trainee programmer in 1970. Through 2002,
when I left work to go back to college, all my subsequent jobs were with
people who already knew me, and knew I would quickly learn whatever I
needed to know, because they had seen me do it.

Now my former bosses have retired or moved out of town, and I don't want
to move away from San Diego, so if I ever get bored with retirement, I
would have to get a job cold. I have a fairly impressive resume but much
of it is specialized skills like performance modeling of servers during
development. The things I have done do show that I'm able and willing to
learn, but probably not that I already have the specific skills for an
arbitrary job.

Finding a new job is often tricky.

Typical there will be multiple obstacles.

First you need to get by HR that are doing pure
keyword matching because they do not know what the
keywords actually means.

There is the hiring manager that could be a pure
manager type also without technical expertise.

And some team members that have the technical skills,
but also tend to prioritize "being a nice guy/gal"
pretty high.

Some people are very good at writing resumes and doing
interviews. It is obviously easier for them to be hired.

But in the end you will find a job if you are a good
engineer.

It is just a matter of how many times you need to
send your resume and go to an interview before someone
recognizes the talent.

And I even have a theory about those having to
work a bit to find a job end up in jobs they are
more happy with than the people that can get an
offer out of every interview. When they get the
offer it is the perfect job for them.

Arne
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,900
Latest member
Nell636132

Latest Threads

Top