Complete IT Professional http://www.completeitprofessional.com Helping Software Developers Get Ahead In Their Careers Wed, 28 Jan 2015 11:00:25 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Interview with Daniel Birch (@dannytbirch)http://www.completeitprofessional.com/interview-with-daniel-birch/ http://www.completeitprofessional.com/interview-with-daniel-birch/#comments Wed, 28 Jan 2015 11:00:25 +0000 http://www.completeitprofessional.com/?p=3188 ]]> Interview with Daniel BirchThis post is an interview with @dannytbirch about several aspects of being a programmer.

What is your current role?

Game Engine Programmer

How long have you been programming for, both professionally and from when you first started?

Started programming around 13 (11 years ago), been semi-professional about 5 years and fully for 3.

What was your first language and how did you learn that?

Visual Basic, just fiddling around! Probably online tutorials and stuff but mainly experimental.

What languages are you writing in now?

Predominantly C++ but I do also use many others recreationally (PHP, C# etc). I was employed previously as a C# programmer.

What is your favourite thing about being a programmer?

Personal projects can turn into business ventures, planned business ventures can turn into personal projects. I.e, you can do whatever you want.

If there was one thing you wish you didn’t have to do, what would it be?

There are boring aspects to all jobs, maintenance and working on areas you are not interested in often arise on smaller teams. For me this is heavy work on tools as I prefer to write runtime code (where tools are used to pre-process game data).

What other issues do you have on the job as a programmer?

Working in games is hard, there are tight deadlines and they are often hard to hit and require a lot of effort and overtime. Although this depends where and what you work on and should be more relaxed in modern environments where focus is placed on productivity and efficiency rather than brute force.

What advice would you give to people looking to get into programming?

Practice, you won’t get far with a qualification if you no experience. This is true of every job in the games industry and you will need a lot of programming experience outside of qualifications. I had a grueling C test when I joined and couldn’t have passed it without years of experience!

 

Thanks Danny for the interview!

Readers, if you’re interested in being featured on an interview on Complete IT Professional, just fill out the form here.

]]>
http://www.completeitprofessional.com/interview-with-daniel-birch/feed/ 0
4 Ways To Improve Your .Net Developer Salaryhttp://www.completeitprofessional.com/net-developer-salary/ http://www.completeitprofessional.com/net-developer-salary/#comments Mon, 26 Jan 2015 11:00:54 +0000 http://www.completeitprofessional.com/?p=3177 ]]> 4 Ways To Improve Your .Net Developer SalaryA .NET Developer is a software developer who works with .NET technologies. It has risen in popularity in recent years. If you’re a .NET developer, read on to see how you can improve your salary.

This article is a part of my salary improvement series, which includes articles on Software Engineers, Web Developers, Java Developers, PHP Developers and more. I’ve gotten some of the data from Payscale and performed my own analysis on it, giving you some actionable advice on how you can improve it.

What Is The Average .NET Developer Salary?

First of all, let’s have a look at the salary figures.

The average .NET developer salary in the US as of January 2015 is $63,407.

Let’s see how this compares to other roles.

RoleSalary
Application Developer$66,355
IT Consultant$74,268
Junior Software Engineer$52,736
Lead Software Engineer$103,468
Java Developer$69,400
Senior Java Developer$96,178
Web Developer$53,675
Senior Web Developer$78,116
Senior .Net Developer$89,001
Database Developer$71,891
Senior Database Developer$95,081

 

As you can see, there is a large difference with these roles, which were chosen for this list as they are similar roles.

  • Application Developer: a general developer role, which I assume is where the survey respondents don’t mention a specific language, or aren’t focused on just one language.
  • IT Consultant: this is a consulting role and was put here as a comparison, as some consultants could be developers, and vice versa.
  • Junior/Lead Software Engineer: there is a big difference in salaries for these roles. A software engineer is a pretty experienced role, so I’m not surprised that the salary is higher.
  • Java Developer & Senior Java Developer: an alternative language which is used a lot in companies, Java developers have comparable salaries to .NET developers.
  • Web Developer & Senior Web Developer: these salaries are a bit lower that other roles, which may be for several reasons.
  • Senior .NET Developer: This is a senior role of the role in question, and the salary is almost as high as the Senior Java Developer and other senior roles.
  • Database Developer & Senior Database Developer: these roles work on databases and also have a higher salary than a .NET developer.

Alright, so we’ve seen the salary data. What can we do to improve our own .NET developer salary?

 

Learn More Skills

I’ve mentioned this in a few of my other salary improvement posts, but one of the best ways to improve your .NET developer salary is to learn more skills.

Learning skills that are related to your role as a .NET developer (so I’m talking about other technical skills) can improve your salary for several reasons.

You can do more tasks that you weren’t able to before, because you have learnt the skills that allow you to do different tasks.

You can save your employer time and money, because if you’re able to do some tasks with your new skill, then they may not need an extra team member. For example, if you were to learn SQL Server skills (which, according to Payscale, can provide a 3% higher salary), you can write and run your own SQL queries.

According to the Payscale website, the skills that cause a .NET developer’s salary to increase are:

  • IIS (Internet Information Server): 6% salary increase
  • Microsoft SQL Server: 3% salary increase
  • C# or ASP.NET or Oracle: 2% salary increase

 

Move Companies

A common way to increase your salary is to move companies. Time and time again I hear stories of people who have moved companies and have gotten an increase in their salary.

Moving companies can result in a large increase to your salary. This can be from a movement into a more senior role, or just moving into a similar role at a different company. This can happpen if you’re underpaid in your current role.

 

Gain More Experience

Getting more experience as a .NET developer is another good way to improve your salary.

Of course, experience is often mentioned in time, and just spending more time in the role can help. But you pribably knew that.

What I mean by “getting more experience” in this point is that it can be helpful to work on different kinds of projects in your company.

If you’ve been doing similar kind of development work for some time, it could be a good idea to find a new kind of project to work on. This will expand your knowledge and get you to try out different skills and techniques.

It can also make you more valuable to the company, as you have different experiences and more knowledge to use in your role.

 

Get Certified

Another way to get a salary increase as a .NET developer is to get a certification. Microsoft offers several certifications that you can get as a .NET developer, such as the MTA (Microsoft Technology Associate), or the MCSD (Microsoft Certified Solutions Developer).

Microsoft has recently changed their certification structure, which means they have not developed many higher-level certifications at the time of writing. However, the MCSD is a good certification to get, and comes in different variations for developers.

 

Conclusion

So, in this article we’ve looked at the current .NET developer salary and a few ways you can improve it, which are:

  • Learn more skills which are related to .NET development
  • Move companies to get a pay rise or a promotion
  • Gain more experience in other projects or teams
  • Get a certification relating to .NET development

 

Readers, what other advice could you offer to improve your salary? What do you have planned to earn more this year?

Career Action Tip: Select one of the four methods mentioned here to improve your salary, and decide on the next step to make it happen.

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

]]>
http://www.completeitprofessional.com/net-developer-salary/feed/ 0
Oracle INSTR Function Explained with Exampleshttp://www.completeitprofessional.com/oracle-instr/ http://www.completeitprofessional.com/oracle-instr/#comments Thu, 22 Jan 2015 11:30:00 +0000 http://www.completeitprofessional.com/?p=3149 ]]> Oracle FunctionThe Oracle INSTR function is a common string manipulation function, and exists in many variations of SQL. Let’s have a look at the Oracle version along with some examples.

Purpose of the Oracle INSTR Function

The Oracle INSTR function allows you to search a string, for the occurrence of another string, and return the position of the occurrence within the string.

It’s good for finding if a string exists in another string, and also for performing additional tasks on, like other text manipulation functions or updating data.

Both the string and substring parameters can be any of the following data types:

  • CHAR
  • VARCHAR2
  • NCHAR
  • NVARCHAR2
  • CLOB
  • NCLOB

 

