Tuesday, May 12, 2015

How much do software developers get paid?

According to the Bureau of Labor Statistics (BLS) of the United States of America the median annual wage for applications software developers was $90,060 in May 2012. The median wage is the wage at which half the workers in an occupation earned more than that amount and half earned less. The lowest 10 percent earned less than $55,190, and the top 10 percent earned more than $138,880. The median annual wage for systems software developers was $99,000 in May 2012. The lowest 10 percent earned less than $62,800, and the top 10 percent earned more than $148,850 (BLS, 2014).

http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm#tab-5
For prospective software developers it is very important to know how much they should expect to be paid once they get a job. It is not a rare occasion for a person trying to get a job to agree for the first offered to him/her salary right away without even considering the actual pay at other companies or their true worth. Employers may take advantage of you not possessing the information about how much, on average, or at minimum, you should be paid for the job you are or will be doing. Once hired, it is also a good idea to keep track of your career growth along with your pay, and compare it to the changes in pay for your profession in your state/country. Depending on how much experience you have in the field and how good your skills are, your salary may vary.

Bureau of Labor Statistics, U.S. Department of Labor, Occupational Outlook Handbook, 2014-15 Edition, Software Developers. Retrieved May 12, 2015, from
http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm

Sunday, April 19, 2015

Presenting your project and the importance of a 15 second pitch

It is important to successfully complete your project in a timely fashion. However, it is equally important to be able to present your project as well as yourself as a part of the team that worked on the project and managed to make its clients' wishes come true. Once a project is complete, it is advisable to prepare a 15 second pitch. Usually every person from the group presenting the project should have a 15 second pitch prepared for the project presentation. The pitch should not last longer than 30 seconds, 15 of which serve you as your personal advertising saying who you are, what your major is, what skills you have, and etc. Generally speaking, for the first 15 seconds you advertise yourself as a "product" including, but not limited to information about your education, skills, experience, personal traits, and your goals. The second part of your pitch describes the product that you worked on. You advertise your project as a finished product - what was the purpose the project, what was achieved through the completion of the project, whom you worked for, and whether the project is transferable, scalable and sustainable.
http://www.synergyworldwideblog.com/2014/01/craft-perfect-elevator-pitch.html
The 15-second pitch, also known as an elevator pitch, can be applied in a variety of situations and for a variety of people. For example, if you have a product to offer, you would advertise it to a customer for the purpose of selling it. If you are a company representative, it is crucial to always have a pitch prepared because not only your future depends on the quality of your speech, but also your company's future and potential profits that you are partially responsible for. You might also present your business to one of your business partners. Katherine Arline (2015) states that "the key to an elevator pitch is length: the pitch should last as long as a typical elevator ride, or about 30 seconds. A longer pitch risks losing your audience's attention, while a shorter one may leave out important details. Equally important is content. Your pitch should include intriguing details about your business, paving the way for questions and conversation."

Arline, K. (2015, January 26). What Is an Elevator Pitch? Retrieved April 19, 2015, from http://www.businessnewsdaily.com/3937-elevator-pitch.html

Sunday, April 12, 2015

Let Me Teach You Agile

Agile is a software development process which involves adaptive planning, organized step-by-step development, well-communicated implementation process (receiving feedback about deliverables, and making improvements based on the feedback). Technically agile is an abstract methodology which can have different forms depending on a scale of a project it is applied to, size of a group/company doing such a project, and other factors which may affect a development process. What's common in all agile-based development processes is the concept of constant planning and improvement throughout the period of a product's development.
http://www.adfkickstart.com/wp-content/uploads/2012/12/agile_methodology_overview.png
Emina Elezovic says that "agile development methodology is a conceptual framework for undertaking any software engineering project". This is a slightly different definition from the one that I wrote before, but it has the same idea of interpreting agile as a "conceptual framework" for projects. Elezovic also explains that there are a number of agile software development methods but the most popular are Extreme Programming (XP) and Scrum. In general, agile methods attempt to minimize risk and maximize productivity by developing software in short iterations and by deemphasizing work on interim work artifacts (Elezovic, 2012).
 
Elezovic, E. (2012, December 21). Agile Methodology. Retrieved April 12, 2015, from http://www.adfkickstart.com/agile-methodology

Sunday, March 22, 2015

How much of my work and what I create do I really own?

When a person creates his/her own original work, whether it's a piece of art, a written story, software, hardware, etc., it automatically becomes that person's intellectual property, who, by default, owns rights to its reproduction and distribution. There are two types of intellectual property: registered and unregistered.
  • Registered intellectual property gives the owner rights over the monopoly of the concept.  Examples include patents, trademarks, design rights, domain rights and plant breeder rights.
  • Unregistered intellectual property only prevents others from copying the concept.  Unregistered trademarks, copyright and database rights are all unregistered (Wilson, 2011).


