You may be reading these lines in a browser of a computer or mobile phone, in your Gmail or Outlook application or you may be reading it in beautifully designed pages that are digitally typed and designed, and presented for you and probably some of you received a Facebook notification on your phone that prompted you to read these lines. Thinking of your day to day activities, you may have opened your browser to search for jobs, to apply for scholarships, to use Skype for a business call, scrolled up and down a hundred times your Facebook feed or posted attractive (you think so) photos in your Instagram or Snapchat accounts. You may have also uploaded content to your organization’s website, used a management information system provided for your organization to generate reports or ordered Siri to play you a song.
Gmail, Outlook, Facebook, Skype, Snapchat, Google Chrome and all the other tools and applications that you use on your computer or your other digital devices are all software applications and tools that are built by software developers through a process called software development. Software development is a process that includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process. Software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products, like the ones you use every day.
Even though software can be applied to a huge variety of uses and contests, the process to develop any type of software is standard, throughout the world. The coding, the instructions given by software developers to computers through computer programming languages in the process of software development is completely logical, scientific and specific such that these languages ensure the programs do exactly what they are designed to do, for any person, in any country. Computers — for example your laptop or mobile phone — as their capacity allows, are there to apply all those instructions exactly as they are laid out, without getting grumpy about it, or tired or frustrated (though they do get heated sometimes, only because they get excited working for you!).
Is there any other ways you define Software Development? Please comment below.
As part of my more than ten years of work experience in different software development roles in a variety of companies of different size and structure in Turkey, Afghanistan, England and Canada, I’ve developed insights that may be of value for those thinking about entering a career in this field, or who want to excel further in this area, which I share below. Some of these principles that are also covered in the book: The Passionate Programmer, by Chad Fowler, which I highly recommend.
Choose your market
Software industry is a huge and ever growing industry and as such it’s impossible to be expert in everything. Thus, you should give some thought to choosing where you want to focus. It’s generally recommended to be a specialist in one thing and a generalist in a few others. You can’t be a specialist in everything. For example: are you going to be a frontend developer, a backend developer, a mobile application developer, or something else? Choose to work on what you love, and then excel in it.
Additionally, the software industry is growing so fast that almost every day there is a new framework, tool or library developed that could prove to be useful to you. Thus, it’s good practice to have strong computer science core knowledge combined with a continuous learning mindset in order to keep on top of the pace of change in this industry.
Invest in yourself
In an exponentially growing industry like software, it’s very important to learn the fundamentals and how things work, to not find yourself perpetually copy pasting codes from Github or StackOverFlow (these are two of the most used websites by software developers). If you are thinking of doing software development as a career, you should learn to fish, AKA to code.
Additionally, make self-development a habit. Read books, join online courses, watch videos. It can be challenging to spend yet more hours in front of the computer for self-development, on top of your work hours developing code, so consider getting up and out, joining coding workshops in the community or software sessions offered in your area. Chances are you’ll learn something new, and get to socialize and build your professional network.
Always set high standards for yourself. As a software developer and in a network the likes of the Internet, you are in a flat structure. In that moment that you sit in front of your computer, connected to the Internet, you have the same opportunities and facilities as someone does in Europe or the US. Recognize this power, and you’ll quickly manifest the potential you to be excellent. Most of us are content to go with the flow. It takes active effort to fight the mindset of ‘good enough,’ and to strive for more. Work every day to force a remarkable career and you’ll soon find this leads to a remarkable life.
But it’s not glamorous. It takes adherence to those well worn paths: be disciplined in your work ethic, be on time, fulfil your promises, and get organized. This self-discipline is the start to remarkability.
Write a blog post, deliver a session in your local developers community, upload an instructional video to Youtube, volunteer to teach coding, become a mentor to someone entering the field or to a young person thinking about it. Do one or more of these as time allows. Do it for good, to contribute back to the community and help others. You will never regret helping out, never.
It’s same everywhere
Speaking as someone who has worked in what may seem like polar opposite countries (and in fact, geographically, are), I discovered that software development and the way most companies work are remarkably similar everywhere. The stress, anxiety, and risk of burnout when you don’t know what you are doing, or the consequences lacking discipline or failing to pick up new skills are the same anywhere. And so is the joy and sense of satisfaction when you work hard, conquer a new skill, and get your deliverable in on time. It’s a career that is somewhat universal, whether you are sitting in a teahouse in Shar-e-naw in downtown Kabul or at the library in central London or in a Starbucks in Seattle. Indeed, since people in this industry rely so heavily on the Internet, you are constantly connected to a community that transgresses borders, tapping into the knowledge and experience of people in vastly different places. This can only be a boon to those setting out in their careers in once isolated countries like Afghanistan.
Nowadays, there is a huge interest in learning how to code. You will notice plenty of articles coming up in your social media feed, in technology portals and even in mainstream media that emphasize the importance of learning to code, no matter who are you or what you do. A major annual campaign run by code.org, a US based non-profit organization, called Hour of Code promotes coding, and is endorsed by many celebrities and pioneer software personalities who are featured encouraging computer science education and coding.
As in technology generally nowadays, there is also a lot of focus on women’s representation in this field, which is encouraging. Indeed, the number of organizations promoting the participation of women and girls in coding is rapidly growing.
I myself recently experienced the high level of interest from all kinds of people when I was bombarded with responses to a Facebook post on my profile offering to help people learn how to code.
So all this attention, the campaigns and growing awareness have become a business opportunity for many and a way to give back for many others. coding bootcamps are increasingly popular, computer science and IT institutes are flourishing, and schools of all levels and disciplines have started to pay serious attention, with many offering courses in coding by computer science educators. Additionally, many organizations and companies, as part of their corporate social responsibility commitments, have started to promote computer science and have supported their employees to learn coding, also hosting and sponsoring events for this purpose.
These are all positive changes. However, learning how to code needs more than signing up for a one-off course. Like any other skill, learning to code requires dedication, discipline and grit. I try to make this point for anyone who approaches me wanting to learn coding. Let me elaborate further:
Write down why
In your notebook or in your newly downloaded Sublime Text editor or Visual Studio Code, write down why you want to learn coding. Is it because you see your friends talking about? Is it because you read a report saying that your current job is at risk in the near future and you felt the panic that pushed you toward a new field? Or is it because you want to develop an app or develop your startup’s website and you can’t afford to hire a web developer? Whatever it is, write the reasons down and then consider whether you have the right incentives and motivations, because it is motivation that you will need to ultimately succeed. If it’s a passing interest, or getting on a fad bandwagon, chances are that you will quit before you really grasp coding. Now, decide which of the following categories you fall into:
- I am just curious to know whether I can learn coding. I’m reading about it everywhere and it sounds cool. If your motivation is as simple as this, then you might want to take some time to investigate further whether coding is your next best move, or find the ‘sweet spot’ motivation before diving in, so that you’re more likely to stick with it.
- I want to develop my startup website and I can’t afford to hire a developer until I have investors. This is the driving incentive behind why many individuals want to learn coding. You may continue coding after your first project or stop after one, but even if just for one, you will learn a lot, and you’re in a great position to remember what you’ll learn if you’re applying it to a project you are working on.
- I want to switch careers and I see myself becoming a developer. If you’ve done your research, visited developers, tried some tutorials online and ordered or borrowed some books to read and you’re serious about becoming a software engineer for life, then congratulations, you’re ready!
Consider whether you can you allocate the time needed to learn coding, which I’d suggest be at least 30 minutes a day for at least six months, but ideally up to a year. Remember, it takes 10000 hours to become an expert in a subject, if you are serious.
Get to know the history and context
If you want to learn a language, you can learn it quicker if you travel to the place the language is spoken or at least read about the history and culture of the country where the language is spoken. If you want to learn how to code, learn as much as you can about computers, their history, impact on society, and evolution, as well as the mechanics of software and hardware. Code.org has a collection of videos explaining fundamental concepts in simple language by experts and you can read blogs, watch videos or read books to complement your learning to code with this contextual background. You can also ask a developer friend or visit a software startup in your community. You can learn a lot from interacting with those who have already mastered coding more than anything.
Plot your next move
Now that you asked yourself these tough questions and whatever your answer is, you want to proceed and came here to follow a path to go ahead, I recommend you the following:
- Have a project in mind. You’ll learn more easily if you are learning to code for a real project. If you don’t have one in mind, try to come up with something you feel excited about. For example, think of an app you can create to help you or someone else address a compelling problem, or build a website for a non-profit organization or for a friend’s startup.
- Use online resources. I’ve come across many success stories of developers who got started from taking courses on edx.org, codecademy.com, freecodecamp.com or coursera.com. Go ahead and start there too. I’d also recommend joining freecodecamp.com community, where you can follow a curriculum and start learning how to code from scratch. If you struggle with the the curriculum you can make use of the forums and chatrooms provided by freecodecamp or from your friends and other communities. Stackoverflow.com is where I answered many questions and found answers to many of my own questions as well as on w3schools.com which helped me with anything from HTML to Node.js.
- Find a partner or a community. It is common to get stuck in a simple problem in coding and not be able to find an answer for hours. This happens even to expert programmers, but it can be especially disappointing for beginners. That’s why having a partner where you can do pair programming or a community where you interact with people at your level or higher, to ask questions, or just for some solidarity! Consider checking meetup.com or search Google and Facebook to see if any coding or technology events are taking place nearby you.
I hope these points help you start your journey toward learning how to code. Let me know if you have any questions, suggestions or ideas, in the comments.