Syntax

The syntax for the INSTR function is:

INSTR( string, substring, [start_position], [occurrence] )

This Oracle INSTR function is actually different from other functions in that it has several different versions. Each of them vary in how they determine the position of the substring to return:

  • INSTR calculates the length using characters defined by the input character set.
  • INSTRB calculates the length using bytes.
  • INSTRC calculates the length using Unicode complete characters.
  • INSTR2 calculates the lengths using USC2 code points.
  • INSTR4 calculates the lengths using USC4 code points.

 

Parameters

The parameters of the INSTR function are:

  • string (mandatory): This is the text string that is searched in. It is usually the larger of the two strings. If you are looking to “find X within Y”, this is the Y component.
  • substring (mandatory): This is the text string that is searched for. It is usually the smaller of the two strings. If you are looking to “find X within Y”, this is the X component.
  • start_position (optional): This is a nonzero integer, and indicates where in the string value to start the search. The default is 1, which is the start of the string. If it is negative, the function searches and counts from the end of string and goes backwards.
  • occurrence (optional): This is a positive integer, and indicates which occurrence of the substring the function should search for. The default value is 1, which means the functions searches for the first occurrence.

The search performed in this function is case-sensitive.

 

Oracle INSTR Return Value

The function returns a NUMBER value, which is the number in the location of the string where the substring is found. The numbering starts at 1, so if it is the first character, the function will return 1.

If substring is not found, the function will return a zero (o).

 

Examples of the INSTR Function

Here are some examples of the Oracle INSTR function. I find that examples are the best way for me to learn about code, even with the explanation above.

Example 1:

This example just searches for the first occurrence of the letter “e”.

SELECT INSTR('Melbourne, Australia', 'e') FROM DUAL;

Result:

2

 

Example 2:

This example searches for the first occurrence of the letter “m” (note that it is in lower case).

SELECT INSTR('Melbourne, Australia', 'm') FROM DUAL;

Result:

0

 

Example 3:

This example searches for an uppercase “M”.

SELECT INSTR('Melbourne, Australia', 'M') FROM DUAL;

Result:

1

 

Example 4:

This example searches for the letter “e”, starting from position 1 and finding the second occurrence.

SELECT INSTR('Melbourne, Australia', 'e', 1, 2) FROM DUAL;

Result:

9

This is the “e” at the end of the word “Melbourne”.

 

Example 5:

This example searches for the letter “e”, starting from position 5, and finding the first occurrence.

SELECT INSTR('Melbourne, Australia', 'e', 5, 1) FROM DUAL;

Result:

9

This is the “e” at the end of the word “Melbourne”.

 

Example 6:

This example searches for the letter “e”, starting from position 5, and finding the second occurrence.

SELECT INSTR('Melbourne, Australia', 'e', 5, 2) FROM DUAL;

Result:

0

No second occurrence of “e” is found after this point.

 

Example 7:

This example searches for the string “bou” within the entire string.

SELECT INSTR('Melbourne, Australia', 'bou') FROM DUAL;

Result:

4

 

Example 8:

This example searches for the letter “a” but starts from the end of the string.

SELECT INSTR('Melbourne, Australia', 'a', -1) FROM DUAL;

Result:

20

The first “a” that is found is the value at the end of “Australia”.

 

Example 9:

This example searches for the letter “a”, but starts from the end of the string, and finds the second occurrence.

SELECT INSTR('Melbourne, Australia', 'a', -1, 2) FROM DUAL;

Result:

17

This is the “a” that is found in the middle of the word “Australia”, as it is the second occurrence working backward from the string.

 

Similar Functions

Some functions which are similar to the INSTR function are:

  • REGEXP_INSTR – Similar to the INSTR function, but allows for regular expressions.
  • LENGTH – Returns the length of the provided string.
  • REPLACE – Replaces one string with another string in the provided value.
  • SUBSTR – Returns a part of the provided string, based on the specified position and length.

 

Video

For an example of this function, watch the video here.

(Coming Soon)

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

Image courtesy of digitalart / FreeDigitalPhotos.net

]]>
http://www.completeitprofessional.com/oracle-instr/feed/ 0
What Does a Business Analyst Do?http://www.completeitprofessional.com/what-does-a-business-analyst-do/ http://www.completeitprofessional.com/what-does-a-business-analyst-do/#comments Mon, 19 Jan 2015 11:00:07 +0000 http://www.completeitprofessional.com/?p=3162 ]]> What Does a Business Analyst DoA business analyst plays an important part in a project team. Find out what a business analyst does in this article.

What Does A Business Analyst Do?

A business analyst is a role in the software project team. They are the main contact point between the business representatives and the IT teams.

Their main role is to speak to the business representatives, find out what their requirements are, document them, and communicate them to the IT teams who perform the development work.

This might sound straight forward, but it does take a bit of work. Let’s have a look into each of these areas in more detail.

 

What Are Business Representatives?

Business representatives on a software project team are those who work in the company and have something to do with the product or solution. They can be:

  • The person or people paying for, or funding, the project
  • The people who use the solution
  • The people who represent the users of the solution (as sometimes the actual users are not available)
  • The people who understand the business process

Depending on your project, these roles could all be covered by one person, or there could be ten or twenty or even more people involved as a business representative. They are also commonly called stakeholders, as they have a stake in the project and its success.

 

What Are The IT Teams?

Well, the IT teams are the people who do the actual development work for the project. As a software developer, this is where you would fit in. They also involve the testers, IT architects, and any other role that relates to the software that is being built.

Depending on how your organisation is structured, this could be a single small team, or it could be multiple teams all working in different areas of the project.

 

Their Main Role is Gathering Requirements

As mentioned earlier, what a business analyst does is gather the requirements for the project. This is done by speaking to the business representatives that I mentioned earlier.

Why do we need a business analyst to do this? It comes down to two things – communication and experience.

Business analysts are often more comfortable and better able to speak to the business representatives in a way that they understand. They can refrain from going into too much technical detail, and can ask the right questions.

On the other side, they are also able to ask questions of the IT teams with an understanding of how the IT systems work. This is important as many business representatives don’t know how the IT side works, and therefore don’t know what questions to ask and how to interpret the answers.

The other reason business analysts are needed is to do with their experience. They have experience in working on these projects, asking the right questions, preparing the documentation that is needed, and many other aspects of the project.

 

A Business Analyst Also Diagrams the Processes

“What does a business analyst do?” They also diagram the business processes.

As part of their role, they need to understand the process of how something works in an organisation. This is so they can ask the right questions as part of their role, and also so they can better explain it to others.

Skills in Microsoft Visio are very helpful here, as this is a common way to create diagrams for using in documents and sharing within the organisation. The business analyst is responsible for understanding the process and putting it into a diagram in a simple and easy to understand way.

 

Clarify Details With Both IT and Business

The process of gathering requirements from the business users and providing them to IT isn’t the end of their role. What the business analyst does quite often is provide clarification for both teams during the project.

Often, because the software being developed needs to have exact specifications, the IT teams often need clarification on what to do in certain situations, like edge cases and different scenarios. The business analyst needs to work this out by looking at the documentation and speaking to the business representatives, often translating the “IT-speak” into business language.

It also goes the other way. The business representatives will also need to know how a situation could work or how something is planned on working, and the business analyst needs to ask the IT team, and provide a response back to the people who asked for it.

This clarification and translation process is often a big part of what a business analyst does.

 

Summary

So, to summarise what a business analyst does:

  • Gathers requirements
  • Diagrams processes
  • Prepares documents
  • Communicates and clarifies between IT and business teams

I hope this has clarified the role for you and help you to understand what does a business analyst do. Do you have any questions? Share them in the thoughts below!

