- Can a fresh graduate find work without having experience?
- How do I maintain bad code written by others?
- How can I keep up with learning new technologies fast?
- How do I answer the "What is your expected salary" question during an interview?
- Does a Quality Assurance Engineer career have a good future?
- How can a software developer from Assiut work at a large software company?
I am a fresh graduate and have not worked before. All job ads ask for 2 or more years experience. But I am unable to get those 2 years experience because I am unable to find work. And I am unable to find work because I do not have experience! It is an endless loop. What can I do?
This is a serious problem that fresh graduates face, not only in Egypt but in other countries as well. It is true that many jobs ask for a certain number of years of experience, but at the same time there are companies who ask explicitly for fresh graduates with zero or more years of experience. Some companies ask for fresh graduates in order to pay a lower salary and in hope of getting more enthusiasm and a higher energy level from candidates. Companies that have a lot of experience in a specific field and have a lot of resources for it might choose to recruit fresh graduates because they have the strong resources to train them and get them up to speed quickly. Usually larger companies follow this type of model in part of their recruiting. Find out more about what type of companies request experienced professionals and what type asks for fresh graduates here: experience. Finally, I would like to hint that not al job ads are written in a perfect way. Some companies do not really know exactly what they need and might not be able to write a perfect job description. Therefore, even if some of the requirements mentioned in the job description, such as years of experience, are not found in you, you may still apply to that job.
I have just joined a software company as a junior developer. The company is developing software solutions and information systems for large organizations. The problem is that my seniors at work have written spaghetti code with no documentation whatsoever and without doing any proper analysis and design. Now I am asked to maintain their spaghetti code and build on it. What can I do?
Do not worry. Many software companies, even large ones, still do not take analysis and design seriously nor documentation. Not only that, but their programmers keep writing "spaghetti" code that is a nightmare to maintain. In your situation, as you are the junior new recruit, you should take care not to clash with your seniors at work who have been working there far longer than you. Even if their code is difficult to maintain, has no documentation and was not based on any serious analysis/design you should still bring all that to their attention in an indirect way. Start by tidying up a small part of their code and writing your own neat code. Then show it to them pretending you are taking their advice or learning from their 'experience'. Make some analysis/design for part of the system and show it to them, still using the same attitude of pretending to be taking their advice. Rest assured that after you've done those two things they will get the message clearly. They will feel inside them how bad their code was written (compared to yours) and will start seeing how proper analysis and design can save them a lot of headache when developing the system and when the time to maintain it comes.
I am a senior developer yet unable to keep up with learning new technologies as they are evolving and expanding in an overwhelming speed. Another problem is that tools are now enabling new comers to the software development field to easily create what it used to take me a long time to build in the past. What can I do?
Your are facing a common and well known problem faced by many.
1- DIVERS
This problem is not faced by everyone though. Those who rely on trial-and-error and self-learning to acquire knowledge in programming and try to build solutions from scratch and use all sorts of clever tricks in programming are the most affected by this problem and are the ones who suffer most.
2- SURFERS
On the other hand, those who focus on the big picture, never try to build things from scratch but use RAD methods and even when learning new technology try to focus on the big picture and the fast and STANDARD way to build solutions and make use of what OTHERS have already built and 'standard' METHODS (best practices, design patterns) that are successfully used by others and are widespread, those group of developers seem to be the least affected by the above problem.
You have now reached the point of realizing that it is worthless to spend so much effort and time creating (and learning to create) things from scratch WITHOUT following already known practices and ready made things. You are very ready now to take the next step and start moving from the build-from-scratch paradigm to the build-it-the-easy-way paradigm. It is the critical time for you to shift right now.
I am repeatedly asked during interviews "What is your expected salary?" I find this question embarrassing. How can I answer it?
A well established company with many years in the market, a large number of developers and a steady business usually do not ask this otherwise commonly asked question. The reason being that they already have their set salary structure based on previous experience with developers or based on salary surveys they have hired an HR firm to conduct for them.
However, the question is still a commonly asked one. You may answer by one of the following three:
- Do not give any estimate of the expected salary. Tell them "I do not know," or "I am not sure," or "I do not know the salary structure in your company."
- Use a counterattack, which is better than the previous method. When you are asked the standard question "What is your expected salary?" counterattack at once with a question of your own asking "What is the salary range for this position in your company?" You will have a winner here, and you will have cornered the interviewer and escaped from answering the question yourself.
- The third method is to give your expected salary. But to follow this method, you'll need to know from before what the salary range of the company is perhaps from friends or from those who have worked or still work there or through your knowledge of the industry average for such type of companies for such position.
I have been accepted at a large software company as a Quality Assurance Engineer. Is this a good position with a good future? How can I improve myself in this field?
A Quality Assurance Engineer in a software company is responsible for the testing of the software system. Testing is an important part of the software engineering process. With the rise of CMMI software standards are becoming more important and hence there is an increased demand for testing. A QA Engineer or Tester may be responsible for creating test plans, test cases and test scripts. Due to the increased demand for testing and the higher standards requested in the software industry, QA Engineer position is becoming more vital.
Some less competent companies however do not understand testing well and do not give it enough value. When they recruit a Tester they only want someone to work as a data entry clerk trying to test the software system by hand without any plan and without the presence of test cases. Test scripts are not heard of in such companies. You should be aware of the type of company you are applying to and know what exactly do they mean by Tester.
In order to advance your career in the field of Quality Assurance, first try to learn more about software engineering and the different software development methodologies such as Rational Unified Process (RUP) and Extreme Programming (XP). This will enable you to know where exactly is testing found in the big picture of software engineering. From there, try learning more about the different types of tests such as glass box testing, black box testing, unit testing and integration testing. Learn how to making testing plans, develop test cases and write test scripts. Practice what you learn at work and you will improve your QA skills with time. Finally, try to learn more about CMMI as there is an increasing demand on it from software companies.
I am a fresh graduate of FCI, Assiut University. I live in Assiut. How can a work at a large software company?
There is a big problem which is that a large number of advanced software companies are present in Cairo and a few in Alexandria yet there are actually almost none of the advanced ones outside those two cities. Advanced companies do not need to be large in size, but the important thing is for them to be using advanced technology, developing advanced software applications and systems and using good methodology in developing such systems.
AI long term solution of course is to try to attract more of those companies to start up branches in other Egyptian governorates such as Mansoura, Suwais, Assiut, Minia ... etc. But sure this will not be easy and needs a lot of effort from us to attract such companies to open up branches in such cities.
As for the short term solution, you will need to come to Cairo and live here if you want to get a job in the software development field at an advanced company. It is important to write down your address in your CV. You will also need to be present in Cairo for an interview if a company short-lists your CV.
I believe that this is not a bad idea on the long run because perhaps those coming to Cairo for work in the IT industry can gain experience and later on return back to their original cities with the experience they have gained.
Questions
Send your IT job related question to ashraf.shafaki@gmail.com and get an answer within 48 hours.