Click here to Skip to main content
13,797,167 members
Click here to Skip to main content
Add your own
alternative version

Tagged as

(untagged)

Stats

6.3K views
4 bookmarked
Posted 17 Apr 2018
Licenced CPOL

How to Start the Homework or a Developer Career?

, 17 Apr 2018
Rate this:
Please Sign up or sign in to vote.
Some tips on what to consider when you start learning to code

Introduction

A lot of people want to code out of interest or to do some homework and some don't know how to start.

Background

I am a seasoned developer and I see a lot of plain questions in this area, so I want to share my knowledge and experience.

What's Next?

The first decision is what to learn by deciding for what you want to develop. If it is your homework, then the task and the language is clear, but when starting a career, a lot of questions are open. Do you have any idea what job you may get?

The mobile market is red hot and you may start with Android Studio or Visual Studio for PCs, but my advice is also to think about web programming. Coding websites in professional quality isn't as easy as people think, because a lot of skills beyond HTML, CSS and graphics are needed. JavaScript and PHP are full programming languages. The advantage of web programming is that it is easier to start, a job is always offered but it is not so well paid like programming C++ or for Apple.

There are tons of online learning platforms like coursera or OpenHPI.

Search on Youtube for some tutorials with a lot of lessons in programming. Compare some - there are bad, good and some outstanding.

Choosing the Platform

By choosing what software should be developed, often a choice of the tools is made. Most modern IDE are specialized for a platform or operating system.

Android

The tool of choice is Android Studio and to learn it from some video tutorials in this area. The language Java is superceded by Kotlin.

C# and Xamarin

Is a high level language for programming user interface oriented apps in the Windows world. It is more interesting when working for mobile apps with the cross platform tool Xamarin.

C/C++

If you want to learn programming from scratch, then C and later C++ is the best. Search for some online tutorials. This is a good starter tutorial but the greater Learn C++ tutorial provides broader knowledge even on installing and working with the IDE. For the C language this C-tutorial  is interesting.

With downloading and installing Visual Studio from Microsoft, everybody gets a state-of-art development tool.

But knowing a programming language is only the beginning, because a lot of code and tools need to get applied. Important are code libraries, SDK and tools like git. Here, on CodeProject are a lot of sample projects to discover, some really great.

Some Word to C versus C++

C++ is somehow the "child" of C and is so the same language added with a lot of useful enhancements. This article gives an overview of the differences between C and C++.

If anybody wants to develop software for embedded devices like drivers or integrated circuits, C is the first choice.

The Apple Universe

If you want to learn programming for Apple like iOS or MacOS, then the first address is https://www.raywenderlich.com/.

I would suggest the paid video plan because it boosts knowledge and learning speed and so is worth the money.

It is most important to know what you want to program, because every target platform has some preferred language. And that is the ultimate decision argument for choosing a language.

Java

Not only Android apps are in Java, but also a lot of server applications are in Java.

Web Development

The huge internet content needs a lot of development, so creating HTML webpages with powerful backends like database or content servers is a wide area. In this field, JavaScript (or correctly ECMAscript) is an oustanding language, which has evolved to a serious programming language since getting ECMAscript 6. Even the plain HTML has become highly sophisticated, so that learning the HTML 5 standards is important.

Legacy Languages

Most people underestimate that a lot of software written in legacy languages is still running. I am talking about languages as COBOL, FORTRAN and Visual Basic. Often, employers demand such skills, so it may be worth a look. It is interesting that C# and the net-platform have some interfaces.

How to Start a Project

The first step is to define the solution, often it is the task from the teacher or the managers. The next step is to divide the complex task in complete sub tasks, like user interface, input, networking, computation and output. This leads to codeable pieces of work. My experience is: spending more time in that task leads to a smoother coding process, so it is worth the time. Anybody who must confess that he has re-written his app at the end knows that. Nearly everybody has to learn that lesson the "hard way".

It is always a good idea to search for similar code on the internet. Here, at CodeProject or Github or other vendors, you may find nice examples and some help.

Best Practises

Is the synonym for "lessons learned the hard way". I learned these rules often watching that these rules are avoiding trouble.

Missing Knowledge

When you feel you don't understand the task, you must try to find it out. First places are wikipedia, Google and Youtube. Often, there is a lot of background knowledge presented because a lot of people had similar problems. If that doesn't help, ask your mates or colleagues and then go to the teacher or manager. Don't wait till it is too late. 