Career Action Tip: Identify the business analysts on your project based on their roles here.

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

Image courtesy of stockimages / FreeDigitalPhotos.net

]]>
http://www.completeitprofessional.com/what-does-a-business-analyst-do/feed/ 1
How To Understand Normalization in DBMS With Exampleshttp://www.completeitprofessional.com/normalization-in-dbms/ http://www.completeitprofessional.com/normalization-in-dbms/#comments Thu, 15 Jan 2015 11:30:26 +0000 http://www.completeitprofessional.com/?p=3134 ]]> How To Understand Normalization in DBMS With ExamplesNormalization is a concept that can be hard to understand, but all database developers and administrators understand the importance of it. Learn about normalization in DBMS and why it’s used.

What Is Normalization in DBMS?

Normalization is a process used for data modelling, or database creation, where you organise your data so it can be added and updated efficiently, in order for the database to perform at its best. It’s something that database developers do as part of their role.

It can be done on any relational database, where data is stored in tables which are linked to each other. This means that normalization in DBMS (database management systems) can be done in Oracle, Microsoft SQL Server, MySQL, PostgreSQL and any other type.

To perform the normalization process, you start with a rough idea of the data you want to store, and apply certain rules to it in order to get it to a more efficient form.

 

Why Normalize a Database?

So why would anyone want to normalize their database? There are a few reasons we would want to go through this process:

  • Make the database more efficient
  • Prevent the same data from being stored in more than one place
  • Prevent updates being made to some data but not others
  • Ensure the data is accurate
  • Reduce the storage space that a database takes up
  • Ensure the queries on a database run as fast as possible

Normalization in DBMS is done to achieve these points. Without normalization on a database, the data can be slow, incorrect, and messy.

 

What Are The Normal Forms?

The process of normalization involves apply rules to a set of data. Each of these rules transform the data to a certain structure, called a normal form.

There are three main normal forms that you should consider. Actually, there are five in total, but the first three are the most common.

Whenever the first rule is applied, the data is in “first normal form“. Then, the second rule is applied and the data is in “second normal form“. The third rule is then applied and the data is in “third normal form“.

Fourth and fifth normal form are then achieved from their specific rules.

Alright, so there are three main normal forms that we’re going to look at. I’ve written a post on designing a database, but let’s see what is involved in getting to each of the normal forms in more detail.

 

What Is First Normal Form?

First normal form is the way that your data is represented after it has the first rule of normalization applied to it. Normalization in DBMS starts with the first rule being applied – you need to apply the first rule before applying any other rules.

Let’s start with a sample database. In this case, we’re going to use a student and teacher database at a school.

Student (first name, last name, date of birth, address)
Subject (subject name, subject category, student name)
Teacher (first name, last name, date of birth, address, subject taught)
University (university name, university address)

These are the tables, with the fields in each table listed within the brackets. They may look like this within a database:

Student

First NameLast NameDate of BirthAddress
 JohnSmithMarch 1, 1990 3 Main Street, North Boston 56125
 BradJonesAugust 14, 199116 Long Road, South Boston 56128

 

Subject

Subject NameSubject CategoryStudent Name
 Maths 1 Maths John Smith
 English 3 Languages Brad Jones

 

Teacher

First NameLast NameDate of BirthAddressSubject Taught
 JudyPepperJanuary 30, 197221 Arrow Street, South Boston 56128 Maths 2
 MarkTran September 2, 1981 14 Milk Lane, South Boston 56128 Maths 1

 

University

University NameUniversity Address
Excellent 10 Main Road, Boston, 56120
Medium 50 Main Road, Boston, 56120

 

To apply first normal form to our database, we ask ourselves some questions of each table:

  1. Does the combination of all columns make a unique row every single time?
  2. What field can be used to uniquely identify the row?

So, we apply these questions to each table.

 

Student Table:

Does the combination of all columns make a unique row every single time? No, there could be a record where the same student name and date of birth is at the same address (no matter how rare it is, it is still possible).

What field can be used to uniquely identify the row? None of these fields individually or any combination of them.

If there is no unique field, we need to create a new field. This is called a “primary key”, and is a database term for a field that is unique to a single row.

When we create a new primary key, we can call it whatever we like, but it should be obvious and consistently named between tables. I prefer using the ID suffix, so I would call it “student ID

This is our new student table:

Student (student ID, first name, last name, date of birth, address)

 

Subject Table:

Does the combination of all columns make a unique row every single time? No, not for this table. The same subject name and category could have two students with the same name.

What field can be used to uniquely identify the row? None, at this point. Maybe the subject name, but what if the name changes?

Let’s create a new field, similar to what we did earlier – “subject ID

The table now looks like this:

Subject (subject ID, subject name, subject category, student name)

 

Teacher Table:

Does the combination of all columns make a unique row every single time? No. Two teachers with the same name, date of birth, and address, could teach the same subject. It’s very unlikely but it could happen! The process of normalization in DBMS is not to assess how likely things are, it’s to determine if it’s possible.

What field can be used to uniquely identify the row? No fields.

Let’s create a new field and call it “teacher ID“.

The table now looks like this:

Teacher (teacher ID, first name, last name, date of birth, address, subject taught)

 

University Table:

Does the combination of all columns make a unique row every single time? Yes. Even if there are two universities with the same name, they won’t be at the same address

What field can be used to uniquely identify the row? A combination of university name and university address.

This table is different. Do we need to add a new primary key field, even though we have a combination of columns to identify it? We don’t need one, but it comes down to personal opinion. We also don’t want to have a primary key on a column that may change, so I like to create new fields anyway.

Let’s create a new field and call it “university ID

University (university ID, university name, university address)

So, now after applying the first rule for normalization in DBMS, our database looks like this:

Student (student ID, first name, last name, date of birth, address)
Subject (subject ID, subject name, subject category, student name)
Teacher (teacher ID, first name, last name, date of birth, address, subject taught)
University (university ID, university name, university address)

This data is now in first normal form.

 

What Is Second Normal Form?

The rule of second normal form on a database can be described as:

Fulfil the requirements of first normal form
Each non-key attribute must be functionally dependent on the primary key

What does this even mean?

It means that the first normal form rules have been applied. It also means that each field that is not the primary key is determined by that primary key, so it is specific to that record. This is what “functional dependency” means.

Let’s take a look at each of our tables.

 

Student Table:

Student (student ID, first name, last name, date of birth, address)

Are all of these values dependent on and specific to the primary key? Yes, they are. They are all specific to that student.

 

Subject Table:

Subject (subject ID, subject name, subject category, student name)

Are all of these values dependent on and specific to the primary key? Subject Category is not, as it could change or be duplicated. This means there is an “update anomaly”.

What is an update anomaly? It means there could be problems in the data if this record is changed. What happens if a category name changes? It needs to be changed for all records. But, what if a record is missed? It needs to be updated in more than one location. This is where the problem is.

So, how do we fix it? We move the “category” definition to a new table, and make it a single record.

The tables now look like this:

Subject (subject ID, subject name, student name)
Category (category ID, category name)

That’s all well and good, but how do we link them together?

We use a concept called a foreign key. This is basically a type of field in one table that refers to a primary key in another table, to show that the records are linked. It only goes in one table of the relationship here. In this case, we add it to the subject table, as that table needs to know about the category.

Subject (subject ID, category ID, subject name, student name)
Category (category ID, category name)

We need to do the same thing for the student name, because we already have a separate table for students. How do we link student and subject tables?

In this case, a student can have many subjects, and a subject can have many students. This is called a “many to many” relationship, and should not exist in a well-designed database. This is because we can’t put a foreign key on both sides of the relationship.

To fix this, we need to create a table in the middle, which joins them both together.

Student (student ID, first name, last name, date of birth, address)
Subject (subject ID, category ID, subject name)
Student_Subject (student ID, subject ID)

 

