Become a ninja developer

My approach to developing a solution is to find the easiest way to achieve the desired result. Usually this means that I provide what is required and during the requested time intervals. And quite a mistake. This is all good, and as a result, I have built up a good reputation.

The downside is this. I think that I have limited my ability to solve problems that are inherently more complex in nature and require a corresponding more complex solution. It also means that I expose myself to less. NET Framework and less complex algorithms / data structures than others.

Any recommendations that will help me solve more complex scenarios with suitable solutions?

Current skillset: .NET, C #, VB.NET, LINQ, ASP.NET (+ MVC), SQL Server 2000/5 Current job: Web developer for a highly accessible transactional website

+7
design
source share
11 answers

You must have third-party mini projects that are โ€œstretchableโ€ projects that make you play with something else. They help develop a set of skills that you can add to your toolkit, be it languages, frameworks, design methods, or something else. Just what takes you out of your comfort zone.

+13
source share

Find a mentor or other programmer with a different programming language; meet regularly to review each other, discuss new things that you recently learned, and projects that you worked on.

All this is very well connected with complex open source projects, but the constructive feedback is likely to help you move forward and improve faster.

+5
source share

Depends on the type and complexity of the problems that you present as a developer. One way is to use a more complex language or toolbox.

For example, if you are solving business problems using MS Access, try to solve, or at least think about how you solve them, on the .NET ans Sql server.

+3
source share

I think that even KISS can be overridden. Itโ€™s important to learn about complex methods, but do not distract attention from the specific work that you are doing. Apply the simplest method that works. Learning more sophisticated methods will help you recognize potential problems / bottlenecks, etc.

As you hint, some complex problems require complex solutions. The only real way to prepare for this is to solve complex security problems in your free time, when it does not matter if you make a mistake.

I donโ€™t remember who said that, but:

"Most programmers can find a complex solution to a complex problem, but few can find a simple solution to a simple task."

I find that many programmers tend to make things too complicated. You may be simplifying things, but this is probably the right end of the scale to start with.

+3
source share

I would find a complex open source project and work on it in my free time, it will not only give you the opportunity to work on a complex solution, but it can also be very useful if you are part of open source. Or perhaps, as others have already noted, design projects with complex exercise solutions.

+3
source share

will become a ninja jedi !

and read !

+3
source share

Projecteuler.net has many practical problems. Also google "kata code".

+3
source share

You do not indicate what your area of โ€‹โ€‹skills (s) is. You also do not describe where your work comes from. Therefore, it is difficult to give concrete advice on this basis. But...

May I suggest that you choose an open source project that fits your skills and interests well and take an item from the ToDo list and run it. The optimal thing is not only that you find difficult problems, but also increase your reputation thanks to your contributions.

+2
source share
+2
source share

Try to expand your presentation by trying something completely unrelated and new.

I see that you mainly work with Microsoft technology and with Microsoft languages. There are so many other things that can teach you something.

My recommendation for personal experience is to learn about Lisp, Erlang, or such functional languages โ€‹โ€‹and the philosophy behind them. Especially the general Erlang architecture, which has nothing to do with its unusual features, such as a streaming model and updating running applications, can change the viewing angle of your next project.

+1
source share

Does this mean that you find that you cannot solve some problems because of their complexity and lack of knowledge?

In my experience, the simplest approach is not always the best. However, it is best to start by looking at a simple approach and see if it will adequately solve the problem.

So many projects are over-engineered because the x function may be used in the future, and then not. Poor performance, on the other hand, can mean poor performance.

When such a need arises, you can redefine what you need to improve or expand the solution.

Books that I can recommend: 1) Design of everyday things 2) Design patterns (The one I read was c / C ++, but there are some in the language of your choice). The good thing about design patterns is that they help you see simple solutions to sometimes complex problems. A good understanding of basic design patterns will improve your ability as a programmer / designer.

+1
source share

All Articles