Answer the question
In order to leave comments, you need to log in
How to retrain from desktop to web
Good time, habrazhiteli!
The question is the following. I have been programming in C++ / C# for about eight years, most often there were large projects in such areas as GameDev, CRM systems, Enterprise integration. I am incomparably more modest with web development: the basics of php (I sketched a simple engine for myself), the use of CMS, well, I have a little idea of the kitchen itself (what is post, get, session, template engines, etc.).
I want to go into professional web development. More and more often I catch myself on this thought. I want to create systems that were originally integrated into the "endless" ocean of the Internet, work with huge data streams online, use the original cross-platform, etc. In general, the web is the future, and I feel the need to keep up with it. Desktop, as a class, is already starting to die out.
How to do it? The basics are basics, but for a serious position you need to rummage through some key technologies. If I were asked the same about C ++, I would say, for example: STL, BOOST. For C#, it's even easier, almost everything you need is in .net itself (I'm talking about the basic functionality, of course). But when reading web vacancies, eyes run wide from the abundance of frameworks and technologies. Especially in the world of Java (with which, alas, I am not familiar at all). And there are a lot of languages here, and the choice is holywar.start ().
In general, I would be grateful for advice, suddenly someone has experience of such a transition. All this is complicated by the fact that there are some obligations that do not allow you to go to a junior vacancy with an income several times less than the current one. For a non-junior, experience is required. Vicious circle.
Answer the question
In order to leave comments, you need to log in
If I were you, I would go into mobile applications while studying the web :)
If you have experience with C #, it would be logical to try .NET ASP MVC, I think mastering it will not be a problem for you. Working with databases - various ORMs (from the standard Entities Manager to Hibernate, etc.). If we talk about the backend, I don’t even see the point in using something else like that. Unless for the tasks of implementing the REST API and other things. Frontend - here it's a little more complicated. HTML5/CSS layout is quite simple, but experience is needed here. I knew a lot of layout designers who were well aware of the behavior of tags and properties, but did not understand the concept (their markup was often tied to the page design, and this is already bad). But in general it is much easier than C++/Boost/SPL. Javascript - here it is worth owning functional programming.
In general, the difference between programming for desktops and for the WEB (as far as the server side is concerned and implemented in C#, PHP or Java) is not very different. It is not necessary to know a huge number of frameworks, it is enough to choose one. And then it will still be quite easy to take another one.
Good luck in your endeavors.
I have the opposite situation. I'm leaving the web in the direction of igrostroy (an old dream). Faced with the fact that it is difficult to start from the basics. There is a lot of knowledge off topic and this knowledge interferes, unfortunately. The most difficult thing is to realize that everything needs to start almost from scratch, and also that new knowledge will crowd out the old. At some point, you can find yourself in a certain twilight zone, when new knowledge is still not enough, and the old ones are no longer the same as they were before, you need to be ready for this.
Which technologies, languages and frameworks to choose is up to you. Take what you like and what you think is promising. Every tool has its advantages and disadvantages. The main thing is that all this should be interesting to you. Remember what you liked about C++ / C# and choose according to the same principle, because only then will you be interested in studying it. If the language is disgusting, and the technology seems unpromising, then you are unlikely to force yourself to learn them, even if everyone around you says that this is the mainstream.
PS I apologize for the offtopic, probably there is little on the topic that I said, but I wanted to support. Good luck in your endeavor!
There are many options, one is more elegant than the other:
1) PHP - a lot of projects on it, therefore there is always a lot of work. Unfortunately, these are often old projects and code of varying quality. An amateur option, learning from dubious code is not the best option.
2) Python is popular not only for web development, but also for data processing: jobs for numpy/scipy are not uncommon. Nice variety of entry tools. You can start by developing for web2py - this framework is specially created for learning to program for the web. So far not very popular, but gradually gaining momentum. Unfortunately, IDEs don't support it. If noSQL doesn’t scare you, then you can start with Google App Engine in conjunction with PyCharm - it will quickly teach programming, and, most importantly, show the right approach to application administration. After that, you can quickly and cheerfully switch to the Python mainstream - Janga.
3) Ruby is not so popular yet (especially in Russia), but among customers it is very trendy and is gaining popularity faster than python. Unfortunately, I can’t describe it in more detail - I didn’t study it.
As mentioned above, mobile development might be a great fit for you.
4) iOS is the main direction in the mobile development industry. The plumpest market and the biggest demand for applications. Some manage to sell simple crafts for 50-100K rubles to entrepreneurs who want applications for an iPhone or iPad. Only you will have to develop under OS X.
5) Windows Phone - the glass is still half full / empty: it's hard to decide whether it will take off or not. I believe that MS will negotiate with the largest players (they are very good at this), and then the rest will catch up. Igrostroy and integration with xbox live are especially interesting. The average level of applications is very low, so there is an opportunity to become a star and continue to work at stellar rates.
Well, how can I say, it all depends on the goals, naturally it will be difficult to get to the top right away, C ++ is not particularly promising in terms of development, some things are done on it, but this is mainly done only by very large companies that are looking for specialists with experience. C# as mentioned above gives ASP.NET, WCF, etc.
In general, if you want to change the language, then look at the vacancies, what is more often required, you don’t need a holivar here, the same python is certainly good, but how easy can you find a job with it?
In general, look for a company that works with php, get a job for a year and this year you will pull up everything you need and go further and higher.
The difference between the development of desktop applications and applications for the web in practice is very large.
It needs a completely different way of thinking. There are other sciences (layout, adaptability, cross-browser compatibility, scripting languages that are more difficult to test, web service protocols, etc.). Other architectural principles are common (distributed applications, APIs, Rest services, etc.).
If you have previously developed boxed solutions, then in any case you will fall a few positions down during the transition (even if you are not a junior developer). This is in fact. The employer of course can keep you in a decent position. But if you do not understand this and do not find a mentor for yourself, then woe to those who will support your decisions.
I had a similar situation, but somewhat simpler. I moved from delphi to the web, but then I still had the opportunity for a juinor job.
In your version, I see only one way: While you are working at your main job, run several web projects in parallel. There will be experience for yourself and something to show the employer.
I am currently working in web development.
I can say that, in my opinion, two areas are currently developing most actively:
1) web: layout and other front-end tasks, back-end.
2) programming for mobile devices: Android (Java), iPhone (Objective C) and Windows Phone.
I would divide the web itself into three branches (the most typical sets of technologies):
1) PHP + JS + MySQL
2) ASP: C# ASP.NET and M $ SQL
3) JavaEE: Java, Hibernate (or equivalent), Oracle
More often on the web everything is required at once and everything: layout with divs, PHP, JS, MySQL.
Although good companies are usually looking for people for a certain part, for example, a PHP proger for the backend.
What specifics in development for mobile devices I can’t say yet, because I didn’t work there.
Although I really want to eventually go to Java for Android, everything is very well organized there.
Good luck with your transition!
PS Actually Core Java is 90% similar to C#. This greatly simplifies the task of transitioning between them.
Well, if you do not go into .NET, then the choice is relatively small: PHP/Python/Ruby. In PHP, you already have a little experience, but try to do something with a normal framework (for example, Yii). In terms of python, try django, in terms of ruby, try rails. Stop on what will be more pleasant, because this is the most important thing. And there is enough work in any field. You should not hit headlong into one language without trying the others.
I would vote esoteric - deal with Clojure ( 1 , 2 ).
For the next five years, I think this thing will still show itself.
It is a Lisp dialect that runs in the JVM.
If Google glasses are released on the android platform, and in the foreseeable future
we will see many times more resources on any devices where there is android (which is the majority),
which is likely to happen, then this thing will allow developing
products - faster than Jav do ists.
+ as a bonus, after learning Clojure, it will be easy to fine-tune Emacs with its Emacs lisp.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question