Teacher Table:

Teacher (teacher ID, first name, last name, date of birth, address, subject taught)

Are all of these values dependent on and specific to the primary key? All of them are, except for subject taught. This refers to the name in the subject table, but is not the primary key. This is a similar issue to the other tables we have just looked at. We should replace this with a foreign key value.

Teacher (teacher ID, first name, last name, date of birth, address)
Subject (subject ID, category ID, teacher ID, subject name)

 

University Table:

University (university ID, university name, university address)

Are all of these values dependent on and specific to the primary key? Yes, they are.

But, as we need to link the tables together, we need to know how this table fits in with the rest. How does the university table fit in with the others?

Subjects are taught at a university, and a university has many subjects.

Subject (subject ID, category ID, teacher ID, university ID, subject name)
University (university ID, university name, university address)

So, after normalization in DBMS for our example, it looks like this:

Subject (subject ID, category ID, teacher ID, university ID, subject name)
University (university ID, university name, university address)
Teacher (teacher ID, first name, last name, date of birth, address)
Student (student ID, first name, last name, date of birth, address)
Student_Subject (student ID, subject ID)
Category (category ID, category name)

Now, let’s take a look at third normal form.

 

What Is Third Normal Form?

Third normal form is the final stage of the most common normalization process. The rule for this is:

Fulfils the requirements of second normal form
Has no transitive functional dependency

What does this even mean? What is a transitive functional dependency?

It means that every attribute that is not the primary key must depend on the primary key and the primary key only.

For example:

  • Column A determines column B
  • Column B determines column C
  • Therefore, column A determines C

This means that column A determines column B which determines column C. This is a transitive functional dependency, and it should be removed. Column C should be in a separate table.

We need to check if this is the case for any of our tables.

Subject (subject ID, category ID, teacher ID, university ID, subject name)
University (university ID, university name, university address)
Teacher (teacher ID, first name, last name, date of birth, address)
Student (student ID, first name, last name, date of birth, address)
Student_Subject (student ID, subject ID)
Category (category ID, category name)

All of these tables look OK. The names in the tables don’t determine the address, and neither does the date of birth. Subject name and category name doesn’t determine anything else.

What if we split the address fields?

If we decided to split the “address” fields up into separate fields (number street name, suburb, city, state, code, country), then it would be a different situation.

The code (which is a ZIP code or post code), is used to determine the suburb, city and state. That is an identifier. It falls into the A > B > C pattern we looked at earlier. So, it could be split into a separate table:

Code (code, suburb, city, state)

So, that’s how third normal form could look if we had this example.

 

If you’re interested in more information about this, have a look at my Relational Database Design course, which goes into more detail on relational databases, including how to create your own efficient database that follows a good database design, and how to apply normal forms to it, and many other steps.

I hope this explanation has helped you understand what the normal forms are and what normalization in DBMS is. Do you have any questions on this process? Share them in the section below.

Career Action Tip: Understand the difference between the three normal forms.

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

Image courtesy of Stuart Miles / FreeDigitalPhotos.net

]]>
http://www.completeitprofessional.com/normalization-in-dbms/feed/ 0
Top 100 Blogs for Software Developers in 2015http://www.completeitprofessional.com/top-100-blogs-for-software-developers/ http://www.completeitprofessional.com/top-100-blogs-for-software-developers/#comments Tue, 13 Jan 2015 11:30:53 +0000 http://www.completeitprofessional.com/?p=3157 ]]> Top 100 Blogs for Software Developers in 2015It’s the start of a brand new year, so I’ve decided to compile a list of the top 100 blogs that I think software developers can get some benefit from in 2015.

What’s In This List?

I’ve created this list of 100 of the best blogs for software developers, as I’m always reading other blogs in the industry and thought that the good ones should be shared. As a blog/website owner myself, I thought that my readers could benefit from knowing about some of the other blogs out there. They contain topics on either programming, career advice for software developers, or general career advice.

This is not an ordered list, so #1 is not necessarily better than #10.

Also, the criteria I’ve used for these blogs are:

  • Quality of posts (the content is good quality)
  • Recency of posts (they are still posting at the moment)

So, let’s jump right in to the list!

 

Top 100 Blogs for Software Developers for 2015

 

