What should I write to become a better developer?

I finish my tasks related to work very quickly, and I have free time in my hands. What should I write to become a better developer? I am familiar with C ++ / java / perl / python / ruby.

I wrote the following things myself:

  • simple web server
  • simple web clients (different languages)
  • DSL, internal and external
  • some lexers
  • code identifiers (source decoders)
  • simple IDE

I would like some suggestions about some kind of software to be difficult and interesting to write.

+6
language-agnostic
source share
19 answers

Compiler.

Edit: Or an emulator. Both are very complex.

+11
source share

Contribute to an open source project

edit: run here

+9
source share

Something involving real users. Oddly enough, in my opinion, this is a completely different story if others use your work and depend on it!

+8
source share

Something that depends on knowledge that you do not currently have, which means you will need to educate yourself in the process of creating it.

+6
source share

what about the code generator, it will also be useful for you after you finish

+4
source share

Pick up any open source application that needs help with a component, improving or fixing bugs. Your skill can make a difference in the open source world. In addition, I suggest you use your skills to develop them:

  • Game development IDE (since you are already familiar with IDE development).
  • Improving existing libraries
  • Development of emulator / software for virtual machines
  • Developing software to protect folders and drives (or better encryption software).
+4
source share

Something in a distributed environment.

+3
source share

I would define a real problem and create a solution for it. It can be an algorithm or a complete project: a web project or a client application.

The important thing is that you solve real problems.

What is programming.

+3
source share

A game, possibly simple, such as Pacman or SpaceInvaders. This is not only fun, but you will enter a completely new area.

+3
source share

Participate in an open source project that will help you learn about some software development practices, such as using a version control system and a bug tracking system.

Write an AI game, such as checkers, which I think are pretty complicated and fun.

+2
source share

Write a binary search tree and implement insert, delete, search, etc. When this is done, write a play tree. If this is not to your liking, select something from Introduction to Algorithms and write it instead.

+2
source share

Book. Textbook. Everything that teaches. Learning is a great way to find out.

Trying to explain new concepts to people usually makes you dive deeper than usual. This act of trying to turn your knowledge into a set of cohesive sentences strengthens it in your own mind and reveals any shortcomings or gaps that you may have.

And you can always learn something from your students or readers.

+2
source share

You already have a lot of great answers to your question, but I feel that there is a suggestion that was missed: Learn AS3 / Flex!

My background is very similar to yours, but I recently recognized AS3 for the project and have loved it so far. It has the same โ€œfeelingโ€ as the other languages โ€‹โ€‹you worked for (for example, Java), but it allows you to create powerful visual / auditory applications without bloating the annoying structure. AS3 / Flex went through several iterations of fine-tuning and worked well until fairly rapid development.

Another reason to learn about AS3 / Flex is because it seems like you have an interest in technologies that either work autonomously or as a server in a network environment. Experiments with AS3 / Flex can give you the opportunity to play with the client side of the client / server duo.

Anyway, have fun! :)

+2
source share

I agree with the idea of โ€‹โ€‹a compiler. It will be a difficult and fun project. Choose a language that is simple enough. Maybe even design your own :)

+1
source share

G'day

What needs to start to write some fragments for reuse in other parts of the software? That way you can:

  • Optimize specific functionality by periodically updating them.
  • no need to reinvent the wheel every time you need to incorporate this functionality into your main parts of the software,
  • start distributing them and make a little name for yourself.

At the top of my head are some things that I think of, such things as:

  • entry
  • reading configuration from file
  • setting up a shared environment

All of which, if you had already written them, would have turned your time into other projects where you used them much faster. Functionality will also be harmonized for several projects.

NTN

amuses

+1
source share

you can go for the implementation of your own version control system ...
This will require a lot of coding and covers various aspects such as algorithms, protocols, os, etc.

But it is always better to contribute to open source projects than to code something that is already built
you can also try developing an expert system that uses AI to do some interesting things :)

+1
source share

I found that rewriting a previous project in a radically different environment is a great way to learn about new and old environments.

At school, I wrote a baccarat game in C (we needed to choose a card game, and I wanted to choose the one that I never played). The next year I rewrote it according to the scheme. And then a little the next year.

In both cases, I left with a great understanding of C.

+1
source share

You do not seem to have done a lot of graphics. What about the game, as already suggested, two-dimensional simple physics / shooting, such as playing with asteroids, is quite easy to start and enjoy.

Even better and probably more useful how about an image editor?

+1
source share

Writing more code in a non-magical way makes you a better developer. Some of my suggestions:

  • Learn to write the best code. What do you know about design patterns, refactoring, unit / automated testing, and continuous integration, for example?

  • Learn about software development. Do you know Scrum, Lean, XP and other flexible practices? What about use cases and user stories, as well as evaluation and project management? Managing (and choosing) a team is another skill. Do you want this to be part of your future?

  • Learn to talk with users (this is actually an important part of Agile technology). Your customers are almost always mistaken about what they need. How do you cross the difference between what they think / say, what they want, and what you really need to build for them? As a rule, the problem of communication in both directions :-)

  • User interface design. This is much more complicated than aligning text fields and setting tab order. This is a difficult discipline for most of us and has branches for thick clients, web applications, small devices (telephones, PDAs, etc.), etc.

I am sure that others may think about the things that I forgot, but I want to say that writing code is not all that we do as developers. A lot of time writing code is the least we do.

+1
source share

All Articles