Sunday, July 12, 2009

Programming question for professionals only?

I did graduation in computer science from university in august 2006. My minor was in mangement information system. I am not interested in programming for its coding. But as management jobs are not so much available, I have to look for programming/coding.


I have some questions. Just try to give me some idea.


1. What is "writing test plan, test execution, web testing, backend testing."?


2. How much knowledge is needed to say proficient on "C Sharp using Microsoft SQL Server 2005 as the database" and "report design using Crystal Report in C Sharp"? Or from where I can get that knowledge?


3. What does it mean by having solid understanding on "Object Oriented Architecture and Design" and "Microsoft Dot Net framework" and "all stages of Software Development Life Cycle" (In theroy or coding)?

Programming question for professionals only?
1. When you are done with a change, you need to test your changes first just to make sure not only it does what it is supposed to do, but also it does not destroy the existing features. You would need to lay out how you are going to test your changes. Let's say you have added a column to a table in an HTML form. So, you would need to come up with different testing scenarios. Let's say this column would show data in a field in the database and this field is optional, which means this field may be blank sometimes. Here are the scenarios that you need to test,


i) A person with that field populated logs on to your application.


ii) A person with that field not populated logs on to your application.


And then you will need to come up with a detailed plan like the one below,


A person would log on using user name, whatever, and password, whatever. Click on whichever link on the navigation bar to open up whatever application. And then he/she would the additional column right next to whatever field.





In regard to web testing and backend testing, the testing plan that you have is for one person testing the change. In reality, you would almost always never see just one person hitting your application at any given time. Chances are, you will have multiple people hitting the application and the database at the same time. Would your server be able to handle tens of thousands of concurrent users? Would your database backend be able to handle multi-threading solutions?





2. C# (pronounced as C Sharp) is Microsoft's attempt to compete with Java. C# is also one of the languages that ASP .Net uses. ASP stands for Active Server Pages. ASP, ASP .Net, ColdFusion, PHP, JSP (Java Server Pages) are all used for server side programming. These languages allow you to develop dynamic web applications that interact with a database, web services, RSS feed, objects,...and many other server side technologies. There are many popular selections as the database backend (i.e. MS SQL Server, Access, MySQL, ...etc.) MS SQL and MySQL are mainly used for enterprise level applications. Crystal Report is one of the most popular technologies for report and charting purposes. You can use C# to generate a Crystal Report based upon the parameters on the fly. To learn more about it, you can go to any major book stores like Barnes and Noble or Borders to read up on ASP .Net, C#, MS SQL, and Crystal Report.





3. If you graduated with a computer science degree just two years ago, you have got to know what Object Oriented Architecture (OOA) is. I got my computer science degree back in 1997. OOA was a big topic back then and has grown to a major architecture now. It is hard to explain to you in details what OOA is because I wouldn't have enough space for that. I would assume that you had taken some C++ classes in university. C++ is an OO language. Let's say you have to program something about a car. A car is an object. There are many attributes related to a car (object). A car has doors, a muffler, an engine, ...etc. A car can move forward, backward, turn left, turn right, ...etc. You can define a car as an object that has all these attributes. So, when you say A_car = New Car(). A_car would be defined as a car with all the attributes related to a car. Microsoft .Net Framework is even harder to explain. You can go to any major book stores to read up on it.


In regard to Software Development Life Cycle, whenever you have to do a project, instead of just go ahead and make the change, you would need to create some kind of specs first that explains how the whole project is going to be carried out. I know you probably never did anything like this when you were in university. This spec would cover the followings,


i) Analysis: what hardware is necessary for this change, what personnel need to be involved, what is in scope, what is out of scope, ...etc.


ii) The purpose of this project.


iii) What exactly are the changes involved in this project. Flowchart of the application. If it were a change to an existing application, you will need to show the comparisons of the existing application and the application with your change. Would users have a different experience in the new application? It would be great to have a mock screen shots.


iv) When the changes are completed, how are you going to test the changes? How are you going to get the changes to production? Who needs to test the changes?





The whole point of creating a spec is for your clients to see what actually will be done. You don't start your actual development until the spec is approved by your clients. Many times, your clients may request a change that they think is a simple change (because they are not computer programmers) to your program that may not be so simple to you. Before doing the actual development work, all the changes are done to the spec, which you basically just need to re-type it and it does not take you much time relatively speaking. When the spec is approved, you will build your application according to the spec. If your clients change their minds, you can point them to the spec.
Reply:We seem to be on the same boat here, but Im a software engineering student in my final semester, so ill try to help you out here. Here we go :





1. a%26gt;Test Plan: You are actually going yo have to PLAN your SDLC (Software Development Life Cycle) before you actually embark on building any software.





1.b%26gt;Test Execution : Does any other software actually match your current program? If so, whats its efficiency? Are you trying to create a program thats better than the current one? Whats the approach you'll be taking?





1.c%26gt;web testing : Basically involves deploying the developed web enabled software onto a running server such as Apache Tomcat, to check the working. If the environment isnt properly configured, it is made so, and then re-iterated.





