A techie newbie?

Wow! Welcome to the tech field where you have lots of computers, servers, rolling chairs, ACs, etc. It may be a very hard task to transition from college to a job -a software developer. In spite the myths about this job, claiming to be the most paid job, most stressful job, most hair-fall job, most whatever job, it has its own pros and cons. Yet many of the myths are true, the hair-thing for example πŸ™‚ Just kidding!

When you first step into this field, everything seems a little off and people keep on speaking, attending meetings, tapping the keyboard, etc and you don’t understand what they speak or why 😦 For two months you will be left alone, I mean you would struggle to make friends and acquaintances. People would stare at you as if you are from Kepler-1229b (an exoplanet) but as days go by, you begin to get along with the people around you. (i.e) You start to code.

When this process begins, you discover new languages, frameworks, and most importantly you will realize that StackOverflow is the greatest treasure you can have. And every time you try to stay cool, some bug would rise up from the code you wrote yesterday and dance before the QA Team. Your bad 😦

Even I’m new to this field. I have consolidated few tips that would make you feel better as a fresher in this job -the most paid job πŸ™‚ Again kidding!!
This post is a bit lengthy, if you want a quick read, just skim through the bold letters.

Mistakes are OK:
Yup! You heard it. No one is perfect. A famous proverb says “Rome was not built in a day”. Perfection comes with practice and experience and they come with mistakes. When you commit a mistake, learn from it and try hard not to repeat it again. One of my favorite quotes -“I never fail, I learn”. Learn from the mistakes of your seniors as well.

Ask questions:
Being new to this field, everything will seem strange and weird. Open your mouth and ask questions if you are not clear about anything. People in the software field are kind. They will surely help you. Do not hesitate to ask a question that has knocked your throat. Just open your mouth and let it out.

Get Help from seniors:
Don’t feel shy to speak with them, they are also fellow human beings with an experience level greater than you. They would always be ready to help you out. Think them as your StackOverflow but do not disturb them often. This might lead them to avoid you, move to another cabin, find another job, etc. Who knows!! Just don’t disturb them with silly questions like “What is 1&&-1 ?”, “Visual Studio is not working, can you help me?”, you could Google it instead πŸ™‚

Learn/Read/Practice:
I heard people in college say, “All this studying stuff, examinations, semesters will get over within the college, Once into a job, we are free, no exams, no learning, nothing”. My friend, this is not true and you know it. You have to keep on learning as the world moves fast, so does the technological advancement. Frameworks, languages they all mutate every day, make sure that you read a lot and keep your technology stack up-to-date.

Improve writing skills:
Don’t write stories in the comment/work-log. Be straight to the point you wanted to say. Did some changes to the code?? Commit message – “updated bug that was not fixed today”. This type of writing doesn’t help you. In this field, you will have to write a lot of comments, reply to emails, skype with people. Poor writing skills do not help.

Be precise/short and firm in words:
Speak right to the point and use the correct words. Once I was asked by my team lead at the beginning of my career -“What is AJAX ?” I had no idea what it was back then. I knew “A” was for asynchronous so I started with Asynchronous… JQuery… He said “Don’t bluff” πŸ™‚ All I wanted to make clear is that, if you don’t know something –Don’t bluff πŸ™‚

Be wise while you code:
Read about OOPS and try to implement them and make the code modular. Use efficient algorithms and do a thorough analysis before you get your hands dirty on the code. Understand why and how the code works and then begin your task.

Keep your passion along with you:
Not everyone has the same passion -coding. Each and everyone may have different hobbies and passion. Do not leave them untamed. Follow your passion. Coding is your profession, passion may be something else. When you feel bored or stressed, ignite your passion and feel the stress relieved.

And finally, Smile always πŸ™‚
“Face is the index of mind”, radiate joy and confidence to the people whom you meet and talk with. A simple smile can brighten your day.