Quality Needs Time

Don't write code too fast. First think about some concept of code flow and architecture. Make a concept of your work. At best, you write some prototype code which is mostly complete. It helps to optimize the project structure, so minimizes work load and detects problems. Write clean and accurate code, so reading and debugging it is fun. Take my advice seriously: superior code quality saves times.

Readable Code is Good Code

If the code is short and straightforward, it is good code. Handle the common workflow first and handle errors last.

Use Standard Wording

Every language has standard wordings for variables, functions and classes. This helps to understand the coding, debugging and maintenance. After months and years, the code stays readable - even for your team mates. Anybody who has fixed a colleague's bug in his vacation time will know it.

Use the English language, because every programmer around the world understands it. Imagine a French and a Chinese coder working on the same code.

Use Functions and Libraries

Tons of code is written and wants to run. So take the time to learn the functions, like in C/C++ the libraries and API of the system. For instance, knowing the standard C++ library is fundamental when programming for C++ because it provides the tools to write big parts of any project. No one needs to reinvent these functions which provide excellent multi media libraries as ffmpeg or opencv. The best part is that these functions are tested and run for millions of times, so they are considered to be "bug free" and there is a lot of Q&A on the internet.

Use Standard Tools

Tool chains are available for team work, issue trackers and code backups. So it is best practice to work with tools like git or lint. A developer should have deep knowledge of git and work fluid with it on the console. In every company, such tools are the backbone of the work flow, so use such tools as helpers not as foes.

A code analyzer like lint helps to identify weaknesses or problems which can get solved in an early stage before all code is messy.

Security and Privacy

Is an important issue for the user. No one wants their passwords in a logfile or some private pictures on the internet. So, encrypt important data with modern techniques. Best is to not store what is not really needed. 

Use Logging Output

Use some output in critical paths of your code. Sometimes, logging on the console is enough, but often writing a log file helps. Keep it short and crisp. Pay attention to privacy. Never ever log sensitive data. 

The Hard Work

The hard work is often not the writing of the code, but debugging and testing in real world scenarios. It takes time to play around and find the edge case. It is a good idea to give some selected users a beta version to find some "alpha version" problems. They will be there.

Write Tests

Whenever possible, write some tests and run them often. This keeps the code in a defined quality and saves time. See the tests as the first user of your code.

Bugs

Bugs are mistakes, everybody makes mistakes and so is part of the learning process, so they are like the "red ink" from the teacher. The most common cases are not fully checked edge cases or the misinterpretation of return codes. Fix them and learn from them, and make them only once. Most of the bugs are similar so using your favorite search engine often helps in fixing them. Here, you find the first bug in the computer history.

Some statistics are saying that around 1 bug per 1000 lines of written code. In libraries, there are fewer errors because of their massive usage. So, use libraries as much as possible.

On the long run

A higher education normally pays off. Your working career may be as long as 40 or 50 years, so NOT starting with the best education is a  severe disadvantage. If you work early you may regret it in 10 or 20 years when you havent an fitting diploma for getting into the team lead or managment levels.

Normally a university diploma means higher skills, more responsible work and so more pay. And is to also best to build confidence when looking for a new challenge.  Dont underestimate the managers wish for secure decision. If one has a diploma and the other has no one - who will get the job?

Epilogue

My simple words can only be a starting point for finding your own way of life long learning. I hope readers can take away some interesting thoughts and links for their next steps.

My advice is to do what you love because real engagement and hard work are keys for long success. But it is also important to see the reality and the "market".

As an ancient Chinese saying goes, "even the biggest journey begins with the first step."

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

KarstenK
Software Developer
Germany Germany
I am living in germany and now living from programming for some Years. In my spare time I like sports as jogging, playing football (soccer) and basketball.

We must take care for our planet, because we and our family has no other. And everybody has to do something for it.

You may also be interested in...

Comments and Discussions

 
QuestionI Want To Learn From You Pin
Fraol Bulti18-Apr-18 9:05
memberFraol Bulti18-Apr-18 9:05 
AnswerRe: I Want To Learn From You Pin
KarstenK19-Apr-18 1:15
mvpKarstenK19-Apr-18 1:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web03 | 2.8.181207.3 | Last Updated 17 Apr 2018
Article Copyright 2018 by KarstenK
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid