A brief guide to tech terms
Acceptance testing: this is the idea of testing the software system from the consumer’s point of view. The consumer doesn’t care exactly how the software works, it just cares that it behaves in line with expectations.
Agile methodology : it is a philosophy, a way of creating software that emphasises individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation and response to change over following a plan
Array : a way to hold data. Arrays hold an ordered list of values, which can be any type of object, such as numbers, strings or even other arrays. Arrays are demarcated with square brackets, and a comma between each element. Any element within that list can be accessed by referencing its index. The first element in the array is at index 0.
Back-end development: Developing the functionality of the app/website that the user doesn’t see. It is the brain and logic behind the programme.
Boolean : either a true or false value
Classes : these are used to defined clusters of behaviour. If I were describe a software system such as an airport control system, the nouns in my description would typically form the basis of the classes. For example, I would have an airport class and an airplane class. Each class describes the ideal behaviour of an object. You can create individual instances of the class which possess that behaviour. If human were a class, then I, Hannah, would be an instance of the class human.
Cucumber : an acceptance testing framework, that is written in language much like English. It uses the structure of ‘given, when, then’, allowing clients to specify to the developers exactly how they want the user to experience the software. For example, if we were testing that a customer can add items to their shopping basket when on a particular website, the test would read something like ‘Given that I am on the homepage, when I click on the button ‘Add Item to Basket’, then I should have one item in my basket.’
Extreme programming: emphasises responsiveness to customer requirements, pair-programming and frequent releases of software in short development cycles
Front-end development: Development of the parts of apps/websites that customers see and interact with. Front-end languages include HTML for structuring, CSS for styling and JavaScript and JQuery for interactivity.
Gems : a Ruby programme that someone else has written and packaged so that anyone can download and use it in their own programmes. There is a gem for literally everything!
Fixnum : an integer
Floats : a number with a decimal point
Github : a version control system. Which means absolutely nothing if you are not a programmer. It is far more complex than this, but I find it easiest to think of as being like Dropbox for code. I can upload the code from my local machine to the Github website, and then access it from anywhere. However, I won’t just upload a finished code script. I will usually upload it at frequent intervals, for example when I have completed a certain feature. I can then access all previous versions of my code. All my code on Github is open-source, meaning anyone else can download it to their local machine and work on it/edit it themselves. Github has several brilliant features that allow multiple people to work on one code base, and is great when collaborating on projects.
Hashes : hashes are like arrays in that they are a way to store data and contain multiple elements, but the elements are grouped into key-value pairs. This is best illustrated with an example. If I created a hash to store pets, my key could be the type of pet e.g. a cat or dog, and the value could be the name of my pet. pets = {cat: ‘Fluffy’, dog: ‘Oscar’}. They are demarcated with curly braces, and a colon after the key.
Interactive ruby console (irb) : This is a tool that executes Ruby code in the terminal with immediate response, allowing you to play in real-time. To access it you just type ‘irb’ into your terminal. If I want to see how a particular method would behave, instead of writing it in my text editor and running the programme, I can try it out in irb.
Methods : Methods are code that are used to group repeatable statements into a single unit. Ruby ships with many in-built methods. A nice example is the ‘length’ method, that will return the length of a string to me when I invoke it. I can also write my own methods.
Objects : Every object is an instance of a class. Whilst objects inherit certain characteristics from their class, they can adopt behaviours that are external to their class too.
Ruby on Rails : web development framework for Ruby.
RSpec : RSpec is a Ruby unit testing framework. Well designed RSpec tests will read much like English.
String : These are usually words and sentences within the programme. They are enclosed by quotation marks
Sublime Text : the text editor that I use. It’s the equivalent of Microsoft Word for code writing.
Terminal/ command line : a way for the user to interact with the computer programme by typing in commands. For example, I frequently use the command line to create and navigate through my folders and files. If you are using a Mac, you can access it by searching for ‘terminal’ in Spotlight.
Test driven development (TDD): the idea of writing a test for a piece of code before writing the code itself. The test I write will contain an expectation for a particular occurance or state of an object. For example, if I expect my code to know whether a number is divisible by 3, I could write a test that will expect ‘true’ to be returned when I pass the number 3 into my piece of code.
Unit testing : this tests that each part of the software works in the way that we expect it to. This is much like testing the engine of a car. As developers, we want each part of the system to be working as we expect.