NameSiteTwitter
Inside Tech (Monster)http://insidetech.monster.com/benefits@monster
Spiceworkshttp://community.spiceworks.com/@spiceworks
Dicehttp://news.dice.com@dicetechjobs
Atlassian Blog (JIRA)http://blogs.atlassian.com/@atlassian
Udacityhttp://blog.udacity.com/@udacity
CIOhttp://www.cio.com/topic/3123/Careers@cioonline
IT Worldhttp://www.itworld.com@itworld
Lifehacker AU – IT Careerhttp://www.lifehacker.com.au/it-pro/it-career/@lifehackerau
Scott Hanselmanhttp://www.hanselman.com/@shanselman
Code Guruhttp://www.codeguru.com/@codeguru
Careerealismhttp://www.careerealism.com/@careerealism
Coding Horrorhttp://blog.codinghorror.com/@codinghorror
Undercover Recruiterhttp://theundercoverrecruiter.com/@undercoverrec
Tom’s IT Prohttp://www.tomsitpro.com@tomsitpro
CITE Worldhttp://www.citeworld.com/@citeworld
Software Testing Helphttp://www.softwaretestinghelp.com@vijayshinde
DevXhttp://www.devx.com/@devx_com
The Brazen Careeristhttp://blog.brazencareerist.com/@brazencareerist
IT Job Boardhttp://blog.theitjobboard.co.uk/@theitjobboard
Tech Careershttp://www.techcareers.com/articles/c-information-technology-articles.html@beyond_com
Work Awesomehttp://workawesome.com/@workawesome
The Work Buzzhttp://www.theworkbuzz.com/career-tips/@careerbuilder
IT World Canadahttp://www.itworldcanada.com/blogs/@itworldca
Simple Programmerhttp://simpleprogrammer.com/@jsonmez
CIO Insighthttp://www.cioinsight.com/c/s/Careers/@cioinsight
Bridging the Gaphttp://www.bridging-the-gap.com/None
Less Than Dothttp://lessthandot.com/@lessthandot/
Blog Notionshttp://career.blognotions.com/@blognotions
Career Rocketeerhttp://careerrocketeer.com@careerrocketeer
IT Career Finderhttp://www.itcareerfinder.com/brain-food/blog.html@itcareerfinder
Qareahttp://www.blog.qarea.com/@qarea
Web Maister Prohttp://www.webmaisterpro.com@webmaisterpro
Software Testing Classhttp://www.softwaretestingclass.com@mytestingclass
AVDI Devbloghttp://devblog.avdi.org/@avdi
Tim Anderson’s ITWritinghttp://www.itwriting.com/blog/@timanderson
Lindsey Pollakhttp://www.lindseypollak.com/blog/@lindseypollak
Software Specialistshttp://www.softwarespecialists.com/blog/@swspecialists
Randall Deggeshttp://rdegges.com@rdegges
Online Career Tipshttp://onlinecareertips.com@careertipsnow
Project Managerhttp://projectmanager.com.au@projectmgr_au
Employment Metrixhttp://www.employmentmetrix.com/@beyond_com
Edge Linkhttp://www.edgelink.com/blog/@edgelink
IT Career Toolkithttp://www.itcareertoolkit.com/@matthewmoran
Technoraclehttp://technoracle.blogspot.com.au/@duanenickull
Software Development Todayhttp://softwaredevelopmenttoday.blogspot.com.au/@duarte_vasco
Avid Careeristhttp://www.avidcareerist.com/@avidcareerist
The Branding Musehttp://www.thebrandingmuse.com/@emmeliedelacruz
Brooklyn Resume Studiohttp://www.bklynresumestudio.com/brooklyn-resume-studio-career-and-branding-blog/@danaleavy
Bulls Eye Recruitinghttp://bullseyerecruiting.net/@willrecruits
CareerBoost Bloghttp://www.spherion.com/careerboost-blog/@spherion
Career Musingshttp://www.daisywright.com/@careertips2go
Career Pivothttp://careerpivot.com/blog/@careerpivot
Careers Done Writehttp://careersdonewrite.com/blog/@debrawheatman
Career Sherpahttp://careersherpa.net/@careersherpa
Career Upshifthttp://www.careerupshift.com/None
The Chief Happiness Officerhttp://positivesharing.com/@alexkjerulf
Come Recommendedhttp://comerecommended.com/blog/@comerecommended
Corn On The Jobhttp://www.cornonthejob.com/@cornonthejob
The Daily Musehttp://www.thedailymuse.com/@dailymuse
Endless Job Offershttp://www.endlessjoboffers.com/@jmmuscarello
Glassdoor Bloghttp://www.glassdoor.com/blog/@glassdoor
Harrison Barneshttp://www.aharrisonbarnes.com/@aharrisonbarnes
Idealist Careershttp://idealistcareers.org/@idealistcareers
InterviewIQhttp://interviewiq.com.au/@interviewiq
Interview Coachhttp://www.interview-coach.co.uk/blog/@margaretbuj
Introvert Whispererhttp://introvertwhisperer.com/@introvertleader
JibberJobber Bloghttp://www.jibberjobber.com/blog@jasonalba
Keppie Careershttp://www.keppiecareers.com/blog/@keppie_careers
Knock ‘Em Dead Bloghttps://knockemdead.com/blog/@knockemdead
MyCareerTopiahttp://www.mycareertopia.com/blog/@mycareertopia
Monster Bloghttp://www.monster.com/blog/@monster
The Office Blendhttp://marlagottschalk.wordpress.com/@mrgottschalk
Pathfinder Careershttp://pathfindercareers.com/blog/@dawnrasmussen
Penelope Trunkhttp://blog.penelopetrunk.com/@penelopetrunk
Personal Branding Bloghttp://www.personalbrandingblog.com@danschawbel
The Personal Branding Bloghttp://www.thepersonalbrandingblog.com/@reachbranding
Position Ignitionhttp://www.positionignition.com/blog/@posignition
Resume to Interviewshttp://resumetointerviews.com/blog/@res2interviews
Resume to Referral Bloghttp://www.resumetoreferral.com/blog@teenarose
SparkHire Job Seekerhttp://blog.sparkhire.com/@sparkhire
TalentCulturehttp://www.talentculture.com/@talentculture
TheLadders Career Bloghttp://info.theladders.com/your-job-search/topic/ask-amanda@theladders
Top Margin Bloghttp://www.topmargin.com/blog@gaylehoward
The Voice of Jobseekershttp://thevoiceofjobseekers.com/@markadyson
Water Cooler Wisdomhttp://blog.alexandralevit.com/@alevit
Work Coach Caféhttp://www.workcoachcafe.com/@workcoachcafe
Career Blisshttp://www.careerbliss.com/tips-trends/@careerbliss
A Better Interviewhttp://www.abetterinterview.com/@betterinterview
Experiencehttp://www.experience.com/entry-level-jobs/@symplicitycorp
First Jobhttps://www.firstjob.com/blog/@firstjobtweets
Profession Directionhttp://www.professiondirection.net/blog/@kristinsjohnson
The Career Artisanhttp://maryelizabethbradford.com/@careerartisan
Coding for Interviewshttp://codingforinterviews.com/blog/@interviewcoding
Paul Graham’s Essayshttp://www.paulgraham.com/articles.html@paulg
Ajaxianhttp://ajaxian.com/@ajaxian
Rands In Responsehttp://randsinrepose.com/@rands
Martin Fowlerhttp://martinfowler.com/@martinfowler
Tower Bloghttp://www.git-tower.com/blog/@gittower
A List Aparthttp://alistapart.com/blog@alistapart
Daily JShttp://dailyjs.com/@dailyjs

 

 

Do You Run One Of These Sites?

Do you own or run one of the sites in this list? Add this badge to your website to notify your readers that you are featured on this list!

citp_top_100

Or, you can copy and paste the following code directly on to your website:

Embed Code (Thumbnail):

<a href="http://www.completeitprofessional.com/top-100-blogs-for-software-developers"><img title="Complete IT Professional - Top 100 Blogs for Software Developers in 2015" src="http://www.completeitprofessional.com/wp-content/uploads/2015/01/citp_top_100-150x150.jpg" alt="Complete IT Professional - Top 100 Blogs for Software Developers in 2015" width="150" height="150" /></a>

Embed Code (Full Size):

 <a href="http://www.completeitprofessional.com/top-100-blogs-for-software-developers"><img title="Complete IT Professional - Top 100 Blogs for Software Developers in 2015" src="http://www.completeitprofessional.com/wp-content/uploads/2015/01/citp_top_1001.jpg" alt="Complete IT Professional - Top 100 Blogs for Software Developers in 2015" width="150" height="150" /></a>

Hopefully this list gives you a good indication of some blogs to follow for 2015. Have I missed out on any good blogs? Share them in the comments section below!

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

]]>
http://www.completeitprofessional.com/top-100-blogs-for-software-developers/feed/ 0
5 Steps For How to Become a Software Testerhttp://www.completeitprofessional.com/how-to-become-a-software-tester/ http://www.completeitprofessional.com/how-to-become-a-software-tester/#comments Mon, 12 Jan 2015 11:30:08 +0000 http://www.completeitprofessional.com/?p=3127 ]]> 5 Steps For How to Become a Software TesterA career as a software tester can be rewarding and is a big part of a software development project. Learn how to become a software tester in this article.

What Is A Software Tester?

First of all, let’s take a look at what a software tester actually is.

A software tester is someone on a project team that performs a series of tests on a piece of software with the aim of identifying and removing all defects. It is usually done after the software is developed and before it is released.

The testing includes a wide range of tests, as I’ve detailed in this post on testing types, such as system testing and performance testing. A software tester performs these tests either manually, or using a set of tools to do it automatically.

Now that we’ve covered what a software tester is, let’s look at the steps for how to become a software tester.

 

1 – Learn How To Program

Programming is the first step in becoming a software tester. They perform tests on software code, and they are more effective if they know what the code is and what it means.

Having commercial experience as a programmer and knowing programming languages and fundamentals are two different things. You don’t need to have any programming experience at a company to become a software tester, but you do need to know a few things about programming:

  • Programming concepts and fundamentals (algorithms, object oriented programming, basics of architecture, etc.)
  • How to read code in various languages
  • A high level understanding of several programming languages

The most important one here is the fundamentals of programming. Programming languages come and go, but if you understand the fundamentals, they can be applied to any language you’re able to learn.

 

2 – Learn About Software Testing

The next step on how to become a software tester is to learn about software testing in general. This might be something that you learn as part of a degree, as many software testers have a degree in Computer Science or a related field.

Learning about software testing involves:

  • The different types of testing
  • What test plans are and what they are used for
  • How to run tests and determine results
  • Creating test reports

If you’re a software developer, then you might have learnt about this at a high level, but as a software tester, you need to know it more intimately.

As mentioned, this is something that you usually learn as part of your degree. If not, there are many books and courses out there on software testing.

 

3 – Learn Automated Testing

The next step to how to become a software tester is to learn the concepts of automated testing.

Automated testing is where you take the manual tests that you have been running originally, and put them into a tool to run them automatically. This is effective where the same tests are run quite often, or if a lot of similar tests need to be run.

