There
are a lot of jobs out there which require a fairly static knowledge base.
Software development on the other hand requires lifelong learning for an
individual pursuing career in that field. Technology is always evolving, so
software developers need to evolve too if they want to be the best in their
field. Continued learning is an important aspect of one’s career and in a way
it’s almost part of the job. The amount of changes and updates that happen in
the Software industry can rarely be topped by any other industry sector.
There’s no central regulating authority responsible for coming up with all the
changes.
Looking
back at my own career, I started with basic C++ during high school. As soon as
I started college I switch to Matlab & Java because those were the
languages offered for basic computer science courses at Stevens. Since freshmen
year, I have been exposed to programming languages like C, C++, Scheme, Erlang
and C# by just taking a different a variety of computer science courses at
undergraduate & graduate level. Even during internships, I got introduced
to a variety of new tools and proprietary software. I have been constantly
involved in web projects which involve a lot of new frameworks like NodeJS,
AngularJS, jQuery, EmberJS etc. By learning new technologies, languages &
frameworks, I have been able to maintain my competitive edge and diversify my
resume. While going through interviews, one of my biggest advantage over other
candidates has been the breadth of technologies I have experience dealing with
it.
A
common problem that I have found during my internships is the reluctance by
many software developers to learn new technologies. Granted my experience has
been mostly in Financial Services sector, most software developers who have
been working for more than five years seem to have lost their edge. They no
longer keep themselves up to date with new languages like Apple’s Swift or
frameworks like AngularJS unless it’s required as part of their job. Majority
of times software developers point to the fact that they have don’t have time
outside of their job or family priorities for not spending enough time on
research. As the time passes software developers lose the drive to learn
themselves. Most software developers prefer if the company they work for will
allow them to take on side projects or tuition reimbursement for taking classes
at local colleges.
One
way for employers to encourage their employees is to support company driven
education solutions which are easy to implement and affordable. Partial
compensation is also a good motivation if the company cannot afford to fully
compensate their employees. Companies can also formulate a policy where
employees can take some time during the day to read latest Technology News or
go through tutorials on new technology that can benefit the company. With the
advancement of online classes, companies can also suggest their employees to
take online courses on sites like Udacity, Code School, Code Academy etc. Another
completely free solution is to encourage pair programming. Not only is this
proven to minimize bugs and improve code quality, but seeing first-hand how
another developer solves a problem is one of the best ways to learn. Additional
benefits of encouraging developers to pursue further education is the impact
they have on the products and the company’s longevity as a whole.
Unfortunately I find myself afflicted with the same issue as a computer science major. I think the main issue for me is that there is just an overload. There are too many hip new languages/frameworks that everyone tells me I should know already and it's unfortunately gotten to the point where I don't even bother anymore. If I need to know a language for a job then I will learn it while on the job like I did for my last internship. I cannot possibly spend all my free time programming and trying new languages and still have time for my own hobbies.
ReplyDelete