Programming
Programming may seem intimidating, but it is actually one of the most rewarding hobbies you can choose. There are many people who see programming as a chore, when in reality it’s just like solving any other problem. It’s not all about computer science; it’s also about problem solving which everyone can benefit from! This article will cover how to get into programming and some ways that you might find fun projects to keep yourself busy with while learning the ropes.
Why is Programming a Good Hobby?
Programming is an art form that has many benefits. You will learn to solve many problems, create things that did not exist before, and hopefully find a career you enjoy doing.
Programming is a great hobby for many reasons.
- You can create things that did not exist before
- It’s creative in the sense that you are creating something new, even if it’s just lines of code
- Programming is problem solving and everyone benefits from being able to solve problems
- Software engineering is a growing field with lots of job opportunities so it can be used as a resume-builder as well as a way to keep your skills sharp.
Common Misconceptions about Programming
Unfortunately, programming can be intimidating for people who are new to this art form. There are some common misconceptions about computer science and programming that make it seem like it’s difficult or impossible to get into.
Some people think programmers must have years of education in order to do anything useful with their programs, which is completely false! Others believe that coding is all about memorizing obscure languages, when in reality if you know one language then learning another becomes much easier because the concepts are mostly the same but just explained differently.
For example, C++ has almost the same syntax as C# (the two most commonly used languages for games and other graphically-intensive applications), which means that once you learn one of those languages then learning the other will be a breeze.
Luckily, there are many resources available to help you along the way if you know where to look! A lot of companies post videos online showing how they do their work at their company so anyone can watch them and learn from them. Also most schools with computer science programs have free programming tutorials on their websites or YouTube channels.
There are also hundreds of books about various topics in computing if reading is more your style. And lastly, we can’t forget about Google, who has made it easy to find information about just about anything with the simple phrase “How do I..?”
Another misconception about programming is that it’s only about computer science. This is not true! While being a good programmer does require a certain understanding of the science behind it, coding in itself is more about problem solving and converting ideas into code.
The best programmers are people who can easily translate what they want to do into a way other people can understand them through their code. If you were having problems at home or with school that you needed solved, then writing out your thoughts for someone else to read and translating them into code should be easy for you, which means you’re well on your way to becoming a programmer!
How to Get Started with Programming
Now let’s talk about some ways that might make programming fun for you! There are plenty of resources online where you can find tutorials and guides to help you work with different languages.
The best place to start is probably by using the programming language of your choice and writing some simple games or applications while experimenting with new concepts. For example, if you have a good grasp of C# then try learning C++ so that you can use its higher level features on top of more ‘raw’ power from lower-level programming for your projects. There are also many great ways to learn online through websites such as Codecademy, Code School, Udacity, Khan Academy, Coursera, EdX, etc.
If reading books isn’t really your thing then there are plenty of other ways you can still get into programming! A lot of companies post videos that show how they do their software development work. If you’re looking for inspiration or ideas to get you started then I would definitely recommend browsing through some videos on YouTube like this one
So if programming is something that interests you, don’t let anyone tell you otherwise! Start out by learning how to program in your favorite language and find resources online to help you along the way, and before long I’m sure that many projects will be begging for your attention!
Common Web Development Terms
Web Development is an ever-changing field, and it’s sometimes hard to know what all the jargon means. This post provides a comprehensive dictionary of terms that will help you understand everything from CSS classes to web servers. This glossary is perfect for beginners looking to learn more about web development in general, or for people who are interested in specific technologies like PHP, Ruby on Rails, and Joomla!
- Agile: Agile is a set of principles for software development. It includes techniques like Test-driven Development, timeboxing and iterative modeling.
- Algorithm: An algorithm is an ordered list of instructions that accomplishes some task. Algorithms are at the heart of computer programming; every program you use on your PC or Mac has one behind it.
- API: An API, or Application Programming Interface, is a set of routines and protocols that allow programmers to use the services provided by another program.
- Application: A computer application is a software package designed for an operating system’s environment. Applications are often installed on your device alongside other programs in order to run them; however they can also be downloaded from App Stores such as Google Play Store and Apple’s App Store.
- Adaptive design: Adaptive design (also known as responsive web design), uses fluid grids, flexible images and CSS media queries to deliver content based on the viewing device being used – meaning it adjusts automatically when you switch-between desktop PC/laptop screens and mobile phone screens
- Bootstrap: Bootstrap is one of the most popular front-end frameworks for developing responsive, mobile-friendly websites.
- Backend: The backend is the back end of a website. It contains all the files and databases that are not seen by visitors to your site.
- Browser: A browser is an application used to find information on the internet. There are many different types of browsers, including Chrome, Safari, Internet Explorer (IE), Edge.
- Bug: When programmers make mistakes in their code they call it a bug; this can cause problems when trying to run or use software.
- Cache: Caching refers to storing frequently requested data so future requests from other users needn’t result in as much processing work – essentially speeding everything up! Caches come in two forms; page caches and object caches.
- Code: Computer code is a set of instructions written by programmers in order to make software do what they want it to do. It’s the blueprints for how machines should behave and perform tasks .
- CSS: Cascading Style Sheets are used by designers when building websites – these control the layout, colors and structure (among other things) on pages that visitors see.
- Data structures: Data structures are ways data can be stored in memory or on disk so that its content may be accessed more quickly than if it were just sitting there like an unwrapped gift! Some popular types include arrays, linked lists and hash tables.
- Debugging: Debugging involves locating errors within computer programs and fixing them before releasing the software to the public.
- Deployment: The deployment stage is where a website’s code and content are put onto one or more servers. These machines host your site, meaning they provide you with an always-on connection that gets visitors’ pages loaded up quicker than if it were coming from their own computer.
- Documentation: Documentation refers to all of the materials needed for programmers and other people who work on programming projects to know what they’re doing – without documentation, these folks can’t do much! There are many different types but the most common include design documents (or wireframes), system specs, user manuals etc…
- Domain name: A domain name is like an address for websites; this tells browsers how to find them online ! The top-level domain for all websites is “dot” – so .com, .org.uk etc..
- Ecommerce: Ecommerce refers to using your website to sell products or services online.
- Engineering: Software engineering is a profession that deals with the design and development of computer applications; it’s closely related to programming but takes in an even wider range of tasks including hardware components as well! Some programmers have a background in software engineering because the two fields are very similar.
- Forms: Forms on web pages allow users to input data into databases automatically (or give feedback about something) without having access rights to their account .
- Frontend: Front end development means working on what visitors see when they visit your site; this includes writing HTML/HTML Markup, CSS and JavaScript.
- Git: Git is a type of version control software that developers use to keep track of changes made to their code. It also provides an easy way for other people on the team to collaborate.
- Gzip compression: Gzip compression saves space by removing unnecessary information from files – it’s one of many technologies used during the delivery process! Compression may make pages slower but they will take up less storage space (and time!) in your browser or on your hard drive.
- Hosting: A hosting company host websites so you don’t have to worry about managing IT infrastructure yourself; this includes servers, data centers etc. They are contracted with networks like Akamai, Amazon Web Services and Rackspace.
- HTML: Hypertext Markup Language, or HTML for short. This is a markup language used to build web pages.
- Identity management: Identity management is the process of identifying who a person is – this might be done by logging into a website with existing account details, providing their email address and waiting to receive an activation link in response. User accounts are often tied up with all sorts of personal information such as credit card numbers etc. which makes it especially important to protect them!
- JavaScript: JavaScript is one type of programming language that web designers can use while working on frontend development; its main job here is interacting with visitors’ browsers when they visit your site so you don’t have to rely solely on forms (which may not work if someone doesn’t have access rights)
- jQuery: jQuery is a JavaScript library that allows designers to create interactive web pages; it’s often used by developers who work on frontend design because of its versatility.
- Languages: There are many different programming languages for use in the world today but some popular ones include Python, PHP and Ruby.
- Libraries: Libraries give programmers shortcuts when writing code so they don’t have to do everything from scratch each time – there are far too many functions out there! Some common libraries include Bootstrap, Foundation or jQuery UI which make things like navigation bars easier to build (and adapt).
- Minification: Minifying your website can save you space – this means taking unnecessary information out of files until they’re as small as possible.
- Mobile-first: Mobile first means that you design for mobile devices before designing for desktop or laptop – this is important because so many people are browsing the internet on their phones now! It’s also possible to have a responsive website which adapts depending on what device someone is using (though it may be slightly more difficult, and expensive).
- MVP: Minimum viable product refers to how much code developers need in order to test an idea; they then use feedback from early users to decide whether they should add more features. MVP has become popular as the best way of testing out if there will actually be a demand for your product (before going all in!)
- MySQL: MySQL is one type of database management system used by web developers. Databases are basically a way of storing information in tables which can be used to find out how many times particular words have been searched for etc. MySQL is just one example but there are other types too – some examples include MongoDB, Microsoft SQL Server or Oracle Database (which may be more appropriate depending on your requirements).
- PHP: PHP is a programming language that’s often used for web design with WordPress. It also has the capability to create interactive websites – it was designed to be easy and quick so developers can focus on what they’re working on rather than worrying about how things are going, which makes it perfect for beginners!
- Plugin: Plugins give you access to new features without having to start from scratch each time; this might include fields or buttons so your website becomes more dynamic depending on user input (rather than just being static). For example, if someone needs a contact form then there would probably already be plugins available online for them or their developer could make one themselves quickly and easily.
- Python: Python is an open source machine-readable language that many people use to create programmes; it’s often used with programming languages like Django or Ruby on Rails.
- Resolution: Resolution refers to how many pixels there are in an image for a website – this is important because when people visit your site, their screens may not be displaying the same number of pixels so you need to make sure everything looks alright (this can get more complicated if someone has access rights and needs higher resolution). Responsive design means that you display things differently depending on what device they’re using – which might mean putting less information onto smaller devices but making content bigger when viewed from further away.
- Ruby: Ruby is another example of a machine-readable language that developers use for web development; its main job here is interacting with visitors’ data. Ruby on Rails is a framework which makes it easier to create web applications – this can be done by following basic conventions which give you a head start (rather than having to write every line of code yourself)
- Sitemap: A sitemap is basically an overview of the content your website has, and in what order these items are laid out; they might make things easier for visitors if they’re looking for specific information.
- Software stack: Software stacks define how different pieces of software work together or complement each other – often used with databases such as MySQL so that developers don’t need to worry about them too much because everything will just go smoothly (though there’s still plenty to learn!)
- SSL: SSL stands for Secure Sockets Layer and is often used by web developers to encrypt data – this means that messages sent from one system to another are secure.
- Text editor: Text editors can be software such as Notepad or Word, or they can simply be a text document on your computer; either way, it’s where you write the code for your website (for example PHP).
- UI Design: UI stands for “user interface” which defines how someone interacts with their device. UX design refers to how easy something feels when interacting with it – both have been shown in scientific studies to make people more likely to want what they’re looking at!
- Version control: Version control is about making sure everything stays organised so if anything goes wrong then things will be easy to fix.
- Web App: A web app is basically a website that runs on the internet; this might include things like Facebook or Twitter. If you’re developing one, you’ll need to make sure it has an interface and also that people can log in (this usually requires having both front-end and back-end code).
- Wireframe: Wireframes are often used as blueprints for building websites – they show how everything should be laid out from start to finish so developers have something visual to work with.
- Web Development: Web development is what happens when someone builds their own site using programming languages such as HTML, Javascript, CSS etc.; though if all of these sound too complicated then there’s always CMS systems which will build your site for you!
Common Mobile Development Terms
- Accelerometer: A device that measures the speed and direction of a moving object.
- Adaptive layout: A UI design technique for responsive designs, which changes how content is displayed based on certain parameters such as screen size.
- Application programming interface (API): A set of protocols or routines to be used in software programs. It provides a way to access data from an application and enables communication between software applications.
- Appcache: A storing system for webpages which allows a user to load pages without an internet connection. This is typically done by creating copies of webpages and then loading them from local storage when the device needs it.
- Bluetooth: A wireless technology that provides a way for devices to talk to each other over short distances without using cables or Wi-Fi connections (usually).
- Business-to-customer (BAC): The process where organizations interact with customers, promoting their products and services through various channels, such as websites, social media networks etc. BAC also refers to businesses who sell directly to consumers on their own website instead of going through retailers.
- Business-to-business (BBE): The process where organizations interact with other businesses, namely trading partners and suppliers.
- Business-to-employee (BEE): Employees who are able to work from home. They may be given a computer or mobile device for this purpose.
- Data animation: Changing the way data is displayed in order to make it more interesting e.g., changing static graphs into an interactive diagram that can change over time.
- Device API: A set of protocols or routines which enables programs on your phone to communicate with different functions/features built within your device e.g., Accelerometer, GPS etc…
- Emulator: Software application designed for use by developers wishing to test various aspects of their software without having access to multiple devices simultaneously; often used when testing mobile apps.
- Feature phone: A simple, basic cell-phone that has limited features.
- Gryoscope: An app for detecting how fast your device is rotating in three dimensions (x, y and z) by working out the angle of rotation from a gyroscope sensor built within it. This enables you to interact with games using gestures etc..
- HTML – HyperText Markup Language: The language used on webpages which lets developers create content for websites or other online resources Hybrid app – “A single codebase application capable of running both natively as well as in a Web browser” (Techopedia). It’s usually coded so that parts can be shared between multiple platforms e.g., Android and iOS applications are usually built using Java, Objective-C or Swift.
- Internet of things: A term that refers to the idea that everyday objects contain embedded technology which enables them to communicate with each other and exchange data over a network. It’s predicted by 2020 there will be more than 20 billion IoT devices in operation globally.
- Mobile app – A computer program designed for use on mobile devices rather than desktop computers. Mobile apps are usually created so they can only run on specific operating systems e.g., Android apps cannot be used on iOS but vice versa.
- Mobile application development platform (MADP): Software packages such as PhoneGap which allow developers to create applications cross-platforms i.e., the same code can be usable on iOS and Android.
- Mobile app developer: A person who develops, or is part of a team that develops, mobile phone applications.
- Mobile OS: The operating system on your handset e.g., Android, iOS or Windows Phone.
- mBaaS: A cloud-based mobile backend as a service.
- MCAP: A Mobile Consumer Application Platform used by business to convert their desktop application into one for the iPhone and other devices. It’s an easier way of coding, faster and cheaper.
- MEAP: A Mobile Enterprise Application Platform that enables companies to develop web applications which can be accessed from any device. It’s often used for enterprise apps which require security.
- MVP: A Minimum Viable Product or a basic version of an app with the core features. This is not complete but can be tested to see if it has potential.
- Native App: Software developed using programming languages specific to each mobile platform, e.g., Objective-C and Swift for iOS applications.
- NFC: Near Field Communication – The transmission between two devices that are close together (usually within four inches) such as your phone connecting wirelessly with payment terminals at supermarkets etc.
- OAuth: An open protocol standard in authorization over the web allowing users to grant third party access without having passwords revealed across servers, similar to Facebook Connect providing automatic connection when logging into other services. It’s a more secure process for signing in.
- SAML: A Security Assertion Markup Language that enables single sign-on to web services without the need of passwords.
- SMS: Short Message Service – Allows text messages up to 160 characters between mobile phones, but can also be used on websites and social media platforms such as Twitter or Facebook etc.
- SOA: Software architecture where software components are accessed remotely through service interfaces rather than local procedure calls. This is based around the idea of separation of concerns so it’s easier to keep track when things go wrong.
- SSO: Single Sign On (or Single Login) – The ability for someone with one login ID (such as your email address) to gain access automatically to all other services without needing to log in twice.
- STA: Software development kit or a set of tools for the building and testing of an application. For example, Xcode is Apple’s primary software developer package (SDK) which includes compilers, libraries and programming languages such as Objective-C.
- TDD: Test Driven Development – This involves writing tests before writing code so that errors can be caught earlier. It also makes it easier to make changes later on if needed.
- UX: User Experience – The process by which people interact with your app from installation through use. People will want clear instructions about how things work at every stage; they need apps to respond quickly etc
- UI: User Interface – What you see when you access a mobile device such as icons, menus and buttons. The UI has to be simple and intuitive so that people can use it without needing instructions.
- Web View: A web browser or web page within an app (as opposed to native app) which provides the user with basic browsing facilities in addition to your application content.
- Web App: Software designed for accessing over the internet – either on desktop computers, tablets or smartphones via browsers like Chrome etc…
- Wi-fi: Wireless Fidelity aka Wi-Fi is a technology for wireless local area networking based on IEEE 802.11 standards. It’s usually used where there are only two devices nearby each other because of its short range but transferring large amounts of data quickly between laptops/phones etc…
Common Game Development Terms
- AAA (Triple-A): AAA is a term used to refer to the top-tier of video games. Currently, it refers exclusively to action adventure titles with big budgets and high production values.
- Agent: An agent is an actor who will perform tasks on behalf of players in a multiplayer game environment
- AI (Artificial Intelligence): This is software that powers nonplayer characters (NPCs) within a computer generated world or society—or otherwise simulates human behavior by following some set rules about how they move around in their given space. The goal for AI design is usually either aesthetic realism or intelligence matching humans’ ability for reasoning and problem solving.
- Alpha: Alpha versions are early builds of video games which developers release as soon as possible so that users can find crashes and bugs before the game goes into beta or gold master.
- AR (Augmented reality): Augmented Reality is a live direct or indirect view of a physical, real-world environment whose elements are augmented by computer-generated sensory input such as sound, video, graphics etc., typically projected on a mobile device screen or through glasses. AR introduces an additional layer of information to our world that changes how we interact with it.”
- Asset: An asset in game development can refer to any type of tangible media used within games; including models for characters/objects within the gameworld, textures which provide surface detail and coloration to these objects, rigging data needed for animateable meshes like skeletons and animations themselves. Assets may also include software or scripts which aid in the creation of a game.
- Baking: Baking is usually done using software like Maya or Unity, but can refer to rendering out an animation file from a video editing suite
- Balance: Balance refers to how well different aspects within gameplay are balanced with each other so that one does not overpower the others; it also relates to player-character balance, where players have equal abilities and weapons regardless of their character choice (e.g., male or female)
- Beta : Beta versions are early builds of video games for testing purposes rather than public release wherein developers invite select users to participate before going into gold master. It’s important because it helps identify bugs which would be too difficult for programmers/developers to find in the final stages of development.
- Bug : Bugs are errors in a game which may include graphical glitches, slow framerates or even crashes to desktop
- Build: Build refers to an instance of code that is compiled and running on your system– usually referring to video games where builds refer specifically to executable files.
- Cert (or certification): A certificate certifies that a product was manufactured according to certain standards by an authoritative body such as Underwriters Laboratories (UL). There is no single standard for certificates but they typically indicate safety, environmental protection/ green design etc. Certifications also offer assurance about production processes like quality control & contract manufacturing while providing manufacturers with liability protection from third party lawsuits if something goes wrong during production process.
- Clipping: Clipping happens when the art in your game is not rendered properly to fit within a certain area like a doorway or other open space
- Consoles: Console refers specifically to devices used for playing games. These can be dedicated systems such as the Xbox One, PlayStation® console or Nintendo Switch but also refer to PCs that are configured with hardware and software resembling traditional consoles; often referred to as “PC gaming”. Consoles may use optical disc technology (e.g., CDs) or digital distribution of downloadable content through networks.
- Controller Support: Controller support refers to whether or not controllers– either wired/wireless ones designed for video game consoles(i.e., DualShock controller)–or third-party USB peripherals work on specific games or not.
- Creative Director: The creative director oversees the production process for video games by collaborating with team leads on design aspects such as level layout or character development.
- Development Kit : Game Development Kits are software tools used to make creating content easier within game engines such as Unity or Unreal Engine.
- Digital Distribution: Digital distribution refers to the sales of digital media products and services such as video games, ebooks or music through the internet.
- Demo: Demos are usually a small portion of the game which can be accessed by players before purchase to decide whether they want more.
- Game designer: Game designers work with the development team to come up with an idea for a game and then execute on that concept. They may do this through scripting, graphics or other means.
- Game developer: Game developers are people who write code and design levels for video games. For example they might be responsible for programming in-game movement of characters like Mario while others would focus more on shading techniques such as lighting realistically created environments.
- Game engine: A term used by programmers/developers when referring to the software which is being developed– often including engines (e.g., Unity) but not limited to these alone as toolsets can also include everything from “libraries” (i.e., libraries which aid in animation) to plugins.
- Gameplay: this is the actual events happening in a video game; it could also refer to how difficult or easy an experience was for the player. This term often appears when people talk about different aspects of gameplay design such as level design, puzzles/mazes, platforming etc.
- Input: refers to the control that a player has over what happens in a game. Inputs are usually limited and can be any of your computer’s mouse buttons, keyboard keys, or analog sticks on consoles like PlayStation and Xbox.
- Model: Models are the computer-generated creations or simulations that make up a game world. They can be anything from an animal to a whole city.
- Multiplatform: When games are made available for multiple platforms (e.g., PC and mobile) at once, they’re said to be “multiplatform”
- Physics : Physics is part of gameplay design where programmers/developers must take into account how objects behave in relation to their surroundings—their mass, momentum, friction etc. For example the player might have trouble with a certain level because there’s no gravity on it; this would need different programming than if the same level had gravity.
- Pixel art: Pixel art refers specifically to two dimensional graphics displayed using pixels– usually as small squares like those found in old-school video games.
- Polygon: A polygon is a three dimensional geometric shape made with straight lines– for instance the game characters would be modeled as polygons. This term often refers to how many sides or “sides” an object has (e.g., triangle, square etc.) when it’s being rendered by computer graphics hardware.
- Render: The process of converting data and information from one form into another; most often used to refer to image rendering which takes place on screens and other displays such as televisions and monitors.
- Shaders : Shaders are small bits of code that tell a program how something should look like before any pixels have been drawn; they can also help control things like lighting effects or the appearance of grid lines.
- Sprite: A sprite is a two dimensional image, often in the form of an animated character or object. It’s also sometimes used as slang for single-frame animation (e.g., for a character jumping).
- Terrain : Terrain refers to the ground and surfaces that are part of any given game environment– this could refer to hills and mountains but it can also include such surface features like sand or water.
- Texture: Textures allow developers/artists to add detail to models by applying images on top – this may be done with textures which have been rendered out from programs such as Photoshop; alternatively photo editing software might use techniques like bump mapping where one texture is mapped onto another.
- Tilemap: A tilemap is a two dimensional image of tiles that can be used as a way to create levels for games. For example, the game’s background might look like this.
- Vertex : Vertexes are singular points in space- they’re also often called “vertices” or simply “points”. They’re typically defined by three numbers (e.g., X, Y and Z coordinates).
- VR: Virtual Reality refers to video games which use technology such as headsets that make it possible for gamers to interact with virtual environments; these will usually have controllers like those found when gaming on systems like Nintendo Switch.
Conclusion
I hope that everyone who read this enjoyed it and found it helpful. Please remember that I am only one small cog in the machine of world-wide information transfer, so if somebody else had already posted this article elsewhere then it’s entirely possible (and even likely) that my guide is redundanctt.