Breaking Into IT
By Sudheer S
The Traditional Way Of Learning
In the olden days, you had to go to school or college to educate yourself. In the classroom, listen to the lectures, make notes and enjoy some discussions with the lecturer and classmates. At home, you would refer to textbooks and complete the work suggested in the curriculum.
Other than college, you had and have the option of private tuition. There are many brick and mortar training academies that supplement the colleges and universities.
With respect to computer science, the goal of the traditional college education is not to prepare the student for an entry level job in the IT industry. The goal is to educate the student in computer science so that they can solve problems by creating and improving software. The academic nature of such a course is rigorous and takes a few years to achieve mastery. The post is not about drawing parallels between a university course and self-learning. This post is about discussing a path to start a career in IT. The takeaway is, to get an entry level programming job, you don’t need a traditional multi-year academic course.
Hey, people still go to school and colleges. Yes, of course! Today, virtual classrooms and video lectures are supplementing the brick and mortar classrooms. Eventually, more and more people will be educated online and at some point in the future, the physical classrooms will be a thing of past.
In the recent past, particularly in learning programming, starting with a book was a common approach. This could be a physical or digital book, or even one downloaded from a free source. The key is to thoroughly read the book, engaging deeply with the study material. To supplement this learning, resources like Google, YouTube, and Wikipedia are invaluable. Practicing by implementing new concepts in personal or reference projects helps solidify understanding. Once these skills are honed, they can be applied in real-world projects. However, it’s important to note that this method, too, might soon become outdated.
The Modern Way Of Learning
Internet has democratized education like never before. You can learn almost anything for free or cheap.
- Wikipedia is the internet’s text reference for everything. It is an online free encyclopedia that anyone can edit.
- Youtube has video courses for just about anything.
- The internet is full of articles and blogs with a lot of educational material.
- In addition to these text and video resources, you have forums such as StackOverflow and Reddit. On these forums, you can ask for help. The friendly communities help people by answering and guiding other members of the community.
- There are countless educational platforms online. Khan Academy provides high quality video content on subjects including mathematics, sciences and computer science. Coursera and Udemy are popular platforms that offer paid and some free coursers. Many Coursera courses allow auditing, ie, watching the videos for free. Udemy offers pocket-friendly courses.
- Generative AI based chat services such as ChatGPT and Bard have recently joined the club. Today, you can use ChatGPT for learning. For example, you can ask ChatGPT to provide a list of topics in your chosen subject. You can then follow up with further questions on each topic.
For modern internet assisted education, all you need is a laptop, internet connectivity and a quiet place. With motivation and dedication, you can learn anything you want. Even if you did not study computer science in school or college, you have endless ways to learn programming and breaking into IT.
Programming
Learning to program opens doors to the IT industry. Programming is a key skill in IT. Start with programming.
There are many paths to learn programming. One of the easiest methods is web development. In this path, you learn some preliminary and related technologies first: HTML, CSS and Git. You can learn the basics of these preliminary web and IT topics within two to three days.
There are other paths to break into IT, too. Traditionally, folks have started with a language like C. Along with a high level language like C, people studied computer science theory. This path is more formal and abstract in nature. The path isn’t necessarily related to web development. For a self-learner, this traditional academic path can be difficult. Although, web development is by far the most popular learning path for beginners, it isn’t the only path.
What programming language should I learn first?
Pick any popular programming language, and you should be good. Personally, I suggest JavaScript, especially if you take the web development path. You can use JavaScript for both frontend and backend. There are many alternatives for backend. Python, Java and Go are some popular choices for backend development.
Project Based Learning
To get started, take a tutorial. Follow the tutorial well. Use the pause, repeat and rewind buttons of the video player. Do what the instructor says on your computer. Let’s say, you have started watching a Youtube tutorial series on HTML. Watching is the first step. Writing some HTML markup on your computer is the next step. Everytime you watch a video or read a tutorial, follow it up with doing it practically on your computer. Emphasise on practically doing things on your computer. The same applies for every topic, be it CSS, JavaScript, Git or Python. Doing is learning. Start a personal project.
Project stage one: Build a website using HTML, CSS and JavaScript. Use images, fonts and videos in your website. Buy a domain name. Publish your website on the internet.
Project stage two: In the next stage, learn a backend programming language and a relational database such as PostgreSQL. Evolve your static website into a web application. The project could be anything from e-commerce site to social media application to gaming site to appointment scheduling site to educational platform.
Project stage three: Deploy your application in the cloud. With this step, you step up your software engineering skills. Not only you can develop software applications, but also have the ability to deploy it. Deployment will expose you to a bunch of software engineering principles and practices. A well-rounded deployment process will involve executing automated tests and safely deploying the changes with the option to rollback to a previous version. It helps create a robust process of release management and software engineering best practices.
Learning Techniques
Commitment: To successfully learn a few topics, you have to have commitment. You may have other engagements during
the day or night such as having a job. When interruptions happen, you can slow down and start procrastinating. You
might never get back to learning. To avoid falling prey to distractions and interruptions, commit to an achievable
schedule. Thirty minutes a day for thirty days is a good schedule and commitment for a beginner. If you can do more,
consider dedicating one hour for sixty days. A Hundred days of learning is a popular scheme on the internet. I have come
across many tags such as #100daysCode
, #100daysOfWeb
, #100daysOfJavaScript
, etc. Choose a schedule and stick to
it. Whatever schedule you choose, don’t forget your well-being. Make time for physical and fitness activities. Get
adequate sleep, eat healthy and maintain social connections. Celebrate small victories and milestones.
Notes: make some notes while going through the tutorials. By taking notes, you become more active in your listening and reading. Your own words in your notes can help understand complex topics better. The visual and kinesthetic learning style of note-taking aids in memory retention. Reviewing your own notes will reinforce the knowledge over time.
Get help: while learning a technology stack, you might feel like being stuck and unable to make progress. When you hit a wall, take a break, take a walk, clear your head, sleep over it and then try to make progress with a fresh mind. You can ask any and all types of questions to ChatGPT. The AI Chat services are good at explaining complex and technical terms in layman terms. They can also draw pictures to illustrate the point. If you feel the need to talk to a human, join a forum like StackOverflow and ask your question, nicely. Someone will answer in your question soon.
Popular Technology Stack: Web Development
- HTML
- Git
- CSS
- JavaScript and NodeJS
- SQL with PostgreSQL
With this technology stack, you develop some skills in backend and frontend.
HTML, CSS and JavaScript make the frontend, ie, the show of your application. This involves the user interaction with your application in the web browser. If you focus on this part of the stack, you can look to have a job in frontend engineering.
JavaScript and NodeJS and PostgreSQL database combined with web server form the backend. If you focus on this part of the stack, you can look to have a job in backend engineering.
If you learn both frontend and backend, you can become a full stack developer.
What other types of software can I develop using my programming skills?
There are numerous categories of software. I will list a few of them here:
- Artificial Intelligence
- Operating System and system software
- Gaming
- Cybersecurity
- Mobile applications
- Internet Of Things
What editor or IDE can I use?
Start with a free tool such as Visual Studio.
Books
You don’t need to buy any books in the beginner level. Just use the free resources on the internet. There are also free books from various universities and authors. Download and read them if you are inclined towards text based learning.
What are the next steps after learning web development?
Increase your breadth and depth of knowledge. In your IT career, you will have to learn a few programming languages given different contexts. Don’t shy away from learning a new programming language. Start thinking about software engineering outside the context of web development. Expand your computer science and mathematics knowledge. Explore the world of data structures and algorithms. Study, learn and apply design patterns and software architecture in your projects. Make your application robust in terms of performance, security, scalability, reliability and sustainability. Attend meetups, conferences and technical events. Embrace open source and try to make contributions. Get involved in communities. Make friends and expand your social network.
Now is a good moment to ponder what a student would study in a traditional university engineering course. I am not suggesting enrolling in a college course. Think about the topics the students study in such a traditional undergraduate course in computer science. Now, think how you can learn the same topics by yourself with some assistance on the internet.