Get Time
Spotlight Sessions: Component Chat Transcript

Chat transcript from Component Chat: Spotlight Session with Ghostar
Handle Comment
jmpld40Welcome to the final Spotlight Sessions Chat!
AleaActaEstHello EVERYONE!
argoliteHi all
shankhsHi everybody
AdamSeleneivern is on his way
AdamSelenenm he is here
AdamSelenemake sure to ask him the hard questions
AleaActaEstWe are outnumbered by the admins...
seckin_so, what is component design? :)
argoliteoh, do we have just an hour to answer that?!
shankhshow come a c/c++ programmer take part in components design challenges?What else do we need to learn?
AleaActaEstseckin_: A great way to have fun ... make some good money
argoliteseckin_: Meet new red friends
shankhsargolite: +1
AleaActaEstseckin_: 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?
argoliteseckin_: In desing I would say we take a small part of an application, and attempt to outline a detailed solution for it
AleaActaEstseckin_: and starting with the time line... a typical design competition is about 5-6 days
shankhsargolite: can you plz explain this a bit more?
argoliteseckin_: Something the developers, who actually provide the code, can take and, well, code it
shankhswhats the programming language do you use?
AleaActaEstshankhs: currently mostly java and C#
argoliteseckin_: I think the best way is to start with an example. Right now there is a competition to design some DAOs for an application
AleaActaEstshankhs: but also some C++, Flash (action script) and we had PHP as well
AleaActaEstshankhs: 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?
argoliteseckin_: That is one way of looking at it
argoliteseckin_: I will provide the details of what needs to happen
argoliteseckin_: It may not just be procedures, but classes, etcs
shankhsargolite: then how its different from the design competitions?
argoliteseckin_: 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
argoliteshankhs: Not sure I follow
shankhsargolite: how is software design and component design different?
argoliteshankhs: 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.
AleaActaEstshankhs: 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...
AleaActaEstshankhs: reu-sed ==> re-used
argoliteshankhs: Something relatively small
shankhsgot it
shankhsi must be fun then an action pack 6 days
seckin_argolite: what is DAO?
argoliteshankhs: DAO means Data Access Object. It refers to a class that completely encapsulates access to the database.
AleaActaEstseckin_: DAO = A design pattern for accessing data
AleaActaEstshankhs: lol - it definitely is a lot of fun
argoliteseckin_: 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
AleaActaEstshankhs: once you do a couple of the competitions you can become very efficient
argoliteshankhs: It can get intense, especially in that last 6 hours
seckin_argolite: what is needed to be successful in that area?
argoliteshankhs: when you realize you need more time
argoliteseckin_: some development background is good
argoliteseckin_: some grounding on object oriented techniques
shankhsdo you have to implement tough algos to get an edge or just design matters?
AleaActaEstshankhs: both...
argoliteshankhs: sometimes we do need a very good algo to win, but that is somewhat rare
AleaActaEstshankhs: but in general it is the design that is most important
dcpThis question is for both of you. How much time to you spend studying new technologies and what is your approach for learning them?
dcpDo 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)?
AleaActaEstdcp: both
argolitedcp: crash course, and prayer
AleaActaEstdcp: I personally do a lot of tutorials
dcpI find that reading books takes too much time, which is why I asked.
AleaActaEstdcp: try to set up a small environment to try things out... etc...
argolitedcp: totorials, examples, something that get give me quick onfpo how to do something I have not done before
argolitedcp: I never have time to read a whole subject cover-toi-cover. too many deisgns to do
AleaActaEstdcp: I am a big fan of Safary Book Online... :)
dcpYeah, that was my next question (Safari)
AleaActaEstdcp: Safari Books online I mean
AleaActaEstdcp: invaluable
dcpDo you use it heavily? I'm trying to talk my employer into buying it, but with the economy, well, you get the idea.
AleaActaEstdcp: but we all know that google is your friend... :)
argolitedcp: Usually, though, if I run into a new subject, I got a book. I prefer paper when possible
AleaActaEstdcp: I use Safari quite a bit... but I also have probably about 500 actual vbooks as well... as reference
argolitedcp: can you share your account with other people in your workplace?
argolitedcp: that may be a good selling point with your employer
dcpYes, 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.
argolitedcp: ah, but it is an excellent time to ask to be more efficient
dcpSure, I pointed that out :)
AleaActaEstdcp: yeah I know what you mean... but Safaru has a number of options
AleaActaEstdcp: that can be relative cheap...
dcpIt's still being considered.
shankhsWhats ususally your approach when you get a new challenge?How do you decide a single design pattern?
argolitedcp: after all, it could be looked upon as trying to save on other resources, and lets you be more efficient
AleaActaEstdcp: bascially for a price of a single book... you can get a full subscription (p/month)
argoliteshankhs: I have done so many designs, that it usually comes to me quickly, and moist designs usually follow the same patterns
argoliteshankhs: *most* designs, not *moist*
dcpAleaActaEst: I know argolite does TC full time, but I think you have a regular job right?
AleaActaEstshankhs: you need to study the design patterns a bit to become comfortable...
AleaActaEstdcp: I run my own business
AleaActaEstdcp: BUT... I try to put as much time into TC as I can
shankhsAleaActaEst: you mean practice?
dcpAleaActaEst: Did I read in the forum somewhere that you sleep like an hour a day or soemthing :)
AleaActaEstshankhs: no, I mean business a consulting business...
shankhsand what will you suggest for starters read a lot of books or start prcticing?
AleaActaEstdcp: lol - NO not that little (well occasionally yes)
AleaActaEstshankhs: definitely start practicing
Samlovesyouhow do i get started practicing?
argoliteshankhs: start practicing. do a simple design, and get feedback
shankhsAleaActaEst: how come you manage from just an hour?
Samlovesyoui want to implement algorithms
argoliteSamlovesyou: take a look at some recent designs to see what it takes.
AleaActaEstshankhs: I do not really... I sleep on average about 4-5 hours... but I do sometimes go for a couple days on limited time...
shankhsAleaActaEst: kudos to you
AleaActaEstshankhs: when there is heavy competition... it is not a good idea to cut sleepp for too long
dcpAleaActaEst: Ok, that sounds a bit more realistic then :).
shankhsAleaActaEst: :)
Samlovesyoui've competed in ACM before
dcpAleaActaEst: I find that if you eat extremely well you can cheat a little on the sleep.
shankhsIs it possible in TC to design small stuffs and get a feedback?
argoliteSamlovesyou: so what makes you interested in designs
AleaActaEstdcp: definitely true, at least in my experience...
Samlovesyouim not interested in design
argoliteshankhs: definitely
AleaActaEstdcp: food has an effect on how you feel and that helps with everything...
Samlovesyoui am interested in apps..raw socks etc
shankhsargolite: How?
AleaActaEstdcp: it is important to be focused in general and have well defined goals...
dcpAleaActaEst: I sleep about 5-6 and usually try to do a "catch-up" on Sunday afternoons. It seems to work well.
argoliteshankhs: I believe there are some giudelines for submitting that may be available. One of the admins can chime in
AleaActaEstdcp: then you can see if for example sleep depravation coudl eneter the equation... :)
dcpAleaActaEst: But when there's a heavy comp, yeah, I've done the 2-3 days without sleep thing as well.
argoliteshankhs: that should then tell you how to get started, what you general deliverables are, etc
AleaActaEstdcp: In general... you do what works for you... we are all a littel different... but I just hate sleep...
argoliteshankhs: then once you know this, you should look at some Past Challenges, in the catalog,
shankhsargolite: and from where will i get the problem statement?The practice rooms dont have component designs' problems?
AleaActaEstdcp: there is so much to DO!... and so littel time ;)
dcpAleaActaEst: Ever tried that polywhatever (can't remember the term) pattern? It's something like you take a nap every 3-4 hours?
argoliteshankhs: right. you would go to the main topcoder page, and go to design section
argoliteshankhs: there would would see something like this:
AleaActaEstdcp: No... I do not think taht I did... I tend not to nap at all...
argoliteshankhs: that shows the design competitoins currently open
AleaActaEstdcp: what I mean is I fight it...
shankhsand then post to the forum to get the feedback...
argoliteshankhs: yup
AleaActaEstdcp: I have a great fear for examle of going to sleep before i submit something...
shankhsthanx argolite
dcpAleaActaEst: 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.
dcpAleaActaEst: thining = thinking
AleaActaEstdcp: yes, spelling is not my greatest strength... lol
dcpAleaActaEst: That was actually my typo, not yours :P
AleaActaEstdcp: But there are many thinngs you can do to improve your chances during the competitions
AleaActaEstdcp: and being sleep deprived is really only a weaker option...
AleaActaEstdcp: there are a couple rules that I follow:
AleaActaEstdcp: 1. know Your Stuff
AleaActaEstdcp: Design Patterns - Study The classic Gof Book "Design Patterns"
AleaActaEstdcp: I woudl also try some of te J2EE design patterns:
AleaActaEstdcp: know the ScoreCard...
AleaActaEstdcp: 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
AleaActaEstdcp: 2. Study other people's submissions...
AleaActaEstdcp: TopCoder is awesome in the simple way that it allows you to see what other people did to WIN... This is invaluable.
AleaActaEstdcp: 3. Start simple... Do easy competitions...
AleaActaEstdcp: 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...
AleaActaEstdcp: 4. Focus.
AleaActaEstdcp: Do not go after things you cannot finish. Winning is really about knowing your limits.
AleaActaEstdcp: but then hey... :) you gotta try... and there is alwasy that sleep depravation we talked about... it helps for a couple days...
AleaActaEstdcp: 5. Make time...
argoliteyes, there's always that reserve time between 11 pm and 9 am
AleaActaEstdcp: 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...
AleaActaEstdcp: 6. Do not give up...
AleaActaEstdcp: Failures are as useful as wins (except for the money part of course)
dcpAleaActaEst: Good advice, thanks.
argoliteand once you learn all these steps, you can move on to advanced techniques...
dcpAleaActaEst: 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.
AleaActaEstdcp: definitely true...
dcpAleaActaEst: But I haven't ruled out trying design at some point, especially with the price changes for dev.
shankhsargolite: Thanx many a time for your very very valuable suggestion
shankhsAleaActaEst: Thanx many a time for your very very valuable suggestion
argoliteshankhs: glad to help. Hope to see you competing
AleaActaEstshankhs: You are wolcome! Glad to be of help... :)
AleaActaEstshankhs: my spelling is aweful :(
shankhsargolite: I alwyays plan to ... but seeing the level of competition I always backoff
AleaActaEstshankhs: Do not back off...
shankhsAleaActaEst: np
AleaActaEstshankhs: try it...
AleaActaEstshankhs: I know that it can be intimidating... but you will get better as you do it.
argoliteshankhs: yes, dont back off. it may take some time, but often you will not have that competition there
shankhsthis time I will try accumulate all my strength and compete...
argoliteshankhs: contrary to publuc opinion, we do not go for every design
AleaActaEstshankhs: it is really about DOING...
AleaActaEstshankhs: also start early and set goals each day to accomplish something for the competition...
AleaActaEstshankhs: divide and conquer approach is very useful here (and in life in general)
AleaActaEstshankhs: so you might start with Use-Case diagram first...
shankhsAleaActaEst: then...
AleaActaEstshankhs: get it done... do a couple iterations... look at other people's use-cases diagrams from past cometitions...
AleaActaEstshankhs: then you can create the outline of the classes that you will need in your deisgn
AleaActaEstshankhs: and ask yourself... how will they interact?
AleaActaEstshankhs: to solve the problem9s)?
AleaActaEstshankhs: problem(s) I mean
AleaActaEstshankhs: You can then do a quick Sequcne Diagram to see how all the actions would flow from one class to another...
AleaActaEstshankhs: for example... lets say that you wanted to ensure that a wen application alweays made sure that a user is logged in...
AleaActaEstshankhs: god... spelling... wen= WEB
AleaActaEstshankhs: let's say you are using a servlet...
shankhsAleaActaEst: ok
AleaActaEstshankhs: how woudl you ensure that each user gesture (i.e. user action in the web page) was checked for authentication
AleaActaEstshankhs: ... that kind of divide and conquer... one main aspect at a time...
AleaActaEstshankhs: after a while you will see taht you are becoming better, faster, and... more efficient
AleaActaEstshankhs: but form design pattern perspective I woudl say the ones that I use the most are:
AleaActaEstshankhs: - Strategy Pattern
AleaActaEstshankhs: - DAO and DTO
shankhsAleaActaEst: aha i never thought that way before thanx...
shankhsAleaActaEst: you mentioned the book "design patterns" ( a Gof book ) can you please tell the name of the author?
AleaActaEstshankhs: sure...
shankhsAleaActaEst: you mean you take a design pattern to start with and then see if its best in the scenario?
AleaActaEstauthors: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
AleaActaEstauthors: thay are known as the gang of four
shankhsAleaActaEst: :)
shankhsAleaActaEst: thanx for such morale boosting
shankhsargolite: thanx for such morale boosting
argoliteshankhs: you bet
shankhsargolite: whats you favourite design pattern and how do you approach a new challenge?
argoliteshankhs: going over patterns book will be something you do a lot of as you compete. I still do it myself often
argoliteshankhs: well, the most commom one has to be Strategy
argoliteshankhs: so that one I dont have to think about
argoliteshankhs: but there are many cases where I look at the problem, and go "hmm, maybe this patter or that pattern applies"
AleaActaEstshankhs: my favorite apttern is the null pattern... but I never really get to use it ;)
argoliteshankhs: then I read up on it to see if it could be applied
argoliteshankhs: my favorite pattern has to be DTO
argoliteshankhs: the one case where dubming down the code is a good thing
argoliteshankhs: dumbing down, that is
AleaActaEstshankhs: patterns are a bit general and sometimes two or three different patterns could be utilized... and of course opnions will differ...
AleaActaEstshankhs: 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...
argoliteshankhs: the good thing about reviews is that often they give you a lot of good feedback
AleaActaEstshankhs: it take s abit of time to learn their (i.e. the patterns) specific characterstics...
AleaActaEstshankhs: The main ones to study would be strategy design patter, DAO, DTO, Facade, Factory (there are two of those), and Method Template pattern
AleaActaEstshankhs: it is also a good ide to llok at the MVC (Model View Controller) pattern as well...
shankhsAleaActaEst: for the GUI ones?
carlogiordanoto argolite and AleaActaEst: what is your favorite competition Architecture or Component Design ?
AleaActaEstshankhs: yes MVC is sually ised for view (i.e. GIU) interactions...
AleaActaEstcarlogiordano: for me it is design...
argolitecarlogiordano: In what way?
AleaActaEstcarlogiordano: sually ised ==> usually used
argolitecarlogiordano: I like both alot
argolitecarlogiordano: they are similar
AleaActaEstshankhs: another cool pattern is the Proxy pattern and the Decorator pattern
argolitecarlogiordano: but in architecture, less documenting
argolitecarlogiordano: and more high level
argolitecarlogiordano: but more decisions too
AleaActaEstshankhs: 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 :)
jmpld40before we end here in a few minutes I want to thank argolite and AleaActaEst for chatting today
AleaActaEstshankhs: strond ==> strong
jmpld40and I want to thank you all for joining us as well. i hope you all start adding design competitions to your list!
argolitethanx and good luck to all
AdamSelenethanks all
AleaActaEstNike got it right: JUST DO IT :) and you will see results
AleaActaEstthx guys! See you during the competitions
Mafygoog luck to all!
shankhsargolite: AleaActaEst thanx for you valuable suggestions I am going to archive this .... Thanx TC also for arranging such a wonderful session.
argoliteshankhs: and when you compete, do not hesitate to ask even the most basic questions
argoliteshankhs: the worst question is the one that is not asked
shankhsargolite: I will
shankhsAleaActaEst: thankyou
AleaActaEstshankhs: You are welcome.