In the sphere of software development it is very common for a person who writes a program's code to transfer some or all rights to his/her client. The usual way of handling the ownership of an intellectual property is through a contract or any other written agreement between the developer and the client which is supported by law. When making a contract, because you own your original work, you can assign to the client as few or as many rights as you want. For example, you can assign rights to use the software only in certain geographic regions (U.S. only), or for specific periods of time. You can also control whether the client is allowed to modify your work or license/sell your work to a third-party without your approval (Kimbarovsky, 2009).

Kimbarovsky, R. (2009). Contracts. Retrieved March 22, 2015, from http://rosskimbarovsky.com/contracts-for-software-and-website-developers.pdf

Wilson, K. (2011, June 3). What is the Difference between Registered and Non-Registered Intellectual Property? Retrieved March 22, 2015, from http://www.hawkip.com/advice/what-is-the-difference-between-registered-and-non-registered-intellectual-property

Sunday, March 15, 2015

Agile: User Stories

Agile software development process utilizes user stories as a fundamental structure of how a particular piece of software is supposed to work and what basic functionality it has to provide to an end-user. Krystian Kaczor (2010) defined a user story as "a short description of customer’s need. User Stories are commonly used in agile software methodology and frameworks such as  Extreme Programming or Scrum as a way of gathering requirements."

Most of the time user stories are written in a similar manner as follows: As who I want what so that why. For example: as a user I would like to be able to export data in Microsoft Excel format so that the data could be filtered or sorted later on. In the example above, I picked "user" as a who would be using a product. Then I stated the functionality that as the specified person I would've liked to have. And finally, I write down the purpose associated with the mentioned functionality.

http://www.agiletesting.info/wp-content/uploads/2010/12/story_on-index-card.jpg
User stories help to develop and deliver a product that functions according to an end-user wishes. They help a developing company or a team to estimate potential costs and time needed to finish the product. The user stories also help to eliminate certain misunderstandings, which may arise between developers and a client, as well as wrong assumptions.
 
As for the project that I'm currently working on, the user stories are on the main page of our project's website: https://sites.google.com/a/sjsu.edu/team-2015-spr-academic-scheduling/. There are nine user stories listed under "User Stories:" title.
 
Kaczor, K. (2010, December 7). Five Common Mistakes in Writing User Stories. Retrieved March 15, 2015, from http://www.agiletesting.info/5-common-mistakes-in-writing-user-stories-13

Monday, March 2, 2015

How Projects Shape One's Career

Projects are designed to improve one's skills in a certain field or multiple fields depending on a project. Usually a project requires cooperation of people or groups of people to reach a common goal in order to complete the project. This process stimulates teamwork and helps companies to build competent teams which will directly affect the companies' futures. Having a diverse team involved in a project is also plus because in this case the team is more likely to be more creative and have more variation than a homogeneous team would in their place. In my opinion, leadership, competition, creativity and social skills are the ones that progress throughout the work on the project the most.
Every project team has to have a leader without whom efficient teamwork or cooperation between teammates might not be possible as well as reaching the actual goal(s). Competition is more of a natural trait of any human being; it motivates a person to work harder for the sake of achieving one's own goals which could also lead eventually to a whole project team's success. Getting a promotion might as well be one of those goals. Creativity and social skill can be at a high level even before engaging in a project work. However, without those skills it is also possible to acuire them and improve to a much higher degree while working on a project in a team. Most skills and their development come from real life experiences, and working on a project is one of those valuable experiences.

Sunday, February 22, 2015

A Software Developer

Computer Science as a major is very broad in terms of coverage of theory and practical skills. With years of studying math and programming languages such as C, C++ and Java (especially), I find it more and more interesting to learn and apply the knowledge acquired in the process. To me the most interesting part of computer science is programming. To put it better, the sphere I'm interested the most is sofware development. More precisely it would be called applications software development since it is about designing computer applications such as word processor and games. It is different from systems software development which primarily deals with creating operating systems.
I love solving all kinds of challenging (or not ^_^) problems. Finding a solution to a complex problem might not be easy, but the result would be worth the effort. I enjoy creating applications to make some complicated and time consuming tasks doable in the matter of minutes, or even seconds just by pressing a button or two. Aside of my personal interest in software development, it is also a well-paid job.

Sunday, February 15, 2015

About me

I'm an international student from Russia currently attending San Jose State University. I'm majoring in Computer Science, and have knowledge of programming in C, C++,Java and x86 Assembly Language. I'm planning to graduate in June 2016. I'm also capable of building and taking apart desktops, finding hardware problems in them if there are any, and if possible fix the problems right away. I have some experience in dealing with laptop hardware as well.  
I have a passion for anime, manga and video games. I'm fluent in Russian and English. At the moment I'm studying Japanese language and culture because it's related to the things I like. I also like solving challenging problems and do not consider any problem to be impossible to solve. Instead, I think any problem can be solved one way or another; it's just the matter of how much time it takes to accomplish it. I follow Electronic Entertainment Expo(E3) annually, sometimes watch Ted Talks at Ted.com and regularly check the news online at ABC News, BBC News, CNN and Huffington Post. As for outside activities, I enjoy diving, fishing and hunting.