One of the most popular tools for running this is HP Quick Test Professional, otherwise known as QTP. As of late 2012, this has been renamed to Unified Functional Testing (and has been combined with HP Service Test, which tests APIs). So, if you see the terms QTP or ST around, then the latest version of this tool is called UFT.

If you don’t have access to this yourself, it may also be something you learn as part of your degree. If not, then it’s something you can learn on the job. HP does offer a 60-day trial on their website, but I haven’t used it so I’m not sure how well it works.

If you’re not able to get some hands-on experience with HP UFT, then that’s still OK. The main point is to understand the concepts of automated testing, and you may be able to learn the actual tools on the job.

Another popular automation testing tool is Selenium, which you may be able to get a copy of and run your own tests on your own projects if you need.

 

4 – Learn Performance Testing

Performance testing is another big area of becoming a software tester. It’s also an area where you should learn the concepts of it, but not necessarily the tools.

One of the most popular testing tools is another tool by HP, called LoadRunner. If you’re not able to use it while studying or get any hands-on experience, you can get a trial of it from the HP website. At the time of writing, they offer a trial version that you can use for a certain number of virtual users.

 

5 – Apply for Software Tester Jobs

With the knowledge you have now, you should be able to apply for a job as a software tester. You have:

  • Basic programming experience
  • An understanding of programming concepts and fundamentals
  • Knowledge of how to perform software tests
  • Knowledge of testing concepts such as automated testing and performance testing

You should now be able to apply for jobs as a software tester. As part of this, you’ll need to make sure your resume is up to date and that you’re prepared for any interviews that you’ll get.

Once you get the job, congratulations! You’re now employed as a software tester!

 

How To Become a Software Tester

So, in summary, to become a software tester, you need to:

  1. Learn how to program
  2. Learn about software testing
  3. Learn automated testing
  4. Learn performance testing
  5. Apply for software tester jobs

 

Well, I hope this article has explained the process to you for how to become a software tester. Testing is an important role in the industry. Do you have any questions about this? Share them in the comments section below.

Career Action Tip: Work out which steps of these you have done, and determine what the next action is for you to become a software tester from these steps (such as learning about performance testing).

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

Image courtesy of Stuart Miles / FreeDigitalPhotos.net

]]>
http://www.completeitprofessional.com/how-to-become-a-software-tester/feed/ 0
Oracle TO_CHAR Function Explained with Exampleshttp://www.completeitprofessional.com/oracle-to_char/ http://www.completeitprofessional.com/oracle-to_char/#comments Thu, 08 Jan 2015 11:30:09 +0000 http://www.completeitprofessional.com/?p=3105 ]]> Oracle FunctionThe Oracle TO_CHAR function is one of the most common and useful string manipulation functions in Oracle. In this article and video, I’ll explain how to use the TO_CHAR function.

Purpose of the Oracle TO_CHAR Function

The purpose of the Oracle TO_CHAR function is to convert either a number or a date value to a string value. It works similar to the TO_DATE function and TO_NUMBER function. This function takes either a number or a date as an input, and converts it to a string value to be displayed or processed accordingly. The converted data is a VARCHAR2 data type.

The input value can be a numeric type of NUMBER, BINARY_FLOAT, or BINARY_DOUBLE, or it can be a date type of DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, or TIMESTAMP WITH LOCAL TIME ZONE.

 

Syntax

The syntax of the Oracle TO_CHAR function is:

TO_CHAR( input_value, [format_mask], [nls_parameter] )

 

Parameters

The parameters of the TO_CHAR function are:

  • input_value (mandatory): This is the value to convert into a String type. This is the main input to the function, and this value can either be a DATE type or any of the Number types.
  • format_mask (optional): This is the format that the input_value should be displayed as. If this is omitted, the function will use a default format, as mentioned below.
  • nls_parameter (optional): This value is used to determine how the output value is displayed.

 

If the format_mask parameter is omitted, then:

  • DATE values are converted to values in the default date format.
  • TIMESTAMP and TIMESTAMP WITH LOCAL TIME ZONE values are converted to values in the default timestamp format.
  • TIMESTAMP WITH TIME ZONE values are converted to values in the default timestamp with time zone format.
  • Numeric values are converted to a string value that is long enough to hold its significant digits.

 

Format Mask

The format mask is helpful as it allows you to specify what format the input_value should be converted to.

To make it clear, we need to specify some values for the format mask. The possible values are:

Year

ParameterExplanation
YEARYear, spelled out in full words
YYYY4-digit year
YYYLast 3 digits of year
YYLast 2 digits of year
YLast digit of year
IYYLast 3 digits of ISO year
IYLast 2 digits of ISO year
ILast digit of ISO year
IYYY4-digit year, which is based on the ISO standard
RRRRThis format accepts a 2-digit year, and returns a 4-digit year. If the provided value is between 0 and 49, it will return a year greater than or equal to 2000. If the provided value is between 50 and 99, it will return a year less than 2000

 

Month

ParameterExplanation
QQuarter of year, from 1 to 4. JAN to MAR = 1
MMMonth, from 01 to 12. JAN = 01
MONAbbreviated name of month.
MONTHName of month, padded with blanks to length of 9 characters.
RMRoman numeral month, from I to XII. JAN = I.

 

Week

ParameterExplanation
WWWeek of year, from 1 to 53. Week 1 starts on the first day of the year, and continues to the seventh day of the year.
WWeek of month, from 1 to 5. Week 1 starts on the first day of the month and ends on the seventh.
IWWeek of year, from 1 to 52 or 1 to 53, based on the ISO standard.

 

Day

ParameterExplanation
DDay of week, from 1 to 7.
DAYName of day.
DDDay of month, from 1 to 31.
DDDDay of year, from 1 to 366.
DYAbbreviated name of day.
JJulian day, which is the number of days since January 1, 4712 BC.

 

Time

ParameterExplanation
HHHour of day, from 1 to 12.
HH12Hour of day, from 1 to 12.
HH24Hour of day, from 0 to 23.
MIMinute, from 0 to 59
SSSecond, from 0 to 59
SSSSSSeconds past midnight, from 0 to 86399.
FFFractional seconds. This uses a value from 1 to 9 after FF, to indicate the number of digits in the fractional seconds (e.g. FF7)

 

Indicators

ParameterExplanation
AM, A.M., PM, or P.M.Meridian indicator
AD or A.DAD indicator
BC or B.C.BC indicator
TZDDaylight savings information
TZHTime zone hour.
TZMTime zone minute.
TZRTime zone region.

 

The format mask also means that punctuation and quoted text is reproduced in the result. So, if you add an underscore (_) or a dash (-), for example, it is shown in the output.

 

NLS_DATE_LANGUAGE Explanation

The NLS_DATE_LANGUAGE can be specified in this function to determine how the date is shown. As you may know, different regions show the same date in different ways:

  • China: yyyy-mm-dd
  • UK: dd/mm/yyyy
  • US: mm/dd/yyyy

To use the NLS_DATE_LANGUAGE as part of this function, you can use any language listed under Table A-1 on the Oracle Language page. Some examples are American, English, French, German, and Swedish.

 

Examples of the TO_CHAR Function

Here are some examples of the TO_CHAR function. I find that examples are the best way for me to learn about code, even with the explanation above.

 

Example 1

This example converts the number 12345.67 into the format specified in the second parameter.

SELECT TO_CHAR(12345.67, '99999.9') FROM DUAL;

Result:

12345.7

As you can see, the result only has one decimal place. This is because the output format only had one decimal place, and the .67 was rounded up to .7.

 

Example 2

This next example converts the number 12345 into a string with zeroes in it.

SELECT TO_CHAR(12345, '00000000') FROM DUAL;

Result:

00012345

This is the result because the format mask of 0 means that there are leading zeroes added (to the left of the number) when it is converted.

 

Example 3

This example converts the current date (SYSDATE) into a string, using a format of 4 digit year, then an underscore, then 2 digit month, underscore, then two digit day.