This is a field where you can develop your logical thinking, programming skills, ability to solve problems, communication skills, comprehending skills, etc. Make use of it. It may be hard in the beginning but as you get involved you will be drawn towards it and stress will stay away from you. For more posts on life skills, visit samuellawrentzz.wordpress.com

Happy coding!!

Software Developer Checklist – basic things that every software developer should know

This article is intended to list & discuss the basic things that every software developer should know. Earlier I decided to write a post to discuss the useful tools and technologies which will help web developer (basically I’m a full stack web developer). When I’m collecting that information, I have got an idea to make a quick checklist of the basic things that every developer should know (so that I post it now).

Is this a unique article? Of course not you can find a similar kind list in hundred of a post on the internet. But this is an article, made up of a list of useful tools and technologies using the knowledge which I have acquired from the past few years (technically 4 years as per experience). OK, let’s jump into the list. The items are not listed based on its importance, so feel free to traverse to read any section.

Version control systems

  • The management of changes to documents, computer programs, large web sites, and other collections of information. To
    • Management of code
    • Create repositories, branches
    • Commit code, merge code

Version control is a system that records the changes to documents, computer programs, large web sites and other collection of information.

In Software Engineering, version control is a kind of practice that tracks and provides control over changes to source code. WhenΒ we are working as a team with multiple people in the software development, the source code will undergo multiple version. Version control systems allow multiple developers to edit the same file a the same time.

Developers can retain multiple copies of the different version of programs or files, and label them appropriately. Version control systems are not limited to software development alone, it can be used anyone who wishes to keep track of revision of their files.

How to write

Writing is a key skill for software developers. To write

  • Source code in standard format
  • Business E-mails
  • Commit message
  • Release notes

Content writing is a most difficult and interesting skill. It doesn’t mean every software developer has to be a great author who picks magical words to write the content. But at the same, every developer should learn how to communicate with clients/team with precise and neat language through business emails.

In the case of software engineer life, writing topic covers the writing standard & readable code as well. The code should be readable for anyone in the team to understand the concepts in less time.

Writing proper commit message to every commits happen in the project via version control system. The other developer in the team should not spend his time much to understand the commit by digging into repository codes, they should probably get a short and crisp description what the commit is all about.

 

Mostly Software developer is supposed to involve in the process of creating documentation to explain the functionality of the system. The documentation may be given to clients or documentation will be used to share information across the team.

Usually, release notes will be shared with clients and top management to provide the information about the changes which is recently happened in the software system. Based on release notes only, the client can able to explore various new features available/ bug fixes happened in the system. They can’t see our comments in source code or commit message in Repositories. So content writing is an important skill in preparing release notes to make a clear statement on changes happened in the system.

Using libraries

In Software Engineering, a library is a collection of non-volatile resources used by computer programs. Mostly libraries include clear documentation, help data, pre-written code samples, configuration data.

  • Using the common feature
  • Using the existing feature

From the evolution of programming, the common terminology used in rising of every programming language is reuse.

Reusing the existing feature is a best practice that most of the programmers and technical books recommending. Using libraries is one of the best practice on software development. For example, if you want to deal with some of the mathematics operation like square root, finding Floor/Ceil value of the number. You don’t have to create your own methods from the scratch. Reinventing a wheel is not always a best practice. To do that operation, you can probably use some of the existing libraries (choosing suitable library is another big topic, we can discuss that in some other post).

At the same time, you don’t have to use the libraries always to do all your actions in your system. If time permits you can create your own custom common library which can be used by other teams in the organization as well.

We have to gain proper knowledge and information about the library before using it in our projects. You can gain such knowledge over experiencing by handling multiple projects in your career.

Regular expressions

A regular expression, (regex or regexp ) is in theoretical computer science and formal language theory, a sequence of characters that define a search pattern. Usually, this pattern is then used by string searching algorithms for “find” or “find and replace” operations on strings.

  • A sequence of characters that define a search pattern, mainly for use in pattern matching with strings, or string matching, i.e. “find and replace”-like operations.
  • Example: (?<=\.)Β {2,}(?=[A-Z])