2. a%26gt; If you are able to store/retrieve values from SQL enabled back ends from a variety of vendors (Oracle, MS-SQL) into C sharp programs, and then use them in data sets, consider yourself proficient enough. These datasets can also be used to further values into your on screen Widgets/ Components.





2.b%26gt; If you are able to design crystal reports showing the summaries of available data in a database. This includes some presentation aspects such as graphs, pie charts, and the likes. These are very important in real world applications.





2.c%26gt;Where to get the knowledge from :


If you have installed C sharp, you might consider installing MSDN which is microsoft's documentation of its product. This is pretty useful for begginers as it has a lot of tutorials and examples. You might also consider searching on alternative search engines such as Yahoo! or Ask.com.





I got to know the better part of C sharp from a book by Andrew Troelson. It covers all aspects of C sharp programming including ASP.NET ! I would recommend it to anyone.





3%26gt; Object Oriented Programming came about in the 90's to change the way we coded. Earlier, we were using a function based paradigm. That is, Programs would contain functions which were actually a grouping of a sequence of repeatedly called instructions. This was fine but had many limitations. And made efficient coding difficult.





With the advent of Object Oriented Architecture Design, real world objects could be modelled into "objects". These objects had :





a%26gt; Attributes: These were the properties of the object. For example, a Box object would have properties color, height, and width





b%26gt;Methods : Functionality, in this case sitting idly.





You should be able to code any real world object and realize its functionality, and interaction with other objects with respect to the above mentioned.





Microsoft .net framework :





Thorough understanding of CLR(Common Language Runtime), CTS( Common Type System), Assembly, Garbage Collection, and Platform independence (within windows versions).





SDLC : Any program has to undergo a series of steps, which you follow is left to the demand.





All 3 of the above mentioned will be taken in a great detail in any book which attempts to teach the .net framework.





In your case, I would recommend Andrew Troelsons' book.





My technology blog : http://pcriddler.blogspot.com





I love writing ;)
Reply:I don't have all the answers but let me try to help with a few.


1) Those phrases are basically the testing cycle of the life cycle that you are talking about in #3. Writing test plan is pretty much what it sounds like, it is a report that states what you are going to do in order to test the software. Execution is self-explanatory, web testing is testing on the web and backend testing is testing from the server side (in the simplist forms). For example, testing the database that the code is accessing.





2) To me, being proficient in something you just know. Can you do any of these tasks without having to look up information in a book or on the web. Do you understand what they are talking about. I would do some good research on the topics and see if there are any training classes out there to help.





3) Solid understanding means that you know it backwards and forwards. How familiar are you with all of those terms? You can usually tell someone interviewing you that you understand the theory and have done the implementation in a specific language (which may not be the language that they need).





Hope that helps.
Reply:First , You are Graduated from a third country College





if you are really want to be good c# , OOP ,SQLSERVER 2000, crystal reports then i'll recommend to you some courses





1- Ask about a course for MCAD.NET c# , i'd prefer to take web developer path


the Mcad.net is like a diploma that has allot of what you need





2- read a book on crystal reports then make a project





3- read and read and read ... if you will not read , you will never be a good programmer !





4- if you want to grasp the OOP Concept i recommend to you to read Head First series from O'Reilly





this journey will take 8-9 month for beginners ... if you have any idea about that .. may be took less time
Reply:9-5 programming job sucks!


So register as freelance programmer


at


http://www.getafreelnacer.com/


and start bidding for all freelance jobs posted


there. Become a freelance star today.
Reply:Heh... looking at job postings? :)





Let me give you some tips... 99% of all job postings are written by a Human Resources department who have no idea what they're writing themselves. Your actual employer will not expect you to be a perfect candidate or have an excellent knowledge of everything they ask of you... if you meet 70% or more of their demands, then apply for the job... the worst thing that could happen is they don't give you a call back... and if they do, who's to say you won't win them on the interview? That said... let me answer your questions more specifically:





Test planning, etc, etc is all related to a proper programming process. You should be familiar and comfortable with the entire process of planning out your program, developing flow charts, hard coding the program, debugging the program, developing test cases for your application, and testing it. It's all fairly intuitive and I'm sure you've done it in college... I suspect you should meet this requirement. This is also what employers are talking about when they say "Software development life cycle."





"Proficiency" is very relative and you can't put a solid definition on what an employer expects when they say this... Let's put it this way... if you feel fully comfortable clicking on a question on Yahoo Answers that says "Need help with {C# / SQL Server / Crystal Reports}" knowing that you can probably answer it... then I'd say you are efficient enough to apply.





The same goes for "solid understanding"... if you feel comfortable with all of the items you listed... enough that you could assist someone with it... then you are good enough to apply.





Don't be afraid of not getting called back and don't be afraid of giving a bad interview... it happens to the best of us... you need a job and you need experience so apply as much as you can and hope you get called back.

wildflower

No comments:

Post a Comment