Chat transcript from Component Chat: Spotlight Session with
Ghostar
|
jmpld40 | Welcome to the final Spotlight Sessions Chat! |
AleaActaEst | Hello EVERYONE! |
argolite | Hi all |
shankhs | Hi everybody |
seckin_ | hi |
AdamSelene | ivern is on his way |
AdamSelene | nm he is here |
AdamSelene | make sure to ask him the hard questions |
AleaActaEst | We are outnumbered by the admins... |
seckin_ | so, what is component design? :) |
argolite | oh, do we have just an hour to answer that?! |
shankhs | how come a c/c++ programmer take part in components design challenges?What else do we need to learn? |
AleaActaEst | seckin_: A great way to have fun ... make some good money |
argolite | seckin_: Meet new red friends |
shankhs | argolite: +1 |
AleaActaEst | seckin_: it is bascially a structured system for making a design which developers can then take and write code from. |
seckin_ | argolite: i mean what is expected from a component designer and what kind of problems you face to solve? |
argolite | seckin_: In desing I would say we take a small part of an application, and attempt to outline a detailed solution for it |
AleaActaEst | seckin_: and starting with the time line... a typical design competition is about 5-6 days |
shankhs | argolite: can you plz explain this a bit more? |
argolite | seckin_: Something the developers, who actually provide the code, can take and, well, code it |
shankhs | whats the programming language do you use? |
AleaActaEst | shankhs: currently mostly java and C# |
argolite | seckin_: I think the best way is to start with an example. Right now there is a competition to design some DAOs for an application |
AleaActaEst | shankhs: but also some C++, Flash (action script) and we had PHP as well |
AleaActaEst | shankhs: Mostly java and C# though |
seckin_ | argolite: so we can say that you determine what kind of prosedures will be used and developers fill in those? |
argolite | seckin_: That is one way of looking at it |
argolite | seckin_: I will provide the details of what needs to happen |
argolite | seckin_: It may not just be procedures, but classes, etcs |
shankhs | argolite: then how its different from the design competitions? |
argolite | seckin_: we will basically provide the goty details exactly what needs to happen in that procedure and class, and exactly what classes and procedures are needed, and how they interact with each other |
argolite | shankhs: Not sure I follow |
shankhs | argolite: how is software design and component design different? |
argolite | shankhs: the main difference is that in component design we generally focus on a small part of an application, and software design refers to the techniques of gotting it done. |
AleaActaEst | shankhs: The focus of Component Design is to create a solution to a problem, in 6 days, that can be developed, tested, and then reu-sed with other compoennts to build an application... |
AleaActaEst | shankhs: reu-sed ==> re-used |
argolite | shankhs: Something relatively small |
shankhs | got it |
shankhs | i must be fun then an action pack 6 days |
seckin_ | argolite: what is DAO? |
argolite | shankhs: DAO means Data Access Object. It refers to a class that completely encapsulates access to the database. |
AleaActaEst | seckin_: DAO = A design pattern for accessing data |
AleaActaEst | shankhs: lol - it definitely is a lot of fun |
argolite | seckin_: we then can use a DAO to save data, get data, without the need to know the details of doing that dirty job of calling SQL, etc |
AleaActaEst | shankhs: once you do a couple of the competitions you can become very efficient |
argolite | shankhs: It can get intense, especially in that last 6 hours |
seckin_ | argolite: what is needed to be successful in that area? |
argolite | shankhs: when you realize you need more time |
shankhs | :) |
argolite | seckin_: some development background is good |
argolite | seckin_: some grounding on object oriented techniques |
shankhs | do you have to implement tough algos to get an edge or just design matters? |
AleaActaEst | shankhs: both... |
argolite | shankhs: sometimes we do need a very good algo to win, but that is somewhat rare |
AleaActaEst | shankhs: but in general it is the design that is most important |
argolite | definitely |
dcp | This question is for both of you. How much time to you spend studying new technologies and what is your approach for learning them? |
dcp | Do you sit down and read books cover to cover? Or do you just use the "crash course" approach (i.e. use web tutorials and try to learn the technology as fst as you can)? |
AleaActaEst | dcp: both |
argolite | dcp: crash course, and prayer |
AleaActaEst | dcp: I personally do a lot of tutorials |
dcp | I find that reading books takes too much time, which is why I asked. |
AleaActaEst | dcp: try to set up a small environment to try things out... etc... |
argolite | dcp: totorials, examples, something that get give me quick onfpo how to do something I have not done before |
argolite | dcp: I never have time to read a whole subject cover-toi-cover. too many deisgns to do |
AleaActaEst | dcp: I am a big fan of Safary Book Online... :) |
dcp | Yeah, that was my next question (Safari) |
AleaActaEst | dcp: Safari Books online I mean |
AleaActaEst | dcp: invaluable |
dcp | Do you use it heavily? I'm trying to talk my employer into buying it, but with the economy, well, you get the idea. |
AleaActaEst | dcp: but we all know that google is your friend... :) |
argolite | dcp: Usually, though, if I run into a new subject, I got a book. I prefer paper when possible |
AleaActaEst | dcp: I use Safari quite a bit... but I also have probably about 500 actual vbooks as well... as reference |
argolite | dcp: can you share your account with other people in your workplace? |
argolite | dcp: that may be a good selling point with your employer |
dcp | Yes, it's just a really bad time in US right now, as I'm sure you're aware. So asking for *anything* is not a good idea. |
argolite | dcp: ah, but it is an excellent time to ask to be more efficient |
dcp | Sure, I pointed that out :) |
AleaActaEst | dcp: yeah I know what you mean... but Safaru has a number of options |
AleaActaEst | dcp: that can be relative cheap... |
dcp | It's still being considered. |
shankhs | Whats ususally your approach when you get a new challenge?How do you decide a single design pattern? |
argolite | dcp: after all, it could be looked upon as trying to save on other resources, and lets you be more efficient |
AleaActaEst | dcp: bascially for a price of a single book... you can get a full subscription (p/month) |
argolite | shankhs: I have done so many designs, that it usually comes to me quickly, and moist designs usually follow the same patterns |
argolite | shankhs: *most* designs, not *moist* |
dcp | AleaActaEst: I know argolite does TC full time, but I think you have a regular job right? |
AleaActaEst | shankhs: you need to study the design patterns a bit to become comfortable... |
AleaActaEst | dcp: I run my own business |
AleaActaEst | dcp: BUT... I try to put as much time into TC as I can |
shankhs | AleaActaEst: you mean practice? |
dcp | AleaActaEst: Did I read in the forum somewhere that you sleep like an hour a day or soemthing :) |
AleaActaEst | shankhs: no, I mean business a consulting business... |
shankhs | and what will you suggest for starters read a lot of books or start prcticing? |
AleaActaEst | dcp: lol - NO not that little (well occasionally yes) |
AleaActaEst | shankhs: definitely start practicing |
Samlovesyou | how do i get started practicing? |
argolite | shankhs: start practicing. do a simple design, and get feedback |
shankhs | AleaActaEst: how come you manage from just an hour? |
Samlovesyou | i want to implement algorithms |
argolite | Samlovesyou: take a look at some recent designs to see what it takes. |
AleaActaEst | shankhs: I do not really... I sleep on average about 4-5 hours... but I do sometimes go for a couple days on limited time... |
shankhs | AleaActaEst: kudos to you |
AleaActaEst | shankhs: when there is heavy competition... it is not a good idea to cut sleepp for too long |
dcp | AleaActaEst: Ok, that sounds a bit more realistic then :). |
shankhs | AleaActaEst: :) |
Samlovesyou | i've competed in ACM before |
dcp | AleaActaEst: I find that if you eat extremely well you can cheat a little on the sleep. |
shankhs | Is it possible in TC to design small stuffs and get a feedback? |
argolite | Samlovesyou: so what makes you interested in designs |
AleaActaEst | dcp: definitely true, at least in my experience... |
Samlovesyou | im not interested in design |
argolite | shankhs: definitely |
AleaActaEst | dcp: food has an effect on how you feel and that helps with everything... |
Samlovesyou | i am interested in coding..systems apps..raw socks etc |
shankhs | argolite: How? |
AleaActaEst | dcp: it is important to be focused in general and have well defined goals... |
dcp | AleaActaEst: I sleep about 5-6 and usually try to do a "catch-up" on Sunday afternoons. It seems to work well. |
argolite | shankhs: I believe there are some giudelines for submitting that may be available. One of the admins can chime in |
AleaActaEst | dcp: then you can see if for example sleep depravation coudl eneter the equation... :) |
dcp | AleaActaEst: But when there's a heavy comp, yeah, I've done the 2-3 days without sleep thing as well. |
argolite | shankhs: that should then tell you how to get started, what you general deliverables are, etc |
AleaActaEst | dcp: In general... you do what works for you... we are all a littel different... but I just hate sleep... |
argolite | shankhs: then once you know this, you should look at some Past Challenges, in the catalog, |
shankhs | argolite: and from where will i get the problem statement?The practice rooms dont have component designs' problems? |
AleaActaEst | dcp: there is so much to DO!... and so littel time ;) |
dcp | AleaActaEst: Ever tried that polywhatever (can't remember the term) pattern? It's something like you take a nap every 3-4 hours? |
argolite | shankhs: right. you would go to the main topcoder page, and go to design section |
argolite | shankhs: there would would see something like this: http://www.topcoder.com/tc?module=ViewActiveContests&ph=112 |
AleaActaEst | dcp: No... I do not think taht I did... I tend not to nap at all... |
argolite | shankhs: that shows the design competitoins currently open |
AleaActaEst | dcp: what I mean is I fight it... |
shankhs | and then post to the forum to get the feedback... |
argolite | shankhs: yup |
AleaActaEst | dcp: I have a great fear for examle of going to sleep before i submit something... |
shankhs | thanx argolite |
dcp | AleaActaEst: As long as I'm typing or thining I can stay awake. But if I have to listen to someone talk for any length of time, I'm toast. |
dcp | AleaActaEst: thining = thinking |
AleaActaEst | dcp: yes, spelling is not my greatest strength... lol |
dcp | AleaActaEst: That was actually my typo, not yours :P |
AleaActaEst | dcp: But there are many thinngs you can do to improve your chances during the competitions |
AleaActaEst | dcp: and being sleep deprived is really only a weaker option... |
AleaActaEst | dcp: there are a couple rules that I follow: |
AleaActaEst | dcp: 1. know Your Stuff |
AleaActaEst | dcp: Design Patterns - Study The classic Gof Book "Design Patterns" |
AleaActaEst | dcp: I woudl also try some of te J2EE design patterns: http://java.sun.com/blueprints/patterns/index.html |
AleaActaEst | dcp: know the ScoreCard... |
AleaActaEst | dcp: You need to know what you can get docked for... look at the design competition scorecard and study it... you need to know what you can lose points for |
AleaActaEst | dcp: 2. Study other people's submissions... |
AleaActaEst | dcp: TopCoder is awesome in the simple way that it allows you to see what other people did to WIN... This is invaluable. |
AleaActaEst | dcp: 3. Start simple... Do easy competitions... |
AleaActaEst | dcp: you do not have to win initially... you have to pay your dues... do one competition a week... fnish it... go through the appeals process... then see what the winners did... |
AleaActaEst | dcp: 4. Focus. |
AleaActaEst | dcp: Do not go after things you cannot finish. Winning is really about knowing your limits. |
AleaActaEst | dcp: but then hey... :) you gotta try... and there is alwasy that sleep depravation we talked about... it helps for a couple days... |
AleaActaEst | dcp: 5. Make time... |
argolite | yes, there's always that reserve time between 11 pm and 9 am |
AleaActaEst | dcp: It is hard to gauge how much time a competition will take... remember... this is very importamnt in any competition... TO KNOW what it takes... I think that is half the battle... |
AleaActaEst | dcp: 6. Do not give up... |
AleaActaEst | dcp: Failures are as useful as wins (except for the money part of course) |
dcp | AleaActaEst: Good advice, thanks. |
argolite | and once you learn all these steps, you can move on to advanced techniques... |
argolite | reappealing |
dcp | AleaActaEst: I enjoy dev so much though and it's easier to win typically. I mean, it's hard to compete against full time designers and win. |
AleaActaEst | dcp: definitely true... |
dcp | AleaActaEst: But I haven't ruled out trying design at some point, especially with the price changes for dev. |
shankhs | argolite: Thanx many a time for your very very valuable suggestion |
shankhs | AleaActaEst: Thanx many a time for your very very valuable suggestion |
argolite | shankhs: glad to help. Hope to see you competing |
AleaActaEst | shankhs: You are wolcome! Glad to be of help... :) |
AleaActaEst | shankhs: my spelling is aweful :( |
shankhs | argolite: I alwyays plan to ... but seeing the level of competition I always backoff |
AleaActaEst | shankhs: Do not back off... |
shankhs | AleaActaEst: np |
AleaActaEst | shankhs: try it... |
AleaActaEst | shankhs: I know that it can be intimidating... but you will get better as you do it. |
argolite | shankhs: yes, dont back off. it may take some time, but often you will not have that competition there |
shankhs | this time I will try accumulate all my strength and compete... |
argolite | shankhs: contrary to publuc opinion, we do not go for every design |
AleaActaEst | shankhs: it is really about DOING... |
AleaActaEst | shankhs: also start early and set goals each day to accomplish something for the competition... |
AleaActaEst | shankhs: divide and conquer approach is very useful here (and in life in general) |
AleaActaEst | shankhs: so you might start with Use-Case diagram first... |
shankhs | AleaActaEst: then... |
AleaActaEst | shankhs: get it done... do a couple iterations... look at other people's use-cases diagrams from past cometitions... |
AleaActaEst | shankhs: then you can create the outline of the classes that you will need in your deisgn |
AleaActaEst | shankhs: and ask yourself... how will they interact? |
AleaActaEst | shankhs: to solve the problem9s)? |
AleaActaEst | shankhs: problem(s) I mean |
AleaActaEst | shankhs: You can then do a quick Sequcne Diagram to see how all the actions would flow from one class to another... |
AleaActaEst | shankhs: for example... lets say that you wanted to ensure that a wen application alweays made sure that a user is logged in... |
AleaActaEst | shankhs: god... spelling... wen= WEB |
AleaActaEst | shankhs: let's say you are using a servlet... |
shankhs | AleaActaEst: ok |
AleaActaEst | shankhs: how woudl you ensure that each user gesture (i.e. user action in the web page) was checked for authentication |
AleaActaEst | shankhs: ... that kind of divide and conquer... one main aspect at a time... |
AleaActaEst | shankhs: after a while you will see taht you are becoming better, faster, and... more efficient |
AleaActaEst | shankhs: but form design pattern perspective I woudl say the ones that I use the most are: |
AleaActaEst | shankhs: - Strategy Pattern |
AleaActaEst | shankhs: - DAO and DTO |
shankhs | AleaActaEst: aha i never thought that way before thanx... |
shankhs | AleaActaEst: you mentioned the book "design patterns" ( a Gof book ) can you please tell the name of the author? |
AleaActaEst | shankhs: sure... |
shankhs | AleaActaEst: you mean you take a design pattern to start with and then see if its best in the scenario? |
AleaActaEst | authors: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides |
AleaActaEst | authors: thay are known as the gang of four |
shankhs | AleaActaEst: :) |
shankhs | AleaActaEst: thanx for such morale boosting |
shankhs | argolite: thanx for such morale boosting |
argolite | shankhs: you bet |
AleaActaEst | http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1234370914&sr=8-1 |
shankhs | argolite: whats you favourite design pattern and how do you approach a new challenge? |
argolite | shankhs: going over patterns book will be something you do a lot of as you compete. I still do it myself often |
argolite | shankhs: well, the most commom one has to be Strategy |
argolite | shankhs: so that one I dont have to think about |
argolite | shankhs: but there are many cases where I look at the problem, and go "hmm, maybe this patter or that pattern applies" |
AleaActaEst | shankhs: my favorite apttern is the null pattern... but I never really get to use it ;) http://en.wikipedia.org/wiki/Null_Object_pattern |
argolite | shankhs: then I read up on it to see if it could be applied |
argolite | shankhs: my favorite pattern has to be DTO |
argolite | shankhs: the one case where dubming down the code is a good thing |
argolite | shankhs: dumbing down, that is |
AleaActaEst | shankhs: patterns are a bit general and sometimes two or three different patterns could be utilized... and of course opnions will differ... |
AleaActaEst | shankhs: So do not get discouraged when a reviewer ina compeition tells you that you are not using the correct pattern... this way you will learn more... |
argolite | shankhs: the good thing about reviews is that often they give you a lot of good feedback |
AleaActaEst | shankhs: it take s abit of time to learn their (i.e. the patterns) specific characterstics... |
AleaActaEst | shankhs: The main ones to study would be strategy design patter, DAO, DTO, Facade, Factory (there are two of those), and Method Template pattern |
AleaActaEst | shankhs: it is also a good ide to llok at the MVC (Model View Controller) pattern as well... |
shankhs | AleaActaEst: for the GUI ones? |
carlogiordano | to argolite and AleaActaEst: what is your favorite competition Architecture or Component Design ? |
AleaActaEst | shankhs: yes MVC is sually ised for view (i.e. GIU) interactions... |
AleaActaEst | carlogiordano: for me it is design... |
argolite | carlogiordano: In what way? |
AleaActaEst | carlogiordano: sually ised ==> usually used |
argolite | carlogiordano: I like both alot |
argolite | carlogiordano: they are similar |
AleaActaEst | shankhs: another cool pattern is the Proxy pattern and the Decorator pattern |
argolite | carlogiordano: but in architecture, less documenting |
argolite | carlogiordano: and more high level |
argolite | carlogiordano: but more decisions too |
AleaActaEst | shankhs: actually... I love patterns... they are like a bit of good design DNA... apply them and see you designs grow to be strond and fit :) |
jmpld40 | before we end here in a few minutes I want to thank argolite and AleaActaEst for chatting today |
AleaActaEst | shankhs: strond ==> strong |
jmpld40 | and I want to thank you all for joining us as well. i hope you all start adding design competitions to your list! |
argolite | thanx and good luck to all |
AdamSelene | thanks all |
AleaActaEst | Nike got it right: JUST DO IT :) and you will see results |
AleaActaEst | thx guys! See you during the competitions |
jmpld40 | :) |
Mafy | goog luck to all! |
shankhs | argolite: AleaActaEst thanx for you valuable suggestions I am going to archive this .... Thanx TC also for arranging such a wonderful session. |
argolite | shankhs: and when you compete, do not hesitate to ask even the most basic questions |
argolite | shankhs: the worst question is the one that is not asked |
shankhs | argolite: I will |
shankhs | AleaActaEst: thankyou |
AleaActaEst | shankhs: You are welcome. |