SELECT TO_CHAR(SYSDATE, 'YYYY_MM_DD') FROM DUAL;

Result:

2014_12_27

 

Example 4

This example converts the SYSDATE value again, but uses the format mask of “Month” which is the full month name.

SELECT TO_CHAR(SYSDATE, 'Month') FROM DUAL;

Result:

December

This is because the Month of SYSDATE is December, and that is what gets converted.

 

Similar Functions

Some functions which are similar to the TO_CHAR function are:

  • TO_DATE – converts a string value to a DATE type.
  • TO_NUMBER – converts a value to a NUMBER type
  • CAST – used for many types, including dates

 

Video

For an example of this function, watch the video here.

 

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

Image courtesy of digitalart / FreeDigitalPhotos.net

]]>
http://www.completeitprofessional.com/oracle-to_char/feed/ 0
What Is A Full Stack Developer, And What Do They Need To Know?http://www.completeitprofessional.com/full-stack-developer/ http://www.completeitprofessional.com/full-stack-developer/#comments Mon, 05 Jan 2015 11:30:58 +0000 http://www.completeitprofessional.com/?p=3080 ]]> What Is A Full Stack Developer, And What Do They Need To KnowThe term “full stack developer” is use quite regularly in the industry, whether it’s referring to job advertisements or when developers are talking about their own skills. This term has changed quite a bit in the IT industry, so let’s take a look at what it is, what you need to know, and how to become a full stack developer.

What Is A Full Stack Developer?

Let’s start by looking at the concept of a stack. A stack, when referring to software development, is all of the different layers and technologies that are used in developing software. These layers include:

  • Client-side code
  • Web browser
  • Server-side code
  • Web server
  • Database
  • Operating system

A stack is a combination of each of these layers. For example, back when I started development there was a popular product called WAMP (or LAMP, which was the Linux version). WAMP stood for Windows, Apache MySQL and PHP. This covered several layers in the stack, and was popular for us students.

Of course, there are many other stacks that are available. If someone wanted to learn ASP.NET, it would be treated as a different stack, and so would Java and probably C#.

So, back to the original question, what is a full stack developer?

A full stack developer is someone who is experienced with all roles and technologies across a particular stack. This mainly includes front-end development and back-end development.

How is this different from a normal developer? How is it different from someone who can develop web sites in PHP and can understand SQL?

Before we get into that, and the kinds of technologies that a full stack developer can know, we should look at how this term came to be.

 

History of the Full Stack Developer

An article on TechCrunch mentions a brief history of web development, which can be summarised as:

  • 1980s-1990s: Client/server computing was used, with many developers having different roles in the process
  • 1990s-2000s: Internet technology meant that the client/server architecture evolved and became more mainstream. New technologies were created, and each of them needed a different specialist.
  • Mid 2000s: More technologies and widespread use of websites and applications meant creating new software was expensive. There were many specialists involved in creating something.
  • Late 2000s: Newer technologies became easier to use, and meant that a single person could develop a website themselves.

What this means, is that at some point the technologies became too complicated for a single person to be able to work with. But, at another point, the shift was made, and now it is possible for a person to be able to be not only competent, but experienced, in many technologies that make up a stack.

This is where the “full stack developer” term has evolved to.

While the article on TechCrunch does confuse the term “cross platform” with “full stack”, it does provide a good history of the technologies involved.

So, what are these technologies? What does a full stack developer need to know to be able to call themselves a full stack developer? Let’s find out.

 

What Does A Full Stack Developer Need To Know?

A developer needs to know many things to be considered a full stack developer. Let’s break it down by the layers in the stack as I mentioned earlier.

 

Operating System

The developer would need to know how to develop on the operating system being used. They don’t need to be a master of it, and many of the things they need to know would come under the “web server” category, but at the very least they should know how the operating system is setup and how to write code that can run on it.

However, given that many websites run on Linux (rather than, say, Windows), it’s probably not the most important thing to know.

The specific skills are:

  • Linux/UNIX

 

Database

There are many things that a full stack developer should know when it comes to the database layer:

  • Data Modelling: they should know how to create a data model for a database that is efficient, scalable and error-free.
  • Administration: they should be able to administer the database, which includes user access, monitoring, backups and maintenance.
  • Writing queries: this could go without saying, but full stack developers need to be able to write queries to read, write, update, and delete data in an efficient and effective way

The technologies that they may be experienced in are:

  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server

 

Web Server

A full stack developer should know a few things at the web server layer:

  • Setting up: the basics of how to set up the web server and how it can be configured
  • Features and issues: they should also be aware of the different features of the web server, and any issues or problems with it

The related technologies are:

  • Apache
  • Nginx

 

Server-Side Code

This is the big one, and probably the area where a lot of developers have focused on. Server-side code skills can be broken down into:

  • Writing efficient and effective code: being able to write code in the language of choice that gets the job done, is efficient, and easy to maintain
  • Read and debug existing code: whether the developer has written it or not, they should be able to read code and able to find bugs and other issues in it
  • APIs and frameworks: the full stack developer should be able to use existing APIs and frameworks to develop their application

The technologies for this area are:

  • PHP
  • NodeJS
  • Ruby
  • Java
  • .NET

 

Web Browser

While this isn’t an area that a developer writes code in, it’s something that they should be knowledgeable in.

  • Cross-browser testing: they should be able to write applications that work correctly and display correctly in all major browsers (which can be tough if you’ve tried to do this before!)
  • Knowledge of browser behaviour: they should know how browsers display certain things and which types of code to avoid

These technologies are related to the most common browsers:

  • Chrome
  • Firefox
  • Internet Explorer
  • Safari

 

Client-Side Code

Full stack developers also need to know about client-side code, or front-end development. This is the other major area of development.

  • Features of each language: front-end languages have different features for accomplishing different things, and the developer should know and understand them all
  • Using best practices: due to the number of languages and technologies involved, a full stack developer shouldn’t get stuck on using one method for developing everything, and should be able to evolve as the technology changes
  • Write efficient and effective code: they should also be able to write code in these languages that is efficient and easy to maintain.

The related technologies are:

  • HTML
  • CSS
  • JavaScript (jQuery, AngularJS, etc)
  • AJAX
  • JSON
  • XML

 

Other areas

There are several other areas of software development that a full stack developer should be experienced in.

  • Design: the developer should know the basics of how to design a software application or website, and how to convert it into working code for a prototype or a working version.
  • User interface and user experience: skills in developing a user interface that follows standards, and considering the entire user experience for the product, is a skill these full stack developers may find useful.
  • Unit and system testing: testing is an important part of developing code, and they should be familiar with testing processes, best practices, and the tools involved. This includes both unit testing and system testing.
  • Mobile/responsive: the full stack developer should be able to develop for mobile devices and use responsive design, with the increase in mobile usage on websites and other applications.

This seems like quite a long list of technologies and skills for someone to learn to be classed as a full stack developer. Sure, it is a long list, which is why it’s not really for junior developers. It takes a fair bit of experience to know all of these, which is more than what they teach you in the classroom.

Why would someone become a full stack developer then?

 

Why Should I Become A Full Stack Developer?

We’ve taken a look at the big list of things a full stack developer should know. It seems pretty daunting. There must be an upside, right? Otherwise why would anyone even look at this role?

Yes, there are a few advantages to become a full stack developer:

  • Understand the full scope of what needs to be done. Your role will be involved in the different layers of developing the solution, so you will understand what needs to be done at each layer, which can help improve the overall quality of the solution.
  • Design and code the entire project yourself. It can be satisfying to design and code something all by yourself, from start to finish. This is something a full stack developer is capable of.
  • Communicate with many other teams, especially in an Agile environment. With the increase in Agile project teams, you’ll be able to communicate better with them, as you understand the work that is required. You can also work better with DevOps teams as there is more understanding and consideration there too.
  • Start your own web development business. As you know how to do the design work, development work, and all other related steps, you have more of the knowledge needed to start your own web development business. Someone who can only design, would need developers, and someone who can only write code would need other developers and designers to make this work.

 