regex.png

In the above image, we are matching a particular pattern or sequence of text from the paragraph. The regular expression will be used by developers in text processing and search algorithms.

Scripting

  • A programming language that supports scripts, programs written for a special run-time environment that can interpret (rather than compile) and automate the execution of tasks that could alternatively be executed one-by-one by a human operator.
  • Example:
    • Renaming the files in a particular directory with the names of files in another directory.

To do the particular small level operation in the daily tasks, scripting will be used. Python, JavaScript will be used to perform some quick operations in the day to day works. To perform some simple task we should not depend on setting large development environment, that operation should be done by using some scripts or bat files.

Database

Database is a systematic collection of data. Databases support storage and manipulation of data. Databases make data management easy.

  • Store, retrieve and organize data
  • Managing large amount of data

I would recommend every software developer to learn basic knowledge in handling database. Even though if we are not working with database level changes in the software system, it is important to have a basic knowledge in the database. Database is highly used to manipulate the data. SQL, NoSQL or Graph database; the developer should decide and learn at least one database system based on their needs.

Development tools

Using suitable tools is a success factor of the project.

  • IDEs
  • Editors
  • CLI
  • IIS

In the software life cycle, we developers will deal with various tools to perform and complete our task. Developers should acquire some good knowledge in choosing and working with tools.

We will deal with various tools like SRS creating tools, IDEs to code, Editors to quick edit or prepare documentation, CLI, Compilers, Build system, Continuous deployment etc. So every software developer should be familiar with at least one tool which involves in each module in the complete life cycle of software development.

Debugging

Debugging is an art, if you know debugging.

  • Ability to track down problem
  • Stepwise debugging
  • Using print statements
  • Logging the errors

To me debugging is a very interesting part of development. Debugging will help us to learn more new things which are not available most of the top rated programming books. It is a long chain process of the continuous learning process.

Debugging will become very hard if you are dealing with someone program which has poor documentation or unmanageable code.

Each and every IDEs come up with some new techniques to track down the values or state of a program during debug time in its every release. Simply, debugging is understanding the various state of a program with various inputs in different intervals. The formal word “debugging” means identify and remove errors from (computer hardware or software).

Defensive Programming

Defensive programming is a form of defensive design intended to ensure the continuing function of a piece of software under unforeseen circumstances. Defensive programming practices are often used where high availability, safety or security is needed.

  • It is a form of defensive design intended to ensure the continuing function of a piece of software under unforeseen circumstances.
  • Story:
    • On September 21, 1997, a division by zero error on board the USS Yorktown (CG-48) Remote Data Base Manager brought down all the machines on the network, causing the ship’s propulsion system to fail.

Reference: https://en.wikipedia.org/wiki/USS_Yorktown_%28CG-48%29

Making the software behave in a predictable manner despite unexpected inputs or user actions. The developer should sure make that the modules which we code should handle most of the exceptions that can happen. Overly defensive programming, however, introduces unnecessary code for errors impossible to even happen, thus wasting runtime and maintenance costs. There is also the risk that the code traps or prevents too many exceptions, potentially resulting in unnoticed, incorrect results.

Participation

A good way to learn something is to teach or speak about it.

  • Participating in online programming forums
  • Will programming forums help us in learning?

If you never participated in any online programming forums, just go and get started. This is the right time to start, there are thousands of people waiting for you to discuss a various topic which you can answer.

Will programming forums help us in learning? Short answer, Yes.

We can’t get a solution for all problem from the official documentation or support team of product. The online forums are the ones which help developers to discuss the various problems throughout the world.

 

I think I have covered some of the basic things that software developer should know based on my experience. It would be nice if guys have any item to be added to this list. Please describe those in the comment section below. Let’s have some healthy discussion. Participation is the biggest part of learning.

 

Happy learning!