How To Get Started With Programming, Part I

Jayesh
8 min readAug 2, 2019

In this article, I aim to provide you with an idea of the different components of the programming world, the choices that you should make and also why it’s necessary that you start now.

Picture Courtesy: Roserodionova

As a consequence of my outgoing character, I’ve talked extensively with people starting out in the technology and coding sphere. The most recurrent stories that I’ve discovered:
I’ve no idea where to begin. How do I start?”
“What language should I learn first?”
“Should I study Machine Learning now?”

…with life

I’ll talk in detail about the first two scenarios; the answer to the third is a straight-up “No” . Don’t dive head first into deep waters before you know how to swim. Please.

Where To Begin?

There are two broad categories of programming that you need to know about: Development and Competitive Programming.
Development, as the name gives out, comprises building software using dedicated tools, editors and specific languages.

  • It involves going hands-on with technologies that are used by professionals in the industry to solve actual, real-life problems.
  • You can build tangible solutions to problems yourselves and earn social capital by sharing your work publicly.

Competitive Programming focuses on your problem solving ability. It has isolated situations made into problem statements and you’re expected to find a solution to that one-off problem, often under a variety of constraints.

  • The wide array of questions you’ll solve make it easier for you to ace interview questions which are sometimes based directly on them.
  • Global and local rankings can serve as substantial motivation to continue coding.

What you choose as your primary is entirely your choice. I say “primary” because both of them are ultimately necessary in their own domains as I just mentioned above.
What I’ve personally found to be working well in my case, is having Development as my primary focus when it comes to writing code. I incorporate little competitive programming in my life from time to time to stay apprised of the different algorithms and use cases of important data structures which also help with development. You can have the reverse working for you too, with development providing the delightful break.

Once you’ve made that choice, you can move ahead to making even more of them now. With competitive programming, there isn’t a lot of initial configuration required on your part. All you need is a programming language you feel comfortable using and that is pretty much it. The preferred language in this domain is C++, mostly because code runs much faster in it compared to other languages and this might help you beat time constraints in some competitions. You can look at websites like HackerRank or CodeChef to get a groove of the competitions and challenges.
Development is where you need a good sense of what you aim to achieve before you start with any particular set of technologies. This is because every field has its own preferred languages, frameworks and use cases.

Making The Right Choice

For the sake of simplicity, I’ll categorize Development into two broad fields, not completely exclusive of each other. One is Web development and the other, Mobile App development.

First, let me talk about a few things common to both.
Any application you develop has two major parts, independent of each other:
The front end includes all the code that is involved with the User Interface(UI). This is the part of your application that a user interacts with directly.
The back end is the layer where your information and data reside. It is usually inaccessible to the end user and it is what supplies the front end with content to display.
An important point I mentioned earlier is the separation of concerns between these two layers, that is, the independent nature of operating. The front end doesn’t need to know how the data that it’s showing, is fetched. It is tasked only with taking that non-visual information and putting it into the View(your Mobile or Web app) such that a user can understand and act on the information and similarly on the other hand, the back end need not worry about the user experience at all.
This is done, primarily, to distribute work among people with different skills(either front end skills or back end skills). A person capable of coding both the layers is who you call a full stack developer.

The most important part of learning anything new is the Documentation. It is the storehouse of knowledge that every writer on the internet goes through for putting together the tutorials you rely on.

Mobile App Development

The development of mobile applications falls majorly under two categories, on the basis of the platform you’re developing for : iOS and Android development.

Picture credit : idapgroup.com

Each of them have their own set of libraries(code provided to you by iOS or Android developers to make your life easier), and languages that you need to write code of your own.

For instance, you need some knowledge of Java or Kotlin to write native Android apps. Similarly, Swift is the language of choice for iOS development.
Apart from that, there are different environments that you write your code in, called Integrated Development Environment(IDE). An IDE is a software that has a text editor, build automation tools and a debugger all in a single package. Google recommends using Android Studio for android development and Apple requires you to code in XCode, its own IDE.

Which option to choose though?

For startups and companies, it is advisable to start with an iOS app, largely because it pays well and is easier to get to the market. For individual developers new to this sphere, I would suggest taking up Android development.
This preference stems from the fact that Android controls a large portion of the smartphone market and it is probable that most of your market, in college or school uses Android too. Thus, you can distribute your android app more widely than an iOS one, get more feedback and also positive publicity.

There are a host of resources available online to help you get started with Android or iOS. Sites like Udacity, Udemy offer extensive courses with a good number of projects to get you involved and the one at Udacity is also free which is a huge plus if you’re not sure you could commit to the course.
And let me remind you that, should you wish to have more information on any concept that you’ve been learning you should always refer the Documentation for an in-depth understanding and a source for good quality code examples.

If you are unable to decide which resource you should exploit or what projects you should work on(in the future), feel free to drop a DM on my LinkedIn, Twitter or Instagram.

Web Development

Almost every service you use on the internet and major businesses have an independent presence online in the form of a web address and a website. This should help you realize the grand scope of web development.
The tools and languages you employ here are somewhat different from the mobile scene but the fundamentals of development still hold strong.

HTML, CSS, JavaScript all the way

Web is one of the most lucrative areas in development and taking one look at the internships offered for the positions of a web developer will help you get the message home.
There are a lot of good resources to get started with web development. I would recommend starting off with courses on Udacity to get an initial grip on the concepts that drive the web.
You can also take a look at this article which gives a good sense of where to begin as a front end web developer.
For JavaScript, which is really essential for web development(and a good number of other domains), I can vouch for the book series “You Don’t Know JS” by Kyle Simpson.

Important Notes on Mobile And Web Development

  • You might feel that mobile and web are two very distinct disciplines and venturing into one of them would essentially mean ruling out any presence in the other. This is not true. The way technology is progressing now, the gap between these two domains is actively being bridged.
    For a long period of time, mobile apps had higher engagement than websites and this was primarily because of the much smoother experience and tighter integration with other apps and services on your phone.
    With new techniques, this can be achieved on web apps too and companies like Twitter have already rolled out such apps.

All of the knowledge that you amass will never go completely in vain because you should remember that new tools and tech are always built on the fundamentals and understanding of the older techniques.

  • There are popular frameworks available on the market that allow writing code for Android and iOS devices simultaneously. However, I feel that having good knowledge of the native side of app development is crucial before stepping into this territory. This enables you to understand why your app is behaving in the way it is and also allow you the ability to build resource intensive apps(apps that require access to your phone’s most sensitive resources and platform-specific APIs).

Conclusion

I feel that this write-up might give you a sense of the different technologies that are involved and the trends in the programming world.
I would vehemently encourage you to take up some domain and start coding. I can insert half a dozen quotes off the top of my head by important people you’ve never heard of but it’s more fruitful that you take my word for it and save both of our times.

In the next part of this series, I’ll talk about some essential things to keep in mind while you are writing and developing stuff and what I learnt from my experience in this awesome field, so that you can have it easier than I did.

Cheers and happy coding! 🥂

--

--

Jayesh

MLOps @ZenML, IIT Bhubaneswar Graduate | Varied interests | Love interacting with people. I crave knowledge 📒📰