Disadvantages of Being a Full Stack Developer

Alright, so we’ve had a look at some of the positives of this role. Now, it’s only fair that we take a look at some of the disadvantages of it.

  • Keep up with the latest technologies and trends. As a full stack developer, you need to be able to keep up with the latest technologies, whether this is developments in the technologies you know, or new technologies or frameworks that are being released.
  • A lot of experience needed. You’ll need to have quite a bit of experience to be capable in this role. It isn’t something you can come right out of college or university and start doing.
  • Open mind towards new technologies. This may not be such a disadvantage, but if you’re the kind of person that likes to stick to a certain way of doing things, then this kind of role might be tough.

 

How Much Can I Earn?

According to Indeed.com, the average salary of a full stack developer is $102,000

They seem to range between $90,000 and $110,000, depending on the technology used, such as Java or PHP. It would also vary between locations, because places such as NYC or SF would pay a lot more.

Given the amount of skills that are needed, and the experience level, it seems like a fair number.

 

How Do I Become a Full Stack Developer?

Are you interested in becoming a full stack developer? Did you get excited when reading about what all the skills are and the kind of work that you’ll be doing?

Fantastic. The world needs more full stack developers.

First of all, these kind of developers are most common in smaller companies and startups. This is because they don’t have the budget to higher a single person for each technology, so it’s up to the one person to learn all of the required skills. So, if you’re interested in becoming a full stack developer, look for jobs in smaller companies.

You would probably need to be proficient in one area of development first. And by proficient, I mean good enough to get a job just doing that. You could be a web developer, database developer, or front end developer and have experience in certain technologies. This would be enough to get you a job in that role at a small company.

They would hopefully have a need for you to expand your skills, and you would need to be willing to do this. With some time on the job doing your main role, and learning the other skills that you don’t know, a role as a full stack developer would come in time.

So, in summary, you need to start with a skill you already know (preferable development), and work on learning and improving all of the other related skills at a job at a small company or startup.

 

Well, I hope this article has cleared up any confusion you had about the role of a full stack developer. Are you interested in becoming one? What has your experience been with others in this role? Share your comments in the section below.

Career Action Tip: Assess your skill level on a scale of 1 to 10 on each of the focus areas above, and determine which one is able to get you a job as a developer, if you’re interested in this career path.

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

Image courtesy of Stuart Miles / FreeDigitalPhotos.net

]]>
http://www.completeitprofessional.com/full-stack-developer/feed/ 0
How to Install and Set Up Oracle Database on Your PChttp://www.completeitprofessional.com/how-to-install-and-set-up-oracle-database/ http://www.completeitprofessional.com/how-to-install-and-set-up-oracle-database/#comments Fri, 02 Jan 2015 11:30:21 +0000 http://www.completeitprofessional.com/?p=3119 ]]> How To Download Oracle SQL DeveloperIn this post, I’ll explain how to download, install, and set up an Oracle Database on your own computer.

Requirements to Install and Set Up Oracle Database

To be able to run the Oracle database on your computer, you’ll need:

  • Internet access to download the required files (or the files downloaded to be used offline)
  • Windows or Linux operating system. At the moment, there is no way to install Oracle on a Mac, unless you use a virtual machine such as Parallels.

 

Step 1 – Download Oracle Client

The steps to download Oracle Database 11g Express Edition are:

  1. Visit the Oracle website at oracle.com.
  2. Go to the Downloads menu at the top.
  3. Select Oracle Database 11g Express Edition.
  4. Read and accept the license agreement
  5. Click on the link to the relevant version (Windows or Linux).
  6. Enter your Oracle account details (or sign up for one if you don’t have one already)
  7. Select the save location and press Save.

You can view the video here:

 

Step 2 – Install Oracle Client

To install the Oracle database client, follow these steps:

  • Extract the file that was downloaded
  • Run the “setup.exe” file
  • Click Next on the Welcome screen
  • Accept the terms and conditions
  • Select your installation directory
  • Enter a password to use for both the SYS and SYSTEM database accounts. You will need this for logging in to the database later.
  • Click Install after reading the summary.

You can view the video here:

 

Step 3 – Download Java JDK

The steps to download the Java JDK are:

  1. Visit the Oracle website at oracle.com.
  2. Hover over the top menu and click on Downloads
  3. Click on Java for Developers
  4. Click on the Java Platform JDK. The JDK download page is shown.
  5. Read and accept the license agreement.
  6. Scroll down to find the installation files for the JDK for various operating systemsand file types.
  7. Choose your preferred file type and download.
  8. Save the file in your preferred destination.

You should now be able to install the JDK on your computer.

PS: I’m aware that the J in JDK stands for Java, and it’s a bit strange calling it the Java JDK as that actually means “Java Java Development Kit”, but it’s a bit easier for some to recognise if it’s mentioned as Java JDK.

You can view the video here:

 

Step 4 – Install Java JDK

The steps for how to install Java JDK are:

  1. Run the file downloaded in the previous step (e.g. “jdk-7u25-windows-x64.exe”).
  2. Click Run if a security warning appears.
  3. Click Next on the Welcome screen
  4. Click Next on the Features screen (the default features are OK). The installation directory can remain at the default value.
  5. Wait for the JDK to be installed (approx 30-40 seconds).
  6. Accept the default installation for the Java Runtime Environment (JRE) and click Next.
  7. Wait for the JRE to be installed.
  8. Click Close.

Java JDK should now be installed on your computer.

You can view the video here:

 

Step 5 – Download Oracle SQL Developer

To download Oracle SQL Developer, which lets you run queries on the database, follow these steps:

  1. Go to oracle.com
  2. Select the Downloads tab, then under Developer Tools, click on SQL Developer.
  3. Acceptthe license agreement.
  4. Select a download linkfor your operating system.
  5. Save the fileto a location on your computer
  6. Browseto the saved location
  7. Extractthe ZIP file using a compression program (WinZIP, WinRAR, 7ZIP, etc)
  8. Closethe ZIP file.
  9. Openthe extracted folder.

The Oracle SQL Developer application can be run by opening sqldeveloper.exe.

You can view the video here:

 

Step 6 – Set Up Oracle SQL Developer

To set up Oracle SQL Developer for use, follow these steps:

  • Open the “sqldeveloper.exe” file
  • Click on Browse for the java.exe pathname
  • Browse to the location that the Java JDK was installed to (which may be C:\Program Files\Java\jdk1.7.0_25\bin)
  • Open Java.exe
  • Click OK
  • Click Yes if a warning for a certified version appears. I haven’t noticed any issues with this.
  • Click Yes if another message for version incompatibility appears.
  • Select the file types to associate with SQL Developer. I’ve selected all of them.

You can view the video here:

 

Step 7 – Create Connection in Oracle SQL Developer

To create a connection to your database from Oracle SQL Developer so you can run queries, follow these steps:

  • Click on the green + icon in the top left
  • Enter whatever your like as the connection name. I’ve used “Local”. This is the value that is displaed for this connection iwthin the application.
  • For username, use SYSTEM
  • For password, enter the same password as you did during the installation
  • Leave all of the other fields the same
  • Click on Test. The status should show “Status: Success”, which means the details are correct
  • Click Connect.

The connection will be created and an connected to.

You can view the video here:

 

Well I hope this has given you some guidance on how to download, install, and set up an Oracle database on your computer. If you have any questions, let me know!

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!
]]>
http://www.completeitprofessional.com/how-to-install-and-set-up-oracle-database